< prev index next >

src/cpu/x86/vm/assembler_x86.hpp

Print this page




1194   void fxrstor(Address src);
1195   void xrstor(Address src);
1196 
1197   void fxsave(Address dst);
1198   void xsave(Address dst);
1199 
1200   void fyl2x();
1201   void frndint();
1202   void f2xm1();
1203   void fldl2e();
1204 
1205   void hlt();
1206 
1207   void idivl(Register src);
1208   void divl(Register src); // Unsigned division
1209 
1210 #ifdef _LP64
1211   void idivq(Register src);
1212 #endif
1213 

1214   void imull(Register dst, Register src);
1215   void imull(Register dst, Register src, int value);
1216   void imull(Register dst, Address src);
1217 
1218 #ifdef _LP64
1219   void imulq(Register dst, Register src);
1220   void imulq(Register dst, Register src, int value);
1221   void imulq(Register dst, Address src);
1222 #endif
1223 
1224   // jcc is the generic conditional branch generator to run-
1225   // time routines, jcc is used for branches to labels. jcc
1226   // takes a branch opcode (cc) and a label (L) and generates
1227   // either a backward branch or a forward branch and links it
1228   // to the label fixup chain. Usage:
1229   //
1230   // Label L;      // unbound label
1231   // jcc(cc, L);   // forward branch to unbound label
1232   // bind(L);      // bind label to the current pc
1233   // jcc(cc, L);   // backward branch to bound label


1675 
1676   void subq(Address dst, int32_t imm32);
1677   void subq(Address dst, Register src);
1678   void subq(Register dst, int32_t imm32);
1679   void subq(Register dst, Address src);
1680   void subq(Register dst, Register src);
1681 
1682   // Force generation of a 4 byte immediate value even if it fits into 8bit
1683   void subl_imm32(Register dst, int32_t imm32);
1684   void subq_imm32(Register dst, int32_t imm32);
1685 
1686   // Subtract Scalar Double-Precision Floating-Point Values
1687   void subsd(XMMRegister dst, Address src);
1688   void subsd(XMMRegister dst, XMMRegister src);
1689 
1690   // Subtract Scalar Single-Precision Floating-Point Values
1691   void subss(XMMRegister dst, Address src);
1692   void subss(XMMRegister dst, XMMRegister src);
1693 
1694   void testb(Register dst, int imm8);

1695 
1696   void testl(Register dst, int32_t imm32);
1697   void testl(Register dst, Register src);
1698   void testl(Register dst, Address src);
1699 
1700   void testq(Register dst, int32_t imm32);
1701   void testq(Register dst, Register src);
1702 
1703   // BMI - count trailing zeros
1704   void tzcntl(Register dst, Register src);
1705   void tzcntq(Register dst, Register src);
1706 
1707   // Unordered Compare Scalar Double-Precision Floating-Point Values and set EFLAGS
1708   void ucomisd(XMMRegister dst, Address src);
1709   void ucomisd(XMMRegister dst, XMMRegister src);
1710 
1711   // Unordered Compare Scalar Single-Precision Floating-Point Values and set EFLAGS
1712   void ucomiss(XMMRegister dst, Address src);
1713   void ucomiss(XMMRegister dst, XMMRegister src);
1714 


1747   void vaddss(XMMRegister dst, XMMRegister nds, Address src);
1748   void vaddss(XMMRegister dst, XMMRegister nds, XMMRegister src);
1749   void vdivsd(XMMRegister dst, XMMRegister nds, Address src);
1750   void vdivsd(XMMRegister dst, XMMRegister nds, XMMRegister src);
1751   void vdivss(XMMRegister dst, XMMRegister nds, Address src);
1752   void vdivss(XMMRegister dst, XMMRegister nds, XMMRegister src);
1753   void vmulsd(XMMRegister dst, XMMRegister nds, Address src);
1754   void vmulsd(XMMRegister dst, XMMRegister nds, XMMRegister src);
1755   void vmulss(XMMRegister dst, XMMRegister nds, Address src);
1756   void vmulss(XMMRegister dst, XMMRegister nds, XMMRegister src);
1757   void vsubsd(XMMRegister dst, XMMRegister nds, Address src);
1758   void vsubsd(XMMRegister dst, XMMRegister nds, XMMRegister src);
1759   void vsubss(XMMRegister dst, XMMRegister nds, Address src);
1760   void vsubss(XMMRegister dst, XMMRegister nds, XMMRegister src);
1761 
1762 
1763   //====================VECTOR ARITHMETIC=====================================
1764 
1765   // Add Packed Floating-Point Values
1766   void addpd(XMMRegister dst, XMMRegister src);

1767   void addps(XMMRegister dst, XMMRegister src);
1768   void vaddpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1769   void vaddps(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1770   void vaddpd(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1771   void vaddps(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1772 
1773   // Subtract Packed Floating-Point Values
1774   void subpd(XMMRegister dst, XMMRegister src);
1775   void subps(XMMRegister dst, XMMRegister src);
1776   void vsubpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1777   void vsubps(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1778   void vsubpd(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1779   void vsubps(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1780 
1781   // Multiply Packed Floating-Point Values
1782   void mulpd(XMMRegister dst, XMMRegister src);
1783   void mulpd(XMMRegister dst, Address src);
1784   void mulps(XMMRegister dst, XMMRegister src);
1785   void vmulpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1786   void vmulps(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);




1194   void fxrstor(Address src);
1195   void xrstor(Address src);
1196 
1197   void fxsave(Address dst);
1198   void xsave(Address dst);
1199 
1200   void fyl2x();
1201   void frndint();
1202   void f2xm1();
1203   void fldl2e();
1204 
1205   void hlt();
1206 
1207   void idivl(Register src);
1208   void divl(Register src); // Unsigned division
1209 
1210 #ifdef _LP64
1211   void idivq(Register src);
1212 #endif
1213 
1214   void imull(Register src);
1215   void imull(Register dst, Register src);
1216   void imull(Register dst, Register src, int value);
1217   void imull(Register dst, Address src);
1218 
1219 #ifdef _LP64
1220   void imulq(Register dst, Register src);
1221   void imulq(Register dst, Register src, int value);
1222   void imulq(Register dst, Address src);
1223 #endif
1224 
1225   // jcc is the generic conditional branch generator to run-
1226   // time routines, jcc is used for branches to labels. jcc
1227   // takes a branch opcode (cc) and a label (L) and generates
1228   // either a backward branch or a forward branch and links it
1229   // to the label fixup chain. Usage:
1230   //
1231   // Label L;      // unbound label
1232   // jcc(cc, L);   // forward branch to unbound label
1233   // bind(L);      // bind label to the current pc
1234   // jcc(cc, L);   // backward branch to bound label


1676 
1677   void subq(Address dst, int32_t imm32);
1678   void subq(Address dst, Register src);
1679   void subq(Register dst, int32_t imm32);
1680   void subq(Register dst, Address src);
1681   void subq(Register dst, Register src);
1682 
1683   // Force generation of a 4 byte immediate value even if it fits into 8bit
1684   void subl_imm32(Register dst, int32_t imm32);
1685   void subq_imm32(Register dst, int32_t imm32);
1686 
1687   // Subtract Scalar Double-Precision Floating-Point Values
1688   void subsd(XMMRegister dst, Address src);
1689   void subsd(XMMRegister dst, XMMRegister src);
1690 
1691   // Subtract Scalar Single-Precision Floating-Point Values
1692   void subss(XMMRegister dst, Address src);
1693   void subss(XMMRegister dst, XMMRegister src);
1694 
1695   void testb(Register dst, int imm8);
1696   void testb(Address dst, int imm8);
1697 
1698   void testl(Register dst, int32_t imm32);
1699   void testl(Register dst, Register src);
1700   void testl(Register dst, Address src);
1701 
1702   void testq(Register dst, int32_t imm32);
1703   void testq(Register dst, Register src);
1704 
1705   // BMI - count trailing zeros
1706   void tzcntl(Register dst, Register src);
1707   void tzcntq(Register dst, Register src);
1708 
1709   // Unordered Compare Scalar Double-Precision Floating-Point Values and set EFLAGS
1710   void ucomisd(XMMRegister dst, Address src);
1711   void ucomisd(XMMRegister dst, XMMRegister src);
1712 
1713   // Unordered Compare Scalar Single-Precision Floating-Point Values and set EFLAGS
1714   void ucomiss(XMMRegister dst, Address src);
1715   void ucomiss(XMMRegister dst, XMMRegister src);
1716 


1749   void vaddss(XMMRegister dst, XMMRegister nds, Address src);
1750   void vaddss(XMMRegister dst, XMMRegister nds, XMMRegister src);
1751   void vdivsd(XMMRegister dst, XMMRegister nds, Address src);
1752   void vdivsd(XMMRegister dst, XMMRegister nds, XMMRegister src);
1753   void vdivss(XMMRegister dst, XMMRegister nds, Address src);
1754   void vdivss(XMMRegister dst, XMMRegister nds, XMMRegister src);
1755   void vmulsd(XMMRegister dst, XMMRegister nds, Address src);
1756   void vmulsd(XMMRegister dst, XMMRegister nds, XMMRegister src);
1757   void vmulss(XMMRegister dst, XMMRegister nds, Address src);
1758   void vmulss(XMMRegister dst, XMMRegister nds, XMMRegister src);
1759   void vsubsd(XMMRegister dst, XMMRegister nds, Address src);
1760   void vsubsd(XMMRegister dst, XMMRegister nds, XMMRegister src);
1761   void vsubss(XMMRegister dst, XMMRegister nds, Address src);
1762   void vsubss(XMMRegister dst, XMMRegister nds, XMMRegister src);
1763 
1764 
1765   //====================VECTOR ARITHMETIC=====================================
1766 
1767   // Add Packed Floating-Point Values
1768   void addpd(XMMRegister dst, XMMRegister src);
1769   void addpd(XMMRegister dst, Address src);
1770   void addps(XMMRegister dst, XMMRegister src);
1771   void vaddpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1772   void vaddps(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1773   void vaddpd(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1774   void vaddps(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1775 
1776   // Subtract Packed Floating-Point Values
1777   void subpd(XMMRegister dst, XMMRegister src);
1778   void subps(XMMRegister dst, XMMRegister src);
1779   void vsubpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1780   void vsubps(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1781   void vsubpd(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1782   void vsubps(XMMRegister dst, XMMRegister nds, Address src, int vector_len);
1783 
1784   // Multiply Packed Floating-Point Values
1785   void mulpd(XMMRegister dst, XMMRegister src);
1786   void mulpd(XMMRegister dst, Address src);
1787   void mulps(XMMRegister dst, XMMRegister src);
1788   void vmulpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
1789   void vmulps(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);


< prev index next >