OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1129 void punpckhdq(XMMRegister dst, XMMRegister src); | 1129 void punpckhdq(XMMRegister dst, XMMRegister src); |
1130 | 1130 |
1131 // SSE 4.1 instruction | 1131 // SSE 4.1 instruction |
1132 void extractps(Register dst, XMMRegister src, byte imm8); | 1132 void extractps(Register dst, XMMRegister src, byte imm8); |
1133 | 1133 |
1134 void pextrd(Register dst, XMMRegister src, int8_t imm8); | 1134 void pextrd(Register dst, XMMRegister src, int8_t imm8); |
1135 | 1135 |
1136 void pinsrd(XMMRegister dst, Register src, int8_t imm8); | 1136 void pinsrd(XMMRegister dst, Register src, int8_t imm8); |
1137 void pinsrd(XMMRegister dst, const Operand& src, int8_t imm8); | 1137 void pinsrd(XMMRegister dst, const Operand& src, int8_t imm8); |
1138 | 1138 |
| 1139 void roundss(XMMRegister dst, XMMRegister src, RoundingMode mode); |
1139 void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode); | 1140 void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode); |
1140 | 1141 |
1141 // AVX instruction | 1142 // AVX instruction |
1142 void vfmadd132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1143 void vfmadd132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
1143 vfmasd(0x99, dst, src1, src2); | 1144 vfmasd(0x99, dst, src1, src2); |
1144 } | 1145 } |
1145 void vfmadd213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1146 void vfmadd213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
1146 vfmasd(0xa9, dst, src1, src2); | 1147 vfmasd(0xa9, dst, src1, src2); |
1147 } | 1148 } |
1148 void vfmadd231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1149 void vfmadd231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1400 void vcvtsd2si(Register dst, XMMRegister src) { | 1401 void vcvtsd2si(Register dst, XMMRegister src) { |
1401 XMMRegister idst = {dst.code()}; | 1402 XMMRegister idst = {dst.code()}; |
1402 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW0); | 1403 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW0); |
1403 } | 1404 } |
1404 void vucomisd(XMMRegister dst, XMMRegister src) { | 1405 void vucomisd(XMMRegister dst, XMMRegister src) { |
1405 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); | 1406 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); |
1406 } | 1407 } |
1407 void vucomisd(XMMRegister dst, const Operand& src) { | 1408 void vucomisd(XMMRegister dst, const Operand& src) { |
1408 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); | 1409 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); |
1409 } | 1410 } |
| 1411 void vroundss(XMMRegister dst, XMMRegister src1, XMMRegister src2, |
| 1412 RoundingMode mode) { |
| 1413 vsd(0x0a, dst, src1, src2, k66, k0F3A, kWIG); |
| 1414 emit(static_cast<byte>(mode) | 0x8); // Mask precision exception. |
| 1415 } |
1410 void vroundsd(XMMRegister dst, XMMRegister src1, XMMRegister src2, | 1416 void vroundsd(XMMRegister dst, XMMRegister src1, XMMRegister src2, |
1411 RoundingMode mode) { | 1417 RoundingMode mode) { |
1412 vsd(0x0b, dst, src1, src2, k66, k0F3A, kWIG); | 1418 vsd(0x0b, dst, src1, src2, k66, k0F3A, kWIG); |
1413 emit(static_cast<byte>(mode) | 0x8); // Mask precision exception. | 1419 emit(static_cast<byte>(mode) | 0x8); // Mask precision exception. |
1414 } | 1420 } |
1415 | 1421 |
1416 void vsd(byte op, XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1422 void vsd(byte op, XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
1417 vsd(op, dst, src1, src2, kF2, k0F, kWIG); | 1423 vsd(op, dst, src1, src2, kF2, k0F, kWIG); |
1418 } | 1424 } |
1419 void vsd(byte op, XMMRegister dst, XMMRegister src1, const Operand& src2) { | 1425 void vsd(byte op, XMMRegister dst, XMMRegister src1, const Operand& src2) { |
(...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2173 Assembler* assembler_; | 2179 Assembler* assembler_; |
2174 #ifdef DEBUG | 2180 #ifdef DEBUG |
2175 int space_before_; | 2181 int space_before_; |
2176 #endif | 2182 #endif |
2177 }; | 2183 }; |
2178 | 2184 |
2179 } // namespace internal | 2185 } // namespace internal |
2180 } // namespace v8 | 2186 } // namespace v8 |
2181 | 2187 |
2182 #endif // V8_X64_ASSEMBLER_X64_H_ | 2188 #endif // V8_X64_ASSEMBLER_X64_H_ |
OLD | NEW |