< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.hpp

Print this page

1319   void vpmulld(XMMRegister dst, XMMRegister nds, Address src, int vector_len) {
1320     Assembler::vpmulld(dst, nds, src, vector_len);
1321   };
1322   void vpmulld(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
1323     Assembler::vpmulld(dst, nds, src, vector_len);
1324   }
1325   void vpmulld(XMMRegister dst, XMMRegister nds, AddressLiteral src, int vector_len, Register scratch_reg);
1326 
1327   void vpsubb(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1328   void vpsubb(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1329 
1330   void vpsubw(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1331   void vpsubw(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1332 
1333   void vpsraw(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
1334   void vpsraw(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
1335 
1336   void evpsraq(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
1337   void evpsraq(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
1338 





































































1339   void vpsrlw(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
1340   void vpsrlw(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
1341 
1342   void vpsllw(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
1343   void vpsllw(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
1344 
1345   void vptest(XMMRegister dst, XMMRegister src);
1346   void vptest(XMMRegister dst, XMMRegister src, int vector_len) { Assembler::vptest(dst, src, vector_len); }
1347 
1348   void punpcklbw(XMMRegister dst, XMMRegister src);
1349   void punpcklbw(XMMRegister dst, Address src) { Assembler::punpcklbw(dst, src); }
1350 
1351   void pshufd(XMMRegister dst, Address src, int mode);
1352   void pshufd(XMMRegister dst, XMMRegister src, int mode) { Assembler::pshufd(dst, src, mode); }
1353 
1354   void pshuflw(XMMRegister dst, XMMRegister src, int mode);
1355   void pshuflw(XMMRegister dst, Address src, int mode) { Assembler::pshuflw(dst, src, mode); }
1356 
1357   void vandpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) { Assembler::vandpd(dst, nds, src, vector_len); }
1358   void vandpd(XMMRegister dst, XMMRegister nds, Address src, int vector_len)     { Assembler::vandpd(dst, nds, src, vector_len); }

1608     Assembler::vpclmulqdq(dst, nds, src, 0x11);
1609   }
1610   void vpclmullqhqdq(XMMRegister dst, XMMRegister nds, XMMRegister src) {
1611     // 0x10 - multiply nds[0:63] and src[64:127]
1612     Assembler::vpclmulqdq(dst, nds, src, 0x10);
1613   }
1614   void vpclmulhqlqdq(XMMRegister dst, XMMRegister nds, XMMRegister src) {
1615     //0x01 - multiply nds[64:127] and src[0:63]
1616     Assembler::vpclmulqdq(dst, nds, src, 0x01);
1617   }
1618 
1619   void evpclmulldq(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
1620     // 0x00 - multiply lower 64 bits [0:63]
1621     Assembler::evpclmulqdq(dst, nds, src, 0x00, vector_len);
1622   }
1623   void evpclmulhdq(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
1624     // 0x11 - multiply upper 64 bits [64:127]
1625     Assembler::evpclmulqdq(dst, nds, src, 0x11, vector_len);
1626   }
1627 
1628   // Data


























1629 
1630   void cmov32( Condition cc, Register dst, Address  src);
1631   void cmov32( Condition cc, Register dst, Register src);
1632 
1633   void cmov(   Condition cc, Register dst, Register src) { cmovptr(cc, dst, src); }
1634 
1635   void cmovptr(Condition cc, Register dst, Address  src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
1636   void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
1637 
1638   void movoop(Register dst, jobject obj);
1639   void movoop(Address dst, jobject obj);
1640 
1641   void mov_metadata(Register dst, Metadata* obj);
1642   void mov_metadata(Address dst, Metadata* obj);
1643 
1644   void movptr(ArrayAddress dst, Register src);
1645   // can this do an lea?
1646   void movptr(Register dst, ArrayAddress src);
1647 
1648   void movptr(Register dst, Address src);

1319   void vpmulld(XMMRegister dst, XMMRegister nds, Address src, int vector_len) {
1320     Assembler::vpmulld(dst, nds, src, vector_len);
1321   };
1322   void vpmulld(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
1323     Assembler::vpmulld(dst, nds, src, vector_len);
1324   }
1325   void vpmulld(XMMRegister dst, XMMRegister nds, AddressLiteral src, int vector_len, Register scratch_reg);
1326 
1327   void vpsubb(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1328   void vpsubb(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1329 
1330   void vpsubw(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1331   void vpsubw(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1332 
1333   void vpsraw(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
1334   void vpsraw(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
1335 
1336   void evpsraq(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
1337   void evpsraq(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
1338 
1339   void evpsllw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
1340     if (!is_varshift) {
1341       Assembler::evpsllw(dst, mask, nds, src, merge, vector_len);
1342     } else {
1343       Assembler::evpsllvw(dst, mask, nds, src, merge, vector_len);
1344     }
1345   }
1346   void evpslld(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
1347     if (!is_varshift) {
1348       Assembler::evpslld(dst, mask, nds, src, merge, vector_len);
1349     } else {
1350       Assembler::evpsllvd(dst, mask, nds, src, merge, vector_len);
1351     }
1352   }
1353   void evpsllq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
1354     if (!is_varshift) {
1355       Assembler::evpsllq(dst, mask, nds, src, merge, vector_len);
1356     } else {
1357       Assembler::evpsllvq(dst, mask, nds, src, merge, vector_len);
1358     }
1359   }
1360   void evpsrlw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
1361     if (!is_varshift) {
1362       Assembler::evpsrlw(dst, mask, nds, src, merge, vector_len);
1363     } else {
1364       Assembler::evpsrlvw(dst, mask, nds, src, merge, vector_len);
1365     }
1366   }
1367   void evpsrld(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
1368     if (!is_varshift) {
1369       Assembler::evpsrld(dst, mask, nds, src, merge, vector_len);
1370     } else {
1371       Assembler::evpsrlvd(dst, mask, nds, src, merge, vector_len);
1372     }
1373   }
1374   void evpsrlq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
1375     if (!is_varshift) {
1376       Assembler::evpsrlq(dst, mask, nds, src, merge, vector_len);
1377     } else {
1378       Assembler::evpsrlvq(dst, mask, nds, src, merge, vector_len);
1379     }
1380   }
1381   void evpsraw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
1382     if (!is_varshift) {
1383       Assembler::evpsraw(dst, mask, nds, src, merge, vector_len);
1384     } else {
1385       Assembler::evpsravw(dst, mask, nds, src, merge, vector_len);
1386     }
1387   }
1388   void evpsrad(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
1389     if (!is_varshift) {
1390       Assembler::evpsrad(dst, mask, nds, src, merge, vector_len);
1391     } else {
1392       Assembler::evpsravd(dst, mask, nds, src, merge, vector_len);
1393     }
1394   }
1395   void evpsraq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
1396     if (!is_varshift) {
1397       Assembler::evpsraq(dst, mask, nds, src, merge, vector_len);
1398     } else {
1399       Assembler::evpsravq(dst, mask, nds, src, merge, vector_len);
1400     }
1401   }
1402 
1403   void evpmins(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
1404   void evpmaxs(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
1405   void evpmins(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
1406   void evpmaxs(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
1407 
1408   void vpsrlw(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
1409   void vpsrlw(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
1410 
1411   void vpsllw(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
1412   void vpsllw(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
1413 
1414   void vptest(XMMRegister dst, XMMRegister src);
1415   void vptest(XMMRegister dst, XMMRegister src, int vector_len) { Assembler::vptest(dst, src, vector_len); }
1416 
1417   void punpcklbw(XMMRegister dst, XMMRegister src);
1418   void punpcklbw(XMMRegister dst, Address src) { Assembler::punpcklbw(dst, src); }
1419 
1420   void pshufd(XMMRegister dst, Address src, int mode);
1421   void pshufd(XMMRegister dst, XMMRegister src, int mode) { Assembler::pshufd(dst, src, mode); }
1422 
1423   void pshuflw(XMMRegister dst, XMMRegister src, int mode);
1424   void pshuflw(XMMRegister dst, Address src, int mode) { Assembler::pshuflw(dst, src, mode); }
1425 
1426   void vandpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) { Assembler::vandpd(dst, nds, src, vector_len); }
1427   void vandpd(XMMRegister dst, XMMRegister nds, Address src, int vector_len)     { Assembler::vandpd(dst, nds, src, vector_len); }

1677     Assembler::vpclmulqdq(dst, nds, src, 0x11);
1678   }
1679   void vpclmullqhqdq(XMMRegister dst, XMMRegister nds, XMMRegister src) {
1680     // 0x10 - multiply nds[0:63] and src[64:127]
1681     Assembler::vpclmulqdq(dst, nds, src, 0x10);
1682   }
1683   void vpclmulhqlqdq(XMMRegister dst, XMMRegister nds, XMMRegister src) {
1684     //0x01 - multiply nds[64:127] and src[0:63]
1685     Assembler::vpclmulqdq(dst, nds, src, 0x01);
1686   }
1687 
1688   void evpclmulldq(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
1689     // 0x00 - multiply lower 64 bits [0:63]
1690     Assembler::evpclmulqdq(dst, nds, src, 0x00, vector_len);
1691   }
1692   void evpclmulhdq(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
1693     // 0x11 - multiply upper 64 bits [64:127]
1694     Assembler::evpclmulqdq(dst, nds, src, 0x11, vector_len);
1695   }
1696 
1697   // AVX-512 mask operations.
1698   void kand(BasicType etype, KRegister dst, KRegister src1, KRegister src2);
1699   void kor(BasicType type, KRegister dst, KRegister src1, KRegister src2);
1700   void knot(uint masklen, KRegister dst, KRegister src, KRegister ktmp = knoreg, Register rtmp = noreg);
1701   void kxor(BasicType type, KRegister dst, KRegister src1, KRegister src2);
1702   void kortest(uint masklen, KRegister src1, KRegister src2);
1703   void ktest(uint masklen, KRegister src1, KRegister src2);
1704 
1705   void evperm(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
1706   void evperm(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
1707 
1708   void evor(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
1709   void evor(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
1710 
1711   void evand(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
1712   void evand(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
1713 
1714   void evxor(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
1715   void evxor(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
1716 
1717   void evrold(BasicType type, XMMRegister dst, KRegister mask, XMMRegister src, int shift, bool merge, int vlen_enc);
1718   void evrold(BasicType type, XMMRegister dst, KRegister mask, XMMRegister src1, XMMRegister src2, bool merge, int vlen_enc);
1719   void evrord(BasicType type, XMMRegister dst, KRegister mask, XMMRegister src, int shift, bool merge, int vlen_enc);
1720   void evrord(BasicType type, XMMRegister dst, KRegister mask, XMMRegister src1, XMMRegister src2, bool merge, int vlen_enc);
1721 
1722   void alltrue(Register dst, uint masklen, KRegister src1, KRegister src2, KRegister kscratch);
1723   void anytrue(Register dst, uint masklen, KRegister src, KRegister kscratch);
1724 
1725   void cmov32( Condition cc, Register dst, Address  src);
1726   void cmov32( Condition cc, Register dst, Register src);
1727 
1728   void cmov(   Condition cc, Register dst, Register src) { cmovptr(cc, dst, src); }
1729 
1730   void cmovptr(Condition cc, Register dst, Address  src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
1731   void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
1732 
1733   void movoop(Register dst, jobject obj);
1734   void movoop(Address dst, jobject obj);
1735 
1736   void mov_metadata(Register dst, Metadata* obj);
1737   void mov_metadata(Address dst, Metadata* obj);
1738 
1739   void movptr(ArrayAddress dst, Register src);
1740   // can this do an lea?
1741   void movptr(Register dst, ArrayAddress src);
1742 
1743   void movptr(Register dst, Address src);
< prev index next >