Changeset 37675 in vbox for trunk/src/recompiler/target-i386/ops_sse.h
- Timestamp:
- Jun 29, 2011 7:07:14 AM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 72535
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler/target-i386/ops_sse.h
r36175 r37675 811 811 { 812 812 d->XMM_S(0) = approx_rcp(s->XMM_S(0)); 813 } 814 815 static inline uint64_t helper_extrq(uint64_t src, int shift, int len) 816 { 817 uint64_t mask; 818 819 if (len == 0) { 820 mask = ~0LL; 821 } else { 822 mask = (1ULL << len) - 1; 823 } 824 return (src >> shift) & mask; 825 } 826 827 void helper_extrq_r(XMMReg *d, XMMReg *s) 828 { 829 d->XMM_Q(0) = helper_extrq(d->XMM_Q(0), s->XMM_B(1), s->XMM_B(0)); 830 } 831 832 void helper_extrq_i(XMMReg *d, int index, int length) 833 { 834 d->XMM_Q(0) = helper_extrq(d->XMM_Q(0), index, length); 835 } 836 837 static inline uint64_t helper_insertq(uint64_t src, int shift, int len) 838 { 839 uint64_t mask; 840 841 if (len == 0) { 842 mask = ~0ULL; 843 } else { 844 mask = (1ULL << len) - 1; 845 } 846 return (src & ~(mask << shift)) | ((src & mask) << shift); 847 } 848 849 void helper_insertq_r(XMMReg *d, XMMReg *s) 850 { 851 d->XMM_Q(0) = helper_insertq(s->XMM_Q(0), s->XMM_B(9), s->XMM_B(8)); 852 } 853 854 void helper_insertq_i(XMMReg *d, int index, int length) 855 { 856 d->XMM_Q(0) = helper_insertq(d->XMM_Q(0), index, length); 813 857 } 814 858 … … 906 950 SSE_HELPER_CMP(cmpord, FPU_CMPORD) 907 951 908 const int comis_eflags[4] = {CC_C, CC_Z, 0, CC_Z | CC_P | CC_C};952 static const int comis_eflags[4] = {CC_C, CC_Z, 0, CC_Z | CC_P | CC_C}; 909 953 910 954 void helper_ucomiss(Reg *d, Reg *s)
Note:
See TracChangeset
for help on using the changeset viewer.