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 1062 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1073 | 1073 |
1074 void psllq(XMMRegister reg, byte imm8); | 1074 void psllq(XMMRegister reg, byte imm8); |
1075 void psrlq(XMMRegister reg, byte imm8); | 1075 void psrlq(XMMRegister reg, byte imm8); |
1076 void pslld(XMMRegister reg, byte imm8); | 1076 void pslld(XMMRegister reg, byte imm8); |
1077 void psrld(XMMRegister reg, byte imm8); | 1077 void psrld(XMMRegister reg, byte imm8); |
1078 | 1078 |
1079 void cvttsd2si(Register dst, const Operand& src); | 1079 void cvttsd2si(Register dst, const Operand& src); |
1080 void cvttsd2si(Register dst, XMMRegister src); | 1080 void cvttsd2si(Register dst, XMMRegister src); |
1081 void cvttss2siq(Register dst, XMMRegister src); | 1081 void cvttss2siq(Register dst, XMMRegister src); |
1082 void cvttss2siq(Register dst, const Operand& src); | 1082 void cvttss2siq(Register dst, const Operand& src); |
| 1083 void cvtss2siq(Register dst, XMMRegister src); |
| 1084 void cvtss2siq(Register dst, const Operand& src); |
1083 void cvttsd2siq(Register dst, XMMRegister src); | 1085 void cvttsd2siq(Register dst, XMMRegister src); |
1084 void cvttsd2siq(Register dst, const Operand& src); | 1086 void cvttsd2siq(Register dst, const Operand& src); |
1085 | 1087 |
1086 void cvtlsi2sd(XMMRegister dst, const Operand& src); | 1088 void cvtlsi2sd(XMMRegister dst, const Operand& src); |
1087 void cvtlsi2sd(XMMRegister dst, Register src); | 1089 void cvtlsi2sd(XMMRegister dst, Register src); |
1088 | 1090 |
1089 void cvtqsi2ss(XMMRegister dst, const Operand& src); | 1091 void cvtqsi2ss(XMMRegister dst, const Operand& src); |
1090 void cvtqsi2ss(XMMRegister dst, Register src); | 1092 void cvtqsi2ss(XMMRegister dst, Register src); |
1091 | 1093 |
1092 void cvtqsi2sd(XMMRegister dst, const Operand& src); | 1094 void cvtqsi2sd(XMMRegister dst, const Operand& src); |
1093 void cvtqsi2sd(XMMRegister dst, Register src); | 1095 void cvtqsi2sd(XMMRegister dst, Register src); |
1094 | 1096 |
1095 | 1097 |
1096 void cvtss2sd(XMMRegister dst, XMMRegister src); | 1098 void cvtss2sd(XMMRegister dst, XMMRegister src); |
1097 void cvtss2sd(XMMRegister dst, const Operand& src); | 1099 void cvtss2sd(XMMRegister dst, const Operand& src); |
1098 void cvtsd2ss(XMMRegister dst, XMMRegister src); | 1100 void cvtsd2ss(XMMRegister dst, XMMRegister src); |
1099 void cvtsd2ss(XMMRegister dst, const Operand& src); | 1101 void cvtsd2ss(XMMRegister dst, const Operand& src); |
1100 | 1102 |
1101 void cvtsd2si(Register dst, XMMRegister src); | 1103 void cvtsd2si(Register dst, XMMRegister src); |
1102 void cvtsd2siq(Register dst, XMMRegister src); | 1104 void cvtsd2siq(Register dst, XMMRegister src); |
| 1105 void cvtsd2siq(Register dst, const Operand& src); |
1103 | 1106 |
1104 void addsd(XMMRegister dst, XMMRegister src); | 1107 void addsd(XMMRegister dst, XMMRegister src); |
1105 void addsd(XMMRegister dst, const Operand& src); | 1108 void addsd(XMMRegister dst, const Operand& src); |
1106 void subsd(XMMRegister dst, XMMRegister src); | 1109 void subsd(XMMRegister dst, XMMRegister src); |
1107 void subsd(XMMRegister dst, const Operand& src); | 1110 void subsd(XMMRegister dst, const Operand& src); |
1108 void mulsd(XMMRegister dst, XMMRegister src); | 1111 void mulsd(XMMRegister dst, XMMRegister src); |
1109 void mulsd(XMMRegister dst, const Operand& src); | 1112 void mulsd(XMMRegister dst, const Operand& src); |
1110 void divsd(XMMRegister dst, XMMRegister src); | 1113 void divsd(XMMRegister dst, XMMRegister src); |
1111 void divsd(XMMRegister dst, const Operand& src); | 1114 void divsd(XMMRegister dst, const Operand& src); |
1112 | 1115 |
(...skipping 22 matching lines...) Expand all Loading... |
1135 void extractps(Register dst, XMMRegister src, byte imm8); | 1138 void extractps(Register dst, XMMRegister src, byte imm8); |
1136 | 1139 |
1137 void pextrd(Register dst, XMMRegister src, int8_t imm8); | 1140 void pextrd(Register dst, XMMRegister src, int8_t imm8); |
1138 | 1141 |
1139 void pinsrd(XMMRegister dst, Register src, int8_t imm8); | 1142 void pinsrd(XMMRegister dst, Register src, int8_t imm8); |
1140 void pinsrd(XMMRegister dst, const Operand& src, int8_t imm8); | 1143 void pinsrd(XMMRegister dst, const Operand& src, int8_t imm8); |
1141 | 1144 |
1142 void roundss(XMMRegister dst, XMMRegister src, RoundingMode mode); | 1145 void roundss(XMMRegister dst, XMMRegister src, RoundingMode mode); |
1143 void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode); | 1146 void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode); |
1144 | 1147 |
| 1148 void ldmxcsr(const Operand& dst); |
| 1149 void stmxcsr(const Operand& dst); |
| 1150 |
1145 // AVX instruction | 1151 // AVX instruction |
1146 void vfmadd132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1152 void vfmadd132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
1147 vfmasd(0x99, dst, src1, src2); | 1153 vfmasd(0x99, dst, src1, src2); |
1148 } | 1154 } |
1149 void vfmadd213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1155 void vfmadd213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
1150 vfmasd(0xa9, dst, src1, src2); | 1156 vfmasd(0xa9, dst, src1, src2); |
1151 } | 1157 } |
1152 void vfmadd231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1158 void vfmadd231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
1153 vfmasd(0xb9, dst, src1, src2); | 1159 vfmasd(0xb9, dst, src1, src2); |
1154 } | 1160 } |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1351 void vpsrlq(XMMRegister dst, XMMRegister src, byte imm8) { | 1357 void vpsrlq(XMMRegister dst, XMMRegister src, byte imm8) { |
1352 XMMRegister iop = {2}; | 1358 XMMRegister iop = {2}; |
1353 vpd(0x73, iop, dst, src); | 1359 vpd(0x73, iop, dst, src); |
1354 emit(imm8); | 1360 emit(imm8); |
1355 } | 1361 } |
1356 void vpsllq(XMMRegister dst, XMMRegister src, byte imm8) { | 1362 void vpsllq(XMMRegister dst, XMMRegister src, byte imm8) { |
1357 XMMRegister iop = {6}; | 1363 XMMRegister iop = {6}; |
1358 vpd(0x73, iop, dst, src); | 1364 vpd(0x73, iop, dst, src); |
1359 emit(imm8); | 1365 emit(imm8); |
1360 } | 1366 } |
| 1367 void vpslld(XMMRegister dst, XMMRegister src, byte imm8) { |
| 1368 XMMRegister iop = {6}; |
| 1369 vpd(0x72, iop, dst, src); |
| 1370 emit(imm8); |
| 1371 } |
1361 void vcvtss2sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1372 void vcvtss2sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
1362 vsd(0x5a, dst, src1, src2, kF3, k0F, kWIG); | 1373 vsd(0x5a, dst, src1, src2, kF3, k0F, kWIG); |
1363 } | 1374 } |
1364 void vcvtss2sd(XMMRegister dst, XMMRegister src1, const Operand& src2) { | 1375 void vcvtss2sd(XMMRegister dst, XMMRegister src1, const Operand& src2) { |
1365 vsd(0x5a, dst, src1, src2, kF3, k0F, kWIG); | 1376 vsd(0x5a, dst, src1, src2, kF3, k0F, kWIG); |
1366 } | 1377 } |
1367 void vcvtlsi2sd(XMMRegister dst, XMMRegister src1, Register src2) { | 1378 void vcvtlsi2sd(XMMRegister dst, XMMRegister src1, Register src2) { |
1368 XMMRegister isrc2 = {src2.code()}; | 1379 XMMRegister isrc2 = {src2.code()}; |
1369 vsd(0x2a, dst, src1, isrc2, kF2, k0F, kW0); | 1380 vsd(0x2a, dst, src1, isrc2, kF2, k0F, kW0); |
1370 } | 1381 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1409 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW0); | 1420 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW0); |
1410 } | 1421 } |
1411 void vcvttss2siq(Register dst, XMMRegister src) { | 1422 void vcvttss2siq(Register dst, XMMRegister src) { |
1412 XMMRegister idst = {dst.code()}; | 1423 XMMRegister idst = {dst.code()}; |
1413 vsd(0x2c, idst, xmm0, src, kF3, k0F, kW1); | 1424 vsd(0x2c, idst, xmm0, src, kF3, k0F, kW1); |
1414 } | 1425 } |
1415 void vcvttss2siq(Register dst, const Operand& src) { | 1426 void vcvttss2siq(Register dst, const Operand& src) { |
1416 XMMRegister idst = {dst.code()}; | 1427 XMMRegister idst = {dst.code()}; |
1417 vsd(0x2c, idst, xmm0, src, kF3, k0F, kW1); | 1428 vsd(0x2c, idst, xmm0, src, kF3, k0F, kW1); |
1418 } | 1429 } |
| 1430 void vcvtss2siq(Register dst, XMMRegister src) { |
| 1431 XMMRegister idst = {dst.code()}; |
| 1432 vsd(0x2d, idst, xmm0, src, kF3, k0F, kW1); |
| 1433 } |
| 1434 void vcvtss2siq(Register dst, const Operand& src) { |
| 1435 XMMRegister idst = {dst.code()}; |
| 1436 vsd(0x2d, idst, xmm0, src, kF3, k0F, kW1); |
| 1437 } |
1419 void vcvttsd2siq(Register dst, XMMRegister src) { | 1438 void vcvttsd2siq(Register dst, XMMRegister src) { |
1420 XMMRegister idst = {dst.code()}; | 1439 XMMRegister idst = {dst.code()}; |
1421 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW1); | 1440 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW1); |
1422 } | 1441 } |
1423 void vcvttsd2siq(Register dst, const Operand& src) { | 1442 void vcvttsd2siq(Register dst, const Operand& src) { |
1424 XMMRegister idst = {dst.code()}; | 1443 XMMRegister idst = {dst.code()}; |
1425 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW1); | 1444 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW1); |
1426 } | 1445 } |
| 1446 void vcvtsd2siq(Register dst, XMMRegister src) { |
| 1447 XMMRegister idst = {dst.code()}; |
| 1448 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW1); |
| 1449 } |
| 1450 void vcvtsd2siq(Register dst, const Operand& src) { |
| 1451 XMMRegister idst = {dst.code()}; |
| 1452 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW1); |
| 1453 } |
1427 void vcvtsd2si(Register dst, XMMRegister src) { | 1454 void vcvtsd2si(Register dst, XMMRegister src) { |
1428 XMMRegister idst = {dst.code()}; | 1455 XMMRegister idst = {dst.code()}; |
1429 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW0); | 1456 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW0); |
1430 } | 1457 } |
1431 void vucomisd(XMMRegister dst, XMMRegister src) { | 1458 void vucomisd(XMMRegister dst, XMMRegister src) { |
1432 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); | 1459 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); |
1433 } | 1460 } |
1434 void vucomisd(XMMRegister dst, const Operand& src) { | 1461 void vucomisd(XMMRegister dst, const Operand& src) { |
1435 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); | 1462 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); |
1436 } | 1463 } |
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2205 Assembler* assembler_; | 2232 Assembler* assembler_; |
2206 #ifdef DEBUG | 2233 #ifdef DEBUG |
2207 int space_before_; | 2234 int space_before_; |
2208 #endif | 2235 #endif |
2209 }; | 2236 }; |
2210 | 2237 |
2211 } // namespace internal | 2238 } // namespace internal |
2212 } // namespace v8 | 2239 } // namespace v8 |
2213 | 2240 |
2214 #endif // V8_X64_ASSEMBLER_X64_H_ | 2241 #endif // V8_X64_ASSEMBLER_X64_H_ |
OLD | NEW |