Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(497)

Side by Side Diff: src/ia32/assembler-ia32.h

Issue 2916093002: [ia32][wasm] Support AVX instructions for I32x4Splat/ReplaceLane/ExtractLane (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/ia32/instruction-selector-ia32.cc ('k') | src/ia32/assembler-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 void psllw(XMMRegister reg, int8_t shift); 1120 void psllw(XMMRegister reg, int8_t shift);
1121 void pslld(XMMRegister reg, int8_t shift); 1121 void pslld(XMMRegister reg, int8_t shift);
1122 void psrlw(XMMRegister reg, int8_t shift); 1122 void psrlw(XMMRegister reg, int8_t shift);
1123 void psrld(XMMRegister reg, int8_t shift); 1123 void psrld(XMMRegister reg, int8_t shift);
1124 void psraw(XMMRegister reg, int8_t shift); 1124 void psraw(XMMRegister reg, int8_t shift);
1125 void psrad(XMMRegister reg, int8_t shift); 1125 void psrad(XMMRegister reg, int8_t shift);
1126 void psllq(XMMRegister reg, int8_t shift); 1126 void psllq(XMMRegister reg, int8_t shift);
1127 void psllq(XMMRegister dst, XMMRegister src); 1127 void psllq(XMMRegister dst, XMMRegister src);
1128 void psrlq(XMMRegister reg, int8_t shift); 1128 void psrlq(XMMRegister reg, int8_t shift);
1129 void psrlq(XMMRegister dst, XMMRegister src); 1129 void psrlq(XMMRegister dst, XMMRegister src);
1130 void pshufd(XMMRegister dst, XMMRegister src, uint8_t shuffle); 1130
1131 void pshufd(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
1132 pshufd(dst, Operand(src), shuffle);
1133 }
1134 void pshufd(XMMRegister dst, const Operand& src, uint8_t shuffle);
1131 void pextrd(Register dst, XMMRegister src, int8_t offset) { 1135 void pextrd(Register dst, XMMRegister src, int8_t offset) {
1132 pextrd(Operand(dst), src, offset); 1136 pextrd(Operand(dst), src, offset);
1133 } 1137 }
1134 void pextrd(const Operand& dst, XMMRegister src, int8_t offset); 1138 void pextrd(const Operand& dst, XMMRegister src, int8_t offset);
1135 void pinsrw(XMMRegister dst, Register src, int8_t offset) { 1139 void pinsrw(XMMRegister dst, Register src, int8_t offset) {
1136 pinsrw(dst, Operand(src), offset); 1140 pinsrw(dst, Operand(src), offset);
1137 } 1141 }
1138 void pinsrw(XMMRegister dst, const Operand& src, int8_t offset); 1142 void pinsrw(XMMRegister dst, const Operand& src, int8_t offset);
1139 void pinsrd(XMMRegister dst, Register src, int8_t offset) { 1143 void pinsrd(XMMRegister dst, Register src, int8_t offset) {
1140 pinsrd(dst, Operand(src), offset); 1144 pinsrd(dst, Operand(src), offset);
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 vinstr(0x52, dst, xmm0, src, kNone, k0F, kWIG); 1381 vinstr(0x52, dst, xmm0, src, kNone, k0F, kWIG);
1378 } 1382 }
1379 1383
1380 void vpsllw(XMMRegister dst, XMMRegister src, int8_t imm8); 1384 void vpsllw(XMMRegister dst, XMMRegister src, int8_t imm8);
1381 void vpslld(XMMRegister dst, XMMRegister src, int8_t imm8); 1385 void vpslld(XMMRegister dst, XMMRegister src, int8_t imm8);
1382 void vpsrlw(XMMRegister dst, XMMRegister src, int8_t imm8); 1386 void vpsrlw(XMMRegister dst, XMMRegister src, int8_t imm8);
1383 void vpsrld(XMMRegister dst, XMMRegister src, int8_t imm8); 1387 void vpsrld(XMMRegister dst, XMMRegister src, int8_t imm8);
1384 void vpsraw(XMMRegister dst, XMMRegister src, int8_t imm8); 1388 void vpsraw(XMMRegister dst, XMMRegister src, int8_t imm8);
1385 void vpsrad(XMMRegister dst, XMMRegister src, int8_t imm8); 1389 void vpsrad(XMMRegister dst, XMMRegister src, int8_t imm8);
1386 1390
1391 void vpshufd(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
1392 vpshufd(dst, Operand(src), shuffle);
1393 }
1394 void vpshufd(XMMRegister dst, const Operand& src, uint8_t shuffle);
1395 void vpextrd(Register dst, XMMRegister src, int8_t offset) {
1396 vpextrd(Operand(dst), src, offset);
1397 }
1398 void vpextrd(const Operand& dst, XMMRegister src, int8_t offset);
1399 void vpinsrd(XMMRegister dst, XMMRegister src1, Register src2,
1400 int8_t offset) {
1401 vpinsrd(dst, src1, Operand(src2), offset);
1402 }
1403 void vpinsrd(XMMRegister dst, XMMRegister src1, const Operand& src2,
1404 int8_t offset);
1405
1387 void vcvtdq2ps(XMMRegister dst, XMMRegister src) { 1406 void vcvtdq2ps(XMMRegister dst, XMMRegister src) {
1388 vcvtdq2ps(dst, Operand(src)); 1407 vcvtdq2ps(dst, Operand(src));
1389 } 1408 }
1390 void vcvtdq2ps(XMMRegister dst, const Operand& src) { 1409 void vcvtdq2ps(XMMRegister dst, const Operand& src) {
1391 vinstr(0x5B, dst, xmm0, src, kNone, k0F, kWIG); 1410 vinstr(0x5B, dst, xmm0, src, kNone, k0F, kWIG);
1392 } 1411 }
1393 void vcvttps2dq(XMMRegister dst, XMMRegister src) { 1412 void vcvttps2dq(XMMRegister dst, XMMRegister src) {
1394 vcvttps2dq(dst, Operand(src)); 1413 vcvttps2dq(dst, Operand(src));
1395 } 1414 }
1396 void vcvttps2dq(XMMRegister dst, const Operand& src) { 1415 void vcvttps2dq(XMMRegister dst, const Operand& src) {
1397 vinstr(0x5B, dst, xmm0, src, kF3, k0F, kWIG); 1416 vinstr(0x5B, dst, xmm0, src, kF3, k0F, kWIG);
1398 } 1417 }
1399 1418
1419 void vmovd(XMMRegister dst, Register src) { vmovd(dst, Operand(src)); }
1420 void vmovd(XMMRegister dst, const Operand& src) {
1421 vinstr(0x6E, dst, xmm0, src, k66, k0F, kWIG);
1422 }
1423 void vmovd(Register dst, XMMRegister src) { movd(Operand(dst), src); }
1424 void vmovd(const Operand& dst, XMMRegister src) {
1425 vinstr(0x7E, src, xmm0, dst, k66, k0F, kWIG);
1426 }
1427
1400 // BMI instruction 1428 // BMI instruction
1401 void andn(Register dst, Register src1, Register src2) { 1429 void andn(Register dst, Register src1, Register src2) {
1402 andn(dst, src1, Operand(src2)); 1430 andn(dst, src1, Operand(src2));
1403 } 1431 }
1404 void andn(Register dst, Register src1, const Operand& src2) { 1432 void andn(Register dst, Register src1, const Operand& src2) {
1405 bmi1(0xf2, dst, src1, src2); 1433 bmi1(0xf2, dst, src1, src2);
1406 } 1434 }
1407 void bextr(Register dst, Register src1, Register src2) { 1435 void bextr(Register dst, Register src1, Register src2) {
1408 bextr(dst, Operand(src1), src2); 1436 bextr(dst, Operand(src1), src2);
1409 } 1437 }
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1764 Assembler* assembler_; 1792 Assembler* assembler_;
1765 #ifdef DEBUG 1793 #ifdef DEBUG
1766 int space_before_; 1794 int space_before_;
1767 #endif 1795 #endif
1768 }; 1796 };
1769 1797
1770 } // namespace internal 1798 } // namespace internal
1771 } // namespace v8 1799 } // namespace v8
1772 1800
1773 #endif // V8_IA32_ASSEMBLER_IA32_H_ 1801 #endif // V8_IA32_ASSEMBLER_IA32_H_
OLDNEW
« no previous file with comments | « src/compiler/ia32/instruction-selector-ia32.cc ('k') | src/ia32/assembler-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698