1119 void movb(Address dst, int imm8); |
1119 void movb(Address dst, int imm8); |
1120 void movb(Register dst, Address src); |
1120 void movb(Register dst, Address src); |
1121 |
1121 |
1122 void movdl(XMMRegister dst, Register src); |
1122 void movdl(XMMRegister dst, Register src); |
1123 void movdl(Register dst, XMMRegister src); |
1123 void movdl(Register dst, XMMRegister src); |
|
1124 void movdl(XMMRegister dst, Address src); |
1124 |
1125 |
1125 // Move Double Quadword |
1126 // Move Double Quadword |
1126 void movdq(XMMRegister dst, Register src); |
1127 void movdq(XMMRegister dst, Register src); |
1127 void movdq(Register dst, XMMRegister src); |
1128 void movdq(Register dst, XMMRegister src); |
1128 |
1129 |
1286 |
1287 |
1287 // Shuffle Packed Low Words |
1288 // Shuffle Packed Low Words |
1288 void pshuflw(XMMRegister dst, XMMRegister src, int mode); |
1289 void pshuflw(XMMRegister dst, XMMRegister src, int mode); |
1289 void pshuflw(XMMRegister dst, Address src, int mode); |
1290 void pshuflw(XMMRegister dst, Address src, int mode); |
1290 |
1291 |
1291 // Shift Right Logical Quadword Immediate |
1292 // Shift Right by bits Logical Quadword Immediate |
1292 void psrlq(XMMRegister dst, int shift); |
1293 void psrlq(XMMRegister dst, int shift); |
|
1294 |
|
1295 // Shift Right by bytes Logical DoubleQuadword Immediate |
|
1296 void psrldq(XMMRegister dst, int shift); |
1293 |
1297 |
1294 // Logical Compare Double Quadword |
1298 // Logical Compare Double Quadword |
1295 void ptest(XMMRegister dst, XMMRegister src); |
1299 void ptest(XMMRegister dst, XMMRegister src); |
1296 void ptest(XMMRegister dst, Address src); |
1300 void ptest(XMMRegister dst, Address src); |
1297 |
1301 |
2288 // sign extend as need a l to ptr sized element |
2292 // sign extend as need a l to ptr sized element |
2289 void movl2ptr(Register dst, Address src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(movl(dst, src)); } |
2293 void movl2ptr(Register dst, Address src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(movl(dst, src)); } |
2290 void movl2ptr(Register dst, Register src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(if (dst != src) movl(dst, src)); } |
2294 void movl2ptr(Register dst, Register src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(if (dst != src) movl(dst, src)); } |
2291 |
2295 |
2292 // IndexOf strings. |
2296 // IndexOf strings. |
|
2297 // Small strings are loaded through stack if they cross page boundary. |
2293 void string_indexof(Register str1, Register str2, |
2298 void string_indexof(Register str1, Register str2, |
2294 Register cnt1, Register cnt2, Register result, |
2299 Register cnt1, Register cnt2, |
|
2300 int int_cnt2, Register result, |
2295 XMMRegister vec, Register tmp); |
2301 XMMRegister vec, Register tmp); |
|
2302 |
|
2303 // IndexOf for constant substrings with size >= 8 elements |
|
2304 // which don't need to be loaded through stack. |
|
2305 void string_indexofC8(Register str1, Register str2, |
|
2306 Register cnt1, Register cnt2, |
|
2307 int int_cnt2, Register result, |
|
2308 XMMRegister vec, Register tmp); |
|
2309 |
|
2310 // Smallest code: we don't need to load through stack, |
|
2311 // check string tail. |
2296 |
2312 |
2297 // Compare strings. |
2313 // Compare strings. |
2298 void string_compare(Register str1, Register str2, |
2314 void string_compare(Register str1, Register str2, |
2299 Register cnt1, Register cnt2, Register result, |
2315 Register cnt1, Register cnt2, Register result, |
2300 XMMRegister vec1); |
2316 XMMRegister vec1); |