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

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

Issue 1584663007: [turbofan] Implement rounding of floats on x64 and ia32 without sse4.1. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: reduced generated code. Created 4 years, 11 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/snapshot/serialize.cc ('k') | src/x64/assembler-x64.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 1062 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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_
OLDNEW
« no previous file with comments | « src/snapshot/serialize.cc ('k') | src/x64/assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698