< prev index next >

src/cpu/x86/vm/assembler_x86.hpp

Print this page
rev 7792 : [mq]: 8081778-Use-Intel-x64-CPU-instructions-for-RSA-acceleration


1438   void mulss(XMMRegister dst, XMMRegister src);
1439 
1440   void negl(Register dst);
1441 
1442 #ifdef _LP64
1443   void negq(Register dst);
1444 #endif
1445 
1446   void nop(int i = 1);
1447 
1448   void notl(Register dst);
1449 
1450 #ifdef _LP64
1451   void notq(Register dst);
1452 #endif
1453 
1454   void orl(Address dst, int32_t imm32);
1455   void orl(Register dst, int32_t imm32);
1456   void orl(Register dst, Address src);
1457   void orl(Register dst, Register src);

1458 
1459   void orq(Address dst, int32_t imm32);
1460   void orq(Register dst, int32_t imm32);
1461   void orq(Register dst, Address src);
1462   void orq(Register dst, Register src);
1463 
1464   // Pack with unsigned saturation
1465   void packuswb(XMMRegister dst, XMMRegister src);
1466   void packuswb(XMMRegister dst, Address src);
1467   void vpackuswb(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256);
1468 
1469   // Pemutation of 64bit words
1470   void vpermq(XMMRegister dst, XMMRegister src, int imm8, bool vector256);
1471 
1472   void pause();
1473 
1474   // SSE4.2 string instructions
1475   void pcmpestri(XMMRegister xmm1, XMMRegister xmm2, int imm8);
1476   void pcmpestri(XMMRegister xmm1, Address src, int imm8);
1477 


1537   // Interleave Low Bytes
1538   void punpcklbw(XMMRegister dst, XMMRegister src);
1539   void punpcklbw(XMMRegister dst, Address src);
1540 
1541   // Interleave Low Doublewords
1542   void punpckldq(XMMRegister dst, XMMRegister src);
1543   void punpckldq(XMMRegister dst, Address src);
1544 
1545   // Interleave Low Quadwords
1546   void punpcklqdq(XMMRegister dst, XMMRegister src);
1547 
1548 #ifndef _LP64 // no 32bit push/pop on amd64
1549   void pushl(Address src);
1550 #endif
1551 
1552   void pushq(Address src);
1553 
1554   void rcll(Register dst, int imm8);
1555 
1556   void rclq(Register dst, int imm8);


1557 
1558   void rdtsc();
1559 
1560   void ret(int imm16);
1561 
1562 #ifdef _LP64
1563   void rorq(Register dst, int imm8);
1564   void rorxq(Register dst, Register src, int imm8);
1565 #endif
1566 
1567   void sahf();
1568 
1569   void sarl(Register dst, int imm8);
1570   void sarl(Register dst);
1571 
1572   void sarq(Register dst, int imm8);
1573   void sarq(Register dst);
1574 
1575   void sbbl(Address dst, int32_t imm32);
1576   void sbbl(Register dst, int32_t imm32);




1438   void mulss(XMMRegister dst, XMMRegister src);
1439 
1440   void negl(Register dst);
1441 
1442 #ifdef _LP64
1443   void negq(Register dst);
1444 #endif
1445 
1446   void nop(int i = 1);
1447 
1448   void notl(Register dst);
1449 
1450 #ifdef _LP64
1451   void notq(Register dst);
1452 #endif
1453 
1454   void orl(Address dst, int32_t imm32);
1455   void orl(Register dst, int32_t imm32);
1456   void orl(Register dst, Address src);
1457   void orl(Register dst, Register src);
1458   void orl(Address dst, Register src);
1459 
1460   void orq(Address dst, int32_t imm32);
1461   void orq(Register dst, int32_t imm32);
1462   void orq(Register dst, Address src);
1463   void orq(Register dst, Register src);
1464 
1465   // Pack with unsigned saturation
1466   void packuswb(XMMRegister dst, XMMRegister src);
1467   void packuswb(XMMRegister dst, Address src);
1468   void vpackuswb(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256);
1469 
1470   // Pemutation of 64bit words
1471   void vpermq(XMMRegister dst, XMMRegister src, int imm8, bool vector256);
1472 
1473   void pause();
1474 
1475   // SSE4.2 string instructions
1476   void pcmpestri(XMMRegister xmm1, XMMRegister xmm2, int imm8);
1477   void pcmpestri(XMMRegister xmm1, Address src, int imm8);
1478 


1538   // Interleave Low Bytes
1539   void punpcklbw(XMMRegister dst, XMMRegister src);
1540   void punpcklbw(XMMRegister dst, Address src);
1541 
1542   // Interleave Low Doublewords
1543   void punpckldq(XMMRegister dst, XMMRegister src);
1544   void punpckldq(XMMRegister dst, Address src);
1545 
1546   // Interleave Low Quadwords
1547   void punpcklqdq(XMMRegister dst, XMMRegister src);
1548 
1549 #ifndef _LP64 // no 32bit push/pop on amd64
1550   void pushl(Address src);
1551 #endif
1552 
1553   void pushq(Address src);
1554 
1555   void rcll(Register dst, int imm8);
1556 
1557   void rclq(Register dst, int imm8);
1558 
1559   void rcrq(Register dst, int imm8);
1560 
1561   void rdtsc();
1562 
1563   void ret(int imm16);
1564 
1565 #ifdef _LP64
1566   void rorq(Register dst, int imm8);
1567   void rorxq(Register dst, Register src, int imm8);
1568 #endif
1569 
1570   void sahf();
1571 
1572   void sarl(Register dst, int imm8);
1573   void sarl(Register dst);
1574 
1575   void sarq(Register dst, int imm8);
1576   void sarq(Register dst);
1577 
1578   void sbbl(Address dst, int32_t imm32);
1579   void sbbl(Register dst, int32_t imm32);


< prev index next >