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

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: 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
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 1061 matching lines...) Expand 10 before | Expand all | Expand 10 after
1072 1072
1073 void psllq(XMMRegister reg, byte imm8); 1073 void psllq(XMMRegister reg, byte imm8);
1074 void psrlq(XMMRegister reg, byte imm8); 1074 void psrlq(XMMRegister reg, byte imm8);
1075 void pslld(XMMRegister reg, byte imm8); 1075 void pslld(XMMRegister reg, byte imm8);
1076 void psrld(XMMRegister reg, byte imm8); 1076 void psrld(XMMRegister reg, byte imm8);
1077 1077
1078 void cvttsd2si(Register dst, const Operand& src); 1078 void cvttsd2si(Register dst, const Operand& src);
1079 void cvttsd2si(Register dst, XMMRegister src); 1079 void cvttsd2si(Register dst, XMMRegister src);
1080 void cvttss2siq(Register dst, XMMRegister src); 1080 void cvttss2siq(Register dst, XMMRegister src);
1081 void cvttss2siq(Register dst, const Operand& src); 1081 void cvttss2siq(Register dst, const Operand& src);
1082 void cvtss2siq(Register dst, XMMRegister src);
1083 void cvtss2siq(Register dst, const Operand& src);
1082 void cvttsd2siq(Register dst, XMMRegister src); 1084 void cvttsd2siq(Register dst, XMMRegister src);
1083 void cvttsd2siq(Register dst, const Operand& src); 1085 void cvttsd2siq(Register dst, const Operand& src);
1084 1086
1085 void cvtlsi2sd(XMMRegister dst, const Operand& src); 1087 void cvtlsi2sd(XMMRegister dst, const Operand& src);
1086 void cvtlsi2sd(XMMRegister dst, Register src); 1088 void cvtlsi2sd(XMMRegister dst, Register src);
1087 1089
1088 void cvtqsi2ss(XMMRegister dst, const Operand& src); 1090 void cvtqsi2ss(XMMRegister dst, const Operand& src);
1089 void cvtqsi2ss(XMMRegister dst, Register src); 1091 void cvtqsi2ss(XMMRegister dst, Register src);
1090 1092
1091 void cvtqsi2sd(XMMRegister dst, const Operand& src); 1093 void cvtqsi2sd(XMMRegister dst, const Operand& src);
1092 void cvtqsi2sd(XMMRegister dst, Register src); 1094 void cvtqsi2sd(XMMRegister dst, Register src);
1093 1095
1094 1096
1095 void cvtss2sd(XMMRegister dst, XMMRegister src); 1097 void cvtss2sd(XMMRegister dst, XMMRegister src);
1096 void cvtss2sd(XMMRegister dst, const Operand& src); 1098 void cvtss2sd(XMMRegister dst, const Operand& src);
1097 void cvtsd2ss(XMMRegister dst, XMMRegister src); 1099 void cvtsd2ss(XMMRegister dst, XMMRegister src);
1098 void cvtsd2ss(XMMRegister dst, const Operand& src); 1100 void cvtsd2ss(XMMRegister dst, const Operand& src);
1099 1101
1100 void cvtsd2si(Register dst, XMMRegister src); 1102 void cvtsd2si(Register dst, XMMRegister src);
1101 void cvtsd2siq(Register dst, XMMRegister src); 1103 void cvtsd2siq(Register dst, XMMRegister src);
1104 void cvtsd2siq(Register dst, const Operand& src);
1102 1105
1103 void addsd(XMMRegister dst, XMMRegister src); 1106 void addsd(XMMRegister dst, XMMRegister src);
1104 void addsd(XMMRegister dst, const Operand& src); 1107 void addsd(XMMRegister dst, const Operand& src);
1105 void subsd(XMMRegister dst, XMMRegister src); 1108 void subsd(XMMRegister dst, XMMRegister src);
1106 void subsd(XMMRegister dst, const Operand& src); 1109 void subsd(XMMRegister dst, const Operand& src);
1107 void mulsd(XMMRegister dst, XMMRegister src); 1110 void mulsd(XMMRegister dst, XMMRegister src);
1108 void mulsd(XMMRegister dst, const Operand& src); 1111 void mulsd(XMMRegister dst, const Operand& src);
1109 void divsd(XMMRegister dst, XMMRegister src); 1112 void divsd(XMMRegister dst, XMMRegister src);
1110 void divsd(XMMRegister dst, const Operand& src); 1113 void divsd(XMMRegister dst, const Operand& src);
1111 1114
(...skipping 22 matching lines...) Expand all
1134 void extractps(Register dst, XMMRegister src, byte imm8); 1137 void extractps(Register dst, XMMRegister src, byte imm8);
1135 1138
1136 void pextrd(Register dst, XMMRegister src, int8_t imm8); 1139 void pextrd(Register dst, XMMRegister src, int8_t imm8);
1137 1140
1138 void pinsrd(XMMRegister dst, Register src, int8_t imm8); 1141 void pinsrd(XMMRegister dst, Register src, int8_t imm8);
1139 void pinsrd(XMMRegister dst, const Operand& src, int8_t imm8); 1142 void pinsrd(XMMRegister dst, const Operand& src, int8_t imm8);
1140 1143
1141 void roundss(XMMRegister dst, XMMRegister src, RoundingMode mode); 1144 void roundss(XMMRegister dst, XMMRegister src, RoundingMode mode);
1142 void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode); 1145 void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode);
1143 1146
1147 void ldmxcsr(const Operand& dst);
1148 void stmxcsr(const Operand& dst);
1149
1144 // AVX instruction 1150 // AVX instruction
1145 void vfmadd132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { 1151 void vfmadd132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1146 vfmasd(0x99, dst, src1, src2); 1152 vfmasd(0x99, dst, src1, src2);
1147 } 1153 }
1148 void vfmadd213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { 1154 void vfmadd213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1149 vfmasd(0xa9, dst, src1, src2); 1155 vfmasd(0xa9, dst, src1, src2);
1150 } 1156 }
1151 void vfmadd231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { 1157 void vfmadd231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1152 vfmasd(0xb9, dst, src1, src2); 1158 vfmasd(0xb9, dst, src1, src2);
1153 } 1159 }
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
1393 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW0); 1399 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW0);
1394 } 1400 }
1395 void vcvttss2siq(Register dst, XMMRegister src) { 1401 void vcvttss2siq(Register dst, XMMRegister src) {
1396 XMMRegister idst = {dst.code()}; 1402 XMMRegister idst = {dst.code()};
1397 vsd(0x2c, idst, xmm0, src, kF3, k0F, kW1); 1403 vsd(0x2c, idst, xmm0, src, kF3, k0F, kW1);
1398 } 1404 }
1399 void vcvttss2siq(Register dst, const Operand& src) { 1405 void vcvttss2siq(Register dst, const Operand& src) {
1400 XMMRegister idst = {dst.code()}; 1406 XMMRegister idst = {dst.code()};
1401 vsd(0x2c, idst, xmm0, src, kF3, k0F, kW1); 1407 vsd(0x2c, idst, xmm0, src, kF3, k0F, kW1);
1402 } 1408 }
1409 void vcvtss2siq(Register dst, XMMRegister src) {
1410 XMMRegister idst = {dst.code()};
1411 vsd(0x2d, idst, xmm0, src, kF3, k0F, kW1);
1412 }
1413 void vcvtss2siq(Register dst, const Operand& src) {
1414 XMMRegister idst = {dst.code()};
1415 vsd(0x2d, idst, xmm0, src, kF3, k0F, kW1);
1416 }
1403 void vcvttsd2siq(Register dst, XMMRegister src) { 1417 void vcvttsd2siq(Register dst, XMMRegister src) {
1404 XMMRegister idst = {dst.code()}; 1418 XMMRegister idst = {dst.code()};
1405 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW1); 1419 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW1);
1406 } 1420 }
1407 void vcvttsd2siq(Register dst, const Operand& src) { 1421 void vcvttsd2siq(Register dst, const Operand& src) {
1408 XMMRegister idst = {dst.code()}; 1422 XMMRegister idst = {dst.code()};
1409 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW1); 1423 vsd(0x2c, idst, xmm0, src, kF2, k0F, kW1);
1410 } 1424 }
1425 void vcvtsd2siq(Register dst, XMMRegister src) {
1426 XMMRegister idst = {dst.code()};
1427 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW1);
1428 }
1429 void vcvtsd2siq(Register dst, const Operand& src) {
1430 XMMRegister idst = {dst.code()};
1431 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW1);
1432 }
1411 void vcvtsd2si(Register dst, XMMRegister src) { 1433 void vcvtsd2si(Register dst, XMMRegister src) {
1412 XMMRegister idst = {dst.code()}; 1434 XMMRegister idst = {dst.code()};
1413 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW0); 1435 vsd(0x2d, idst, xmm0, src, kF2, k0F, kW0);
1414 } 1436 }
1415 void vucomisd(XMMRegister dst, XMMRegister src) { 1437 void vucomisd(XMMRegister dst, XMMRegister src) {
1416 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); 1438 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG);
1417 } 1439 }
1418 void vucomisd(XMMRegister dst, const Operand& src) { 1440 void vucomisd(XMMRegister dst, const Operand& src) {
1419 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG); 1441 vsd(0x2e, dst, xmm0, src, k66, k0F, kWIG);
1420 } 1442 }
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
2189 Assembler* assembler_; 2211 Assembler* assembler_;
2190 #ifdef DEBUG 2212 #ifdef DEBUG
2191 int space_before_; 2213 int space_before_;
2192 #endif 2214 #endif
2193 }; 2215 };
2194 2216
2195 } // namespace internal 2217 } // namespace internal
2196 } // namespace v8 2218 } // namespace v8
2197 2219
2198 #endif // V8_X64_ASSEMBLER_X64_H_ 2220 #endif // V8_X64_ASSEMBLER_X64_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698