src/cpu/x86/vm/assembler_x86.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6961690 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/assembler_x86.hpp

Print this page
rev 1838 : 6961690: load oops from constant table on SPARC
Summary: oops should be loaded from the constant table of an nmethod instead of materializing them with a long code sequence.
Reviewed-by:


1332   void shll(Register dst, int imm8);
1333   void shll(Register dst);
1334 
1335   void shlq(Register dst, int imm8);
1336   void shlq(Register dst);
1337 
1338   void shrdl(Register dst, Register src);
1339 
1340   void shrl(Register dst, int imm8);
1341   void shrl(Register dst);
1342 
1343   void shrq(Register dst, int imm8);
1344   void shrq(Register dst);
1345 
1346   void smovl(); // QQQ generic?
1347 
1348   // Compute Square Root of Scalar Double-Precision Floating-Point Value
1349   void sqrtsd(XMMRegister dst, Address src);
1350   void sqrtsd(XMMRegister dst, XMMRegister src);
1351 




1352   void std() { emit_byte(0xfd); }
1353 
1354   void stmxcsr( Address dst );
1355 
1356   void subl(Address dst, int32_t imm32);
1357   void subl(Address dst, Register src);
1358   void subl(Register dst, int32_t imm32);
1359   void subl(Register dst, Address src);
1360   void subl(Register dst, Register src);
1361 
1362   void subq(Address dst, int32_t imm32);
1363   void subq(Address dst, Register src);
1364   void subq(Register dst, int32_t imm32);
1365   void subq(Register dst, Address src);
1366   void subq(Register dst, Register src);
1367 
1368 
1369   // Subtract Scalar Double-Precision Floating-Point Values
1370   void subsd(XMMRegister dst, Address src);
1371   void subsd(XMMRegister dst, XMMRegister src);


2104   // for jumps/calls.
2105   void jump(AddressLiteral dst);
2106   void jump_cc(Condition cc, AddressLiteral dst);
2107 
2108   // 32bit can do a case table jump in one instruction but we no longer allow the base
2109   // to be installed in the Address class. This jump will tranfers to the address
2110   // contained in the location described by entry (not the address of entry)
2111   void jump(ArrayAddress entry);
2112 
2113   // Floating
2114 
2115   void andpd(XMMRegister dst, Address src) { Assembler::andpd(dst, src); }
2116   void andpd(XMMRegister dst, AddressLiteral src);
2117 
2118   void comiss(XMMRegister dst, Address src) { Assembler::comiss(dst, src); }
2119   void comiss(XMMRegister dst, AddressLiteral src);
2120 
2121   void comisd(XMMRegister dst, Address src) { Assembler::comisd(dst, src); }
2122   void comisd(XMMRegister dst, AddressLiteral src);
2123 



2124   void fldcw(Address src) { Assembler::fldcw(src); }
2125   void fldcw(AddressLiteral src);
2126 
2127   void fld_s(int index)   { Assembler::fld_s(index); }
2128   void fld_s(Address src) { Assembler::fld_s(src); }
2129   void fld_s(AddressLiteral src);
2130 
2131   void fld_d(Address src) { Assembler::fld_d(src); }
2132   void fld_d(AddressLiteral src);
2133 
2134   void fld_x(Address src) { Assembler::fld_x(src); }
2135   void fld_x(AddressLiteral src);
2136 



2137   void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
2138   void ldmxcsr(AddressLiteral src);
2139 
2140 private:
2141   // these are private because users should be doing movflt/movdbl
2142 
2143   void movss(Address dst, XMMRegister src)     { Assembler::movss(dst, src); }
2144   void movss(XMMRegister dst, XMMRegister src) { Assembler::movss(dst, src); }
2145   void movss(XMMRegister dst, Address src)     { Assembler::movss(dst, src); }
2146   void movss(XMMRegister dst, AddressLiteral src);
2147 
2148   void movlpd(XMMRegister dst, Address src)      {Assembler::movlpd(dst, src); }
2149   void movlpd(XMMRegister dst, AddressLiteral src);
2150 
2151 public:
2152 
















2153   void movsd(XMMRegister dst, XMMRegister src) { Assembler::movsd(dst, src); }
2154   void movsd(Address dst, XMMRegister src)     { Assembler::movsd(dst, src); }
2155   void movsd(XMMRegister dst, Address src)     { Assembler::movsd(dst, src); }
2156   void movsd(XMMRegister dst, AddressLiteral src);
























2157 
2158   void ucomiss(XMMRegister dst, XMMRegister src) { Assembler::ucomiss(dst, src); }
2159   void ucomiss(XMMRegister dst, Address src) { Assembler::ucomiss(dst, src); }
2160   void ucomiss(XMMRegister dst, AddressLiteral src);
2161 
2162   void ucomisd(XMMRegister dst, XMMRegister src) { Assembler::ucomisd(dst, src); }
2163   void ucomisd(XMMRegister dst, Address src) { Assembler::ucomisd(dst, src); }
2164   void ucomisd(XMMRegister dst, AddressLiteral src);
2165 
2166   // Bitwise Logical XOR of Packed Double-Precision Floating-Point Values
2167   void xorpd(XMMRegister dst, XMMRegister src) { Assembler::xorpd(dst, src); }
2168   void xorpd(XMMRegister dst, Address src)     { Assembler::xorpd(dst, src); }
2169   void xorpd(XMMRegister dst, AddressLiteral src);
2170 
2171   // Bitwise Logical XOR of Packed Single-Precision Floating-Point Values
2172   void xorps(XMMRegister dst, XMMRegister src) { Assembler::xorps(dst, src); }
2173   void xorps(XMMRegister dst, Address src)     { Assembler::xorps(dst, src); }
2174   void xorps(XMMRegister dst, AddressLiteral src);
2175 
2176   // Data




1332   void shll(Register dst, int imm8);
1333   void shll(Register dst);
1334 
1335   void shlq(Register dst, int imm8);
1336   void shlq(Register dst);
1337 
1338   void shrdl(Register dst, Register src);
1339 
1340   void shrl(Register dst, int imm8);
1341   void shrl(Register dst);
1342 
1343   void shrq(Register dst, int imm8);
1344   void shrq(Register dst);
1345 
1346   void smovl(); // QQQ generic?
1347 
1348   // Compute Square Root of Scalar Double-Precision Floating-Point Value
1349   void sqrtsd(XMMRegister dst, Address src);
1350   void sqrtsd(XMMRegister dst, XMMRegister src);
1351 
1352   // Compute Square Root of Scalar Single-Precision Floating-Point Value
1353   void sqrtss(XMMRegister dst, Address src);
1354   void sqrtss(XMMRegister dst, XMMRegister src);
1355 
1356   void std() { emit_byte(0xfd); }
1357 
1358   void stmxcsr( Address dst );
1359 
1360   void subl(Address dst, int32_t imm32);
1361   void subl(Address dst, Register src);
1362   void subl(Register dst, int32_t imm32);
1363   void subl(Register dst, Address src);
1364   void subl(Register dst, Register src);
1365 
1366   void subq(Address dst, int32_t imm32);
1367   void subq(Address dst, Register src);
1368   void subq(Register dst, int32_t imm32);
1369   void subq(Register dst, Address src);
1370   void subq(Register dst, Register src);
1371 
1372 
1373   // Subtract Scalar Double-Precision Floating-Point Values
1374   void subsd(XMMRegister dst, Address src);
1375   void subsd(XMMRegister dst, XMMRegister src);


2108   // for jumps/calls.
2109   void jump(AddressLiteral dst);
2110   void jump_cc(Condition cc, AddressLiteral dst);
2111 
2112   // 32bit can do a case table jump in one instruction but we no longer allow the base
2113   // to be installed in the Address class. This jump will tranfers to the address
2114   // contained in the location described by entry (not the address of entry)
2115   void jump(ArrayAddress entry);
2116 
2117   // Floating
2118 
2119   void andpd(XMMRegister dst, Address src) { Assembler::andpd(dst, src); }
2120   void andpd(XMMRegister dst, AddressLiteral src);
2121 
2122   void comiss(XMMRegister dst, Address src) { Assembler::comiss(dst, src); }
2123   void comiss(XMMRegister dst, AddressLiteral src);
2124 
2125   void comisd(XMMRegister dst, Address src) { Assembler::comisd(dst, src); }
2126   void comisd(XMMRegister dst, AddressLiteral src);
2127 
2128   void fadd_s(Address src)        { Assembler::fadd_s(src); }
2129   void fadd_s(AddressLiteral src) { Assembler::fadd_s(as_Address(src)); }
2130 
2131   void fldcw(Address src) { Assembler::fldcw(src); }
2132   void fldcw(AddressLiteral src);
2133 
2134   void fld_s(int index)   { Assembler::fld_s(index); }
2135   void fld_s(Address src) { Assembler::fld_s(src); }
2136   void fld_s(AddressLiteral src);
2137 
2138   void fld_d(Address src) { Assembler::fld_d(src); }
2139   void fld_d(AddressLiteral src);
2140 
2141   void fld_x(Address src) { Assembler::fld_x(src); }
2142   void fld_x(AddressLiteral src);
2143 
2144   void fmul_s(Address src)        { Assembler::fmul_s(src); }
2145   void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
2146 
2147   void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
2148   void ldmxcsr(AddressLiteral src);
2149 
2150 private:
2151   // these are private because users should be doing movflt/movdbl
2152 
2153   void movss(Address dst, XMMRegister src)     { Assembler::movss(dst, src); }
2154   void movss(XMMRegister dst, XMMRegister src) { Assembler::movss(dst, src); }
2155   void movss(XMMRegister dst, Address src)     { Assembler::movss(dst, src); }
2156   void movss(XMMRegister dst, AddressLiteral src);
2157 
2158   void movlpd(XMMRegister dst, Address src)      {Assembler::movlpd(dst, src); }
2159   void movlpd(XMMRegister dst, AddressLiteral src);
2160 
2161 public:
2162 
2163   void addsd(XMMRegister dst, XMMRegister src)    { Assembler::addsd(dst, src); }
2164   void addsd(XMMRegister dst, Address src)        { Assembler::addsd(dst, src); }
2165   void addsd(XMMRegister dst, AddressLiteral src) { Assembler::addsd(dst, as_Address(src)); }
2166 
2167   void addss(XMMRegister dst, XMMRegister src)    { Assembler::addss(dst, src); }
2168   void addss(XMMRegister dst, Address src)        { Assembler::addss(dst, src); }
2169   void addss(XMMRegister dst, AddressLiteral src) { Assembler::addss(dst, as_Address(src)); }
2170 
2171   void divsd(XMMRegister dst, XMMRegister src)    { Assembler::divsd(dst, src); }
2172   void divsd(XMMRegister dst, Address src)        { Assembler::divsd(dst, src); }
2173   void divsd(XMMRegister dst, AddressLiteral src) { Assembler::divsd(dst, as_Address(src)); }
2174 
2175   void divss(XMMRegister dst, XMMRegister src)    { Assembler::divss(dst, src); }
2176   void divss(XMMRegister dst, Address src)        { Assembler::divss(dst, src); }
2177   void divss(XMMRegister dst, AddressLiteral src) { Assembler::divss(dst, as_Address(src)); }
2178 
2179   void movsd(XMMRegister dst, XMMRegister src)    { Assembler::movsd(dst, src); }
2180   void movsd(Address dst, XMMRegister src)        { Assembler::movsd(dst, src); }
2181   void movsd(XMMRegister dst, Address src)        { Assembler::movsd(dst, src); }
2182   void movsd(XMMRegister dst, AddressLiteral src) { Assembler::movsd(dst, as_Address(src)); }
2183 
2184   void mulsd(XMMRegister dst, XMMRegister src)    { Assembler::mulsd(dst, src); }
2185   void mulsd(XMMRegister dst, Address src)        { Assembler::mulsd(dst, src); }
2186   void mulsd(XMMRegister dst, AddressLiteral src) { Assembler::mulsd(dst, as_Address(src)); }
2187 
2188   void mulss(XMMRegister dst, XMMRegister src)    { Assembler::mulss(dst, src); }
2189   void mulss(XMMRegister dst, Address src)        { Assembler::mulss(dst, src); }
2190   void mulss(XMMRegister dst, AddressLiteral src) { Assembler::mulss(dst, as_Address(src)); }
2191 
2192   void sqrtsd(XMMRegister dst, XMMRegister src)    { Assembler::sqrtsd(dst, src); }
2193   void sqrtsd(XMMRegister dst, Address src)        { Assembler::sqrtsd(dst, src); }
2194   void sqrtsd(XMMRegister dst, AddressLiteral src) { Assembler::sqrtsd(dst, as_Address(src)); }
2195 
2196   void sqrtss(XMMRegister dst, XMMRegister src)    { Assembler::sqrtss(dst, src); }
2197   void sqrtss(XMMRegister dst, Address src)        { Assembler::sqrtss(dst, src); }
2198   void sqrtss(XMMRegister dst, AddressLiteral src) { Assembler::sqrtss(dst, as_Address(src)); }
2199 
2200   void subsd(XMMRegister dst, XMMRegister src)    { Assembler::subsd(dst, src); }
2201   void subsd(XMMRegister dst, Address src)        { Assembler::subsd(dst, src); }
2202   void subsd(XMMRegister dst, AddressLiteral src) { Assembler::subsd(dst, as_Address(src)); }
2203 
2204   void subss(XMMRegister dst, XMMRegister src)    { Assembler::subss(dst, src); }
2205   void subss(XMMRegister dst, Address src)        { Assembler::subss(dst, src); }
2206   void subss(XMMRegister dst, AddressLiteral src) { Assembler::subss(dst, as_Address(src)); }
2207 
2208   void ucomiss(XMMRegister dst, XMMRegister src) { Assembler::ucomiss(dst, src); }
2209   void ucomiss(XMMRegister dst, Address src) { Assembler::ucomiss(dst, src); }
2210   void ucomiss(XMMRegister dst, AddressLiteral src);
2211 
2212   void ucomisd(XMMRegister dst, XMMRegister src) { Assembler::ucomisd(dst, src); }
2213   void ucomisd(XMMRegister dst, Address src) { Assembler::ucomisd(dst, src); }
2214   void ucomisd(XMMRegister dst, AddressLiteral src);
2215 
2216   // Bitwise Logical XOR of Packed Double-Precision Floating-Point Values
2217   void xorpd(XMMRegister dst, XMMRegister src) { Assembler::xorpd(dst, src); }
2218   void xorpd(XMMRegister dst, Address src)     { Assembler::xorpd(dst, src); }
2219   void xorpd(XMMRegister dst, AddressLiteral src);
2220 
2221   // Bitwise Logical XOR of Packed Single-Precision Floating-Point Values
2222   void xorps(XMMRegister dst, XMMRegister src) { Assembler::xorps(dst, src); }
2223   void xorps(XMMRegister dst, Address src)     { Assembler::xorps(dst, src); }
2224   void xorps(XMMRegister dst, AddressLiteral src);
2225 
2226   // Data


src/cpu/x86/vm/assembler_x86.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File