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 990 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1001 void maxss(XMMRegister dst, const Operand& src); | 1001 void maxss(XMMRegister dst, const Operand& src); |
1002 void minss(XMMRegister dst, XMMRegister src); | 1002 void minss(XMMRegister dst, XMMRegister src); |
1003 void minss(XMMRegister dst, const Operand& src); | 1003 void minss(XMMRegister dst, const Operand& src); |
1004 | 1004 |
1005 void sqrtss(XMMRegister dst, XMMRegister src); | 1005 void sqrtss(XMMRegister dst, XMMRegister src); |
1006 void sqrtss(XMMRegister dst, const Operand& src); | 1006 void sqrtss(XMMRegister dst, const Operand& src); |
1007 | 1007 |
1008 void ucomiss(XMMRegister dst, XMMRegister src); | 1008 void ucomiss(XMMRegister dst, XMMRegister src); |
1009 void ucomiss(XMMRegister dst, const Operand& src); | 1009 void ucomiss(XMMRegister dst, const Operand& src); |
1010 void movaps(XMMRegister dst, XMMRegister src); | 1010 void movaps(XMMRegister dst, XMMRegister src); |
| 1011 |
| 1012 // Don't use this unless it's important to keep the |
| 1013 // top half of the destination register unchanged. |
| 1014 // Use movaps when moving float values and movd for integer |
| 1015 // values in xmm registers. |
| 1016 void movss(XMMRegister dst, XMMRegister src); |
| 1017 |
1011 void movss(XMMRegister dst, const Operand& src); | 1018 void movss(XMMRegister dst, const Operand& src); |
1012 void movss(const Operand& dst, XMMRegister src); | 1019 void movss(const Operand& dst, XMMRegister src); |
1013 void shufps(XMMRegister dst, XMMRegister src, byte imm8); | 1020 void shufps(XMMRegister dst, XMMRegister src, byte imm8); |
1014 | 1021 |
1015 void cvttss2si(Register dst, const Operand& src); | 1022 void cvttss2si(Register dst, const Operand& src); |
1016 void cvttss2si(Register dst, XMMRegister src); | 1023 void cvttss2si(Register dst, XMMRegister src); |
1017 void cvtlsi2ss(XMMRegister dst, Register src); | 1024 void cvtlsi2ss(XMMRegister dst, Register src); |
1018 | 1025 |
1019 void andps(XMMRegister dst, XMMRegister src); | 1026 void andps(XMMRegister dst, XMMRegister src); |
1020 void andps(XMMRegister dst, const Operand& src); | 1027 void andps(XMMRegister dst, const Operand& src); |
(...skipping 16 matching lines...) Expand all Loading... |
1037 // SSE2 instructions | 1044 // SSE2 instructions |
1038 void movd(XMMRegister dst, Register src); | 1045 void movd(XMMRegister dst, Register src); |
1039 void movd(XMMRegister dst, const Operand& src); | 1046 void movd(XMMRegister dst, const Operand& src); |
1040 void movd(Register dst, XMMRegister src); | 1047 void movd(Register dst, XMMRegister src); |
1041 void movq(XMMRegister dst, Register src); | 1048 void movq(XMMRegister dst, Register src); |
1042 void movq(Register dst, XMMRegister src); | 1049 void movq(Register dst, XMMRegister src); |
1043 void movq(XMMRegister dst, XMMRegister src); | 1050 void movq(XMMRegister dst, XMMRegister src); |
1044 | 1051 |
1045 // Don't use this unless it's important to keep the | 1052 // Don't use this unless it's important to keep the |
1046 // top half of the destination register unchanged. | 1053 // top half of the destination register unchanged. |
1047 // Used movaps when moving double values and movq for integer | 1054 // Use movapd when moving double values and movq for integer |
1048 // values in xmm registers. | 1055 // values in xmm registers. |
1049 void movsd(XMMRegister dst, XMMRegister src); | 1056 void movsd(XMMRegister dst, XMMRegister src); |
1050 | 1057 |
1051 void movsd(const Operand& dst, XMMRegister src); | 1058 void movsd(const Operand& dst, XMMRegister src); |
1052 void movsd(XMMRegister dst, const Operand& src); | 1059 void movsd(XMMRegister dst, const Operand& src); |
1053 | 1060 |
1054 void movdqa(const Operand& dst, XMMRegister src); | 1061 void movdqa(const Operand& dst, XMMRegister src); |
1055 void movdqa(XMMRegister dst, const Operand& src); | 1062 void movdqa(XMMRegister dst, const Operand& src); |
1056 | 1063 |
1057 void movdqu(const Operand& dst, XMMRegister src); | 1064 void movdqu(const Operand& dst, XMMRegister src); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1274 void vfmass(byte op, XMMRegister dst, XMMRegister src1, XMMRegister src2); | 1281 void vfmass(byte op, XMMRegister dst, XMMRegister src1, XMMRegister src2); |
1275 void vfmass(byte op, XMMRegister dst, XMMRegister src1, const Operand& src2); | 1282 void vfmass(byte op, XMMRegister dst, XMMRegister src1, const Operand& src2); |
1276 | 1283 |
1277 void vmovd(XMMRegister dst, Register src); | 1284 void vmovd(XMMRegister dst, Register src); |
1278 void vmovd(XMMRegister dst, const Operand& src); | 1285 void vmovd(XMMRegister dst, const Operand& src); |
1279 void vmovd(Register dst, XMMRegister src); | 1286 void vmovd(Register dst, XMMRegister src); |
1280 void vmovq(XMMRegister dst, Register src); | 1287 void vmovq(XMMRegister dst, Register src); |
1281 void vmovq(XMMRegister dst, const Operand& src); | 1288 void vmovq(XMMRegister dst, const Operand& src); |
1282 void vmovq(Register dst, XMMRegister src); | 1289 void vmovq(Register dst, XMMRegister src); |
1283 | 1290 |
| 1291 void vmovsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
| 1292 vsd(0x10, dst, src1, src2); |
| 1293 } |
1284 void vmovsd(XMMRegister dst, const Operand& src) { | 1294 void vmovsd(XMMRegister dst, const Operand& src) { |
1285 vsd(0x10, dst, xmm0, src); | 1295 vsd(0x10, dst, xmm0, src); |
1286 } | 1296 } |
1287 void vmovsd(XMMRegister dst, XMMRegister src) { vsd(0x10, dst, xmm0, src); } | |
1288 void vmovsd(const Operand& dst, XMMRegister src) { | 1297 void vmovsd(const Operand& dst, XMMRegister src) { |
1289 vsd(0x11, src, xmm0, dst); | 1298 vsd(0x11, src, xmm0, dst); |
1290 } | 1299 } |
1291 void vaddsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1300 void vaddsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
1292 vsd(0x58, dst, src1, src2); | 1301 vsd(0x58, dst, src1, src2); |
1293 } | 1302 } |
1294 void vaddsd(XMMRegister dst, XMMRegister src1, const Operand& src2) { | 1303 void vaddsd(XMMRegister dst, XMMRegister src1, const Operand& src2) { |
1295 vsd(0x58, dst, src1, src2); | 1304 vsd(0x58, dst, src1, src2); |
1296 } | 1305 } |
1297 void vsubsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1306 void vsubsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1406 } | 1415 } |
1407 void vmaxss(XMMRegister dst, XMMRegister src1, const Operand& src2) { | 1416 void vmaxss(XMMRegister dst, XMMRegister src1, const Operand& src2) { |
1408 vss(0x5f, dst, src1, src2); | 1417 vss(0x5f, dst, src1, src2); |
1409 } | 1418 } |
1410 void vminss(XMMRegister dst, XMMRegister src1, XMMRegister src2) { | 1419 void vminss(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
1411 vss(0x5d, dst, src1, src2); | 1420 vss(0x5d, dst, src1, src2); |
1412 } | 1421 } |
1413 void vminss(XMMRegister dst, XMMRegister src1, const Operand& src2) { | 1422 void vminss(XMMRegister dst, XMMRegister src1, const Operand& src2) { |
1414 vss(0x5d, dst, src1, src2); | 1423 vss(0x5d, dst, src1, src2); |
1415 } | 1424 } |
| 1425 void vmovss(XMMRegister dst, XMMRegister src1, XMMRegister src2) { |
| 1426 vss(0x10, dst, src1, src2); |
| 1427 } |
1416 void vmovss(XMMRegister dst, const Operand& src) { | 1428 void vmovss(XMMRegister dst, const Operand& src) { |
1417 vss(0x10, dst, xmm0, src); | 1429 vss(0x10, dst, xmm0, src); |
1418 } | 1430 } |
1419 void vmovss(const Operand& dst, XMMRegister src) { | 1431 void vmovss(const Operand& dst, XMMRegister src) { |
1420 vss(0x11, src, xmm0, dst); | 1432 vss(0x11, src, xmm0, dst); |
1421 } | 1433 } |
1422 void vucomiss(XMMRegister dst, XMMRegister src); | 1434 void vucomiss(XMMRegister dst, XMMRegister src); |
1423 void vucomiss(XMMRegister dst, const Operand& src); | 1435 void vucomiss(XMMRegister dst, const Operand& src); |
1424 void vss(byte op, XMMRegister dst, XMMRegister src1, XMMRegister src2); | 1436 void vss(byte op, XMMRegister dst, XMMRegister src1, XMMRegister src2); |
1425 void vss(byte op, XMMRegister dst, XMMRegister src1, const Operand& src2); | 1437 void vss(byte op, XMMRegister dst, XMMRegister src1, const Operand& src2); |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1594 bmi2l(kF2, 0xf7, dst, src2, src1); | 1606 bmi2l(kF2, 0xf7, dst, src2, src1); |
1595 } | 1607 } |
1596 void shrxl(Register dst, const Operand& src1, Register src2) { | 1608 void shrxl(Register dst, const Operand& src1, Register src2) { |
1597 bmi2l(kF2, 0xf7, dst, src2, src1); | 1609 bmi2l(kF2, 0xf7, dst, src2, src1); |
1598 } | 1610 } |
1599 void rorxq(Register dst, Register src, byte imm8); | 1611 void rorxq(Register dst, Register src, byte imm8); |
1600 void rorxq(Register dst, const Operand& src, byte imm8); | 1612 void rorxq(Register dst, const Operand& src, byte imm8); |
1601 void rorxl(Register dst, Register src, byte imm8); | 1613 void rorxl(Register dst, Register src, byte imm8); |
1602 void rorxl(Register dst, const Operand& src, byte imm8); | 1614 void rorxl(Register dst, const Operand& src, byte imm8); |
1603 | 1615 |
| 1616 void vmovaps(XMMRegister dst, XMMRegister src) { vps(0x28, dst, xmm0, src); } |
1604 void vmovapd(XMMRegister dst, XMMRegister src) { vpd(0x28, dst, xmm0, src); } | 1617 void vmovapd(XMMRegister dst, XMMRegister src) { vpd(0x28, dst, xmm0, src); } |
1605 void vmovmskpd(Register dst, XMMRegister src) { | 1618 void vmovmskpd(Register dst, XMMRegister src) { |
1606 XMMRegister idst = {dst.code()}; | 1619 XMMRegister idst = {dst.code()}; |
1607 vpd(0x50, idst, xmm0, src); | 1620 vpd(0x50, idst, xmm0, src); |
1608 } | 1621 } |
1609 | 1622 |
1610 #define PACKED_OP_LIST(V) \ | 1623 #define PACKED_OP_LIST(V) \ |
1611 V(and, 0x54) \ | 1624 V(and, 0x54) \ |
1612 V(xor, 0x57) | 1625 V(xor, 0x57) |
1613 | 1626 |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2180 Assembler* assembler_; | 2193 Assembler* assembler_; |
2181 #ifdef DEBUG | 2194 #ifdef DEBUG |
2182 int space_before_; | 2195 int space_before_; |
2183 #endif | 2196 #endif |
2184 }; | 2197 }; |
2185 | 2198 |
2186 } // namespace internal | 2199 } // namespace internal |
2187 } // namespace v8 | 2200 } // namespace v8 |
2188 | 2201 |
2189 #endif // V8_X64_ASSEMBLER_X64_H_ | 2202 #endif // V8_X64_ASSEMBLER_X64_H_ |
OLD | NEW |