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

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

Issue 773783002: [ia32] Introduce FMA3 instructions on scalar data elements. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 6 years 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 | « no previous file | 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 910 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 void fnclex(); 921 void fnclex();
922 922
923 void frndint(); 923 void frndint();
924 924
925 void sahf(); 925 void sahf();
926 void setcc(Condition cc, Register reg); 926 void setcc(Condition cc, Register reg);
927 927
928 void cpuid(); 928 void cpuid();
929 929
930 // SSE instructions 930 // SSE instructions
931 void addss(XMMRegister dst, XMMRegister src) { addss(dst, Operand(src)); }
932 void addss(XMMRegister dst, const Operand& src);
933 void subss(XMMRegister dst, XMMRegister src) { subss(dst, Operand(src)); }
934 void subss(XMMRegister dst, const Operand& src);
935 void mulss(XMMRegister dst, XMMRegister src) { mulss(dst, Operand(src)); }
936 void mulss(XMMRegister dst, const Operand& src);
937 void divss(XMMRegister dst, XMMRegister src) { divss(dst, Operand(src)); }
938 void divss(XMMRegister dst, const Operand& src);
939
940 void ucomiss(XMMRegister dst, XMMRegister src) { ucomiss(dst, Operand(src)); }
941 void ucomiss(XMMRegister dst, const Operand& src);
931 void movaps(XMMRegister dst, XMMRegister src); 942 void movaps(XMMRegister dst, XMMRegister src);
932 void shufps(XMMRegister dst, XMMRegister src, byte imm8); 943 void shufps(XMMRegister dst, XMMRegister src, byte imm8);
933 944
934 void andps(XMMRegister dst, const Operand& src); 945 void andps(XMMRegister dst, const Operand& src);
935 void andps(XMMRegister dst, XMMRegister src) { andps(dst, Operand(src)); } 946 void andps(XMMRegister dst, XMMRegister src) { andps(dst, Operand(src)); }
936 void xorps(XMMRegister dst, const Operand& src); 947 void xorps(XMMRegister dst, const Operand& src);
937 void xorps(XMMRegister dst, XMMRegister src) { xorps(dst, Operand(src)); } 948 void xorps(XMMRegister dst, XMMRegister src) { xorps(dst, Operand(src)); }
938 void orps(XMMRegister dst, const Operand& src); 949 void orps(XMMRegister dst, const Operand& src);
939 void orps(XMMRegister dst, XMMRegister src) { orps(dst, Operand(src)); } 950 void orps(XMMRegister dst, XMMRegister src) { orps(dst, Operand(src)); }
940 951
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 void pinsrd(XMMRegister dst, Register src, int8_t offset) { 1057 void pinsrd(XMMRegister dst, Register src, int8_t offset) {
1047 pinsrd(dst, Operand(src), offset); 1058 pinsrd(dst, Operand(src), offset);
1048 } 1059 }
1049 void pinsrd(XMMRegister dst, const Operand& src, int8_t offset); 1060 void pinsrd(XMMRegister dst, const Operand& src, int8_t offset);
1050 1061
1051 // Parallel XMM operations. 1062 // Parallel XMM operations.
1052 void movntdqa(XMMRegister dst, const Operand& src); 1063 void movntdqa(XMMRegister dst, const Operand& src);
1053 void movntdq(const Operand& dst, XMMRegister src); 1064 void movntdq(const Operand& dst, XMMRegister src);
1054 1065
1055 // AVX instructions 1066 // AVX instructions
1067 void vfmadd132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1068 vfmadd132sd(dst, src1, Operand(src2));
1069 }
1070 void vfmadd213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1071 vfmadd213sd(dst, src1, Operand(src2));
1072 }
1073 void vfmadd231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1074 vfmadd231sd(dst, src1, Operand(src2));
1075 }
1076 void vfmadd132sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1077 vfmasd(0x99, dst, src1, src2);
1078 }
1079 void vfmadd213sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1080 vfmasd(0xa9, dst, src1, src2);
1081 }
1082 void vfmadd231sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1083 vfmasd(0xb9, dst, src1, src2);
1084 }
1085 void vfmsub132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1086 vfmsub132sd(dst, src1, Operand(src2));
1087 }
1088 void vfmsub213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1089 vfmsub213sd(dst, src1, Operand(src2));
1090 }
1091 void vfmsub231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1092 vfmsub231sd(dst, src1, Operand(src2));
1093 }
1094 void vfmsub132sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1095 vfmasd(0x9b, dst, src1, src2);
1096 }
1097 void vfmsub213sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1098 vfmasd(0xab, dst, src1, src2);
1099 }
1100 void vfmsub231sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1101 vfmasd(0xbb, dst, src1, src2);
1102 }
1103 void vfnmadd132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1104 vfnmadd132sd(dst, src1, Operand(src2));
1105 }
1106 void vfnmadd213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1107 vfnmadd213sd(dst, src1, Operand(src2));
1108 }
1109 void vfnmadd231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1110 vfnmadd231sd(dst, src1, Operand(src2));
1111 }
1112 void vfnmadd132sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1113 vfmasd(0x9d, dst, src1, src2);
1114 }
1115 void vfnmadd213sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1116 vfmasd(0xad, dst, src1, src2);
1117 }
1118 void vfnmadd231sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1119 vfmasd(0xbd, dst, src1, src2);
1120 }
1121 void vfnmsub132sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1122 vfnmsub132sd(dst, src1, Operand(src2));
1123 }
1124 void vfnmsub213sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1125 vfnmsub213sd(dst, src1, Operand(src2));
1126 }
1127 void vfnmsub231sd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1128 vfnmsub231sd(dst, src1, Operand(src2));
1129 }
1130 void vfnmsub132sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1131 vfmasd(0x9f, dst, src1, src2);
1132 }
1133 void vfnmsub213sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1134 vfmasd(0xaf, dst, src1, src2);
1135 }
1136 void vfnmsub231sd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1137 vfmasd(0xbf, dst, src1, src2);
1138 }
1139 void vfmasd(byte op, XMMRegister dst, XMMRegister src1, const Operand& src2);
1140
1141 void vfmadd132ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1142 vfmadd132ss(dst, src1, Operand(src2));
1143 }
1144 void vfmadd213ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1145 vfmadd213ss(dst, src1, Operand(src2));
1146 }
1147 void vfmadd231ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1148 vfmadd231ss(dst, src1, Operand(src2));
1149 }
1150 void vfmadd132ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1151 vfmass(0x99, dst, src1, src2);
1152 }
1153 void vfmadd213ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1154 vfmass(0xa9, dst, src1, src2);
1155 }
1156 void vfmadd231ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1157 vfmass(0xb9, dst, src1, src2);
1158 }
1159 void vfmsub132ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1160 vfmsub132ss(dst, src1, Operand(src2));
1161 }
1162 void vfmsub213ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1163 vfmsub213ss(dst, src1, Operand(src2));
1164 }
1165 void vfmsub231ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1166 vfmsub231ss(dst, src1, Operand(src2));
1167 }
1168 void vfmsub132ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1169 vfmass(0x9b, dst, src1, src2);
1170 }
1171 void vfmsub213ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1172 vfmass(0xab, dst, src1, src2);
1173 }
1174 void vfmsub231ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1175 vfmass(0xbb, dst, src1, src2);
1176 }
1177 void vfnmadd132ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1178 vfnmadd132ss(dst, src1, Operand(src2));
1179 }
1180 void vfnmadd213ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1181 vfnmadd213ss(dst, src1, Operand(src2));
1182 }
1183 void vfnmadd231ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1184 vfnmadd231ss(dst, src1, Operand(src2));
1185 }
1186 void vfnmadd132ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1187 vfmass(0x9d, dst, src1, src2);
1188 }
1189 void vfnmadd213ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1190 vfmass(0xad, dst, src1, src2);
1191 }
1192 void vfnmadd231ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1193 vfmass(0xbd, dst, src1, src2);
1194 }
1195 void vfnmsub132ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1196 vfnmsub132ss(dst, src1, Operand(src2));
1197 }
1198 void vfnmsub213ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1199 vfnmsub213ss(dst, src1, Operand(src2));
1200 }
1201 void vfnmsub231ss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1202 vfnmsub231ss(dst, src1, Operand(src2));
1203 }
1204 void vfnmsub132ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1205 vfmass(0x9f, dst, src1, src2);
1206 }
1207 void vfnmsub213ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1208 vfmass(0xaf, dst, src1, src2);
1209 }
1210 void vfnmsub231ss(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1211 vfmass(0xbf, dst, src1, src2);
1212 }
1213 void vfmass(byte op, XMMRegister dst, XMMRegister src1, const Operand& src2);
1214
1056 void vaddsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { 1215 void vaddsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1057 vaddsd(dst, src1, Operand(src2)); 1216 vaddsd(dst, src1, Operand(src2));
1058 } 1217 }
1059 void vaddsd(XMMRegister dst, XMMRegister src1, const Operand& src2) { 1218 void vaddsd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
1060 vsd(0x58, dst, src1, src2); 1219 vsd(0x58, dst, src1, src2);
1061 } 1220 }
1062 void vsubsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) { 1221 void vsubsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
1063 vsubsd(dst, src1, Operand(src2)); 1222 vsubsd(dst, src1, Operand(src2));
1064 } 1223 }
1065 void vsubsd(XMMRegister dst, XMMRegister src1, const Operand& src2) { 1224 void vsubsd(XMMRegister dst, XMMRegister src1, const Operand& src2) {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1237 private: 1396 private:
1238 Assembler* assembler_; 1397 Assembler* assembler_;
1239 #ifdef DEBUG 1398 #ifdef DEBUG
1240 int space_before_; 1399 int space_before_;
1241 #endif 1400 #endif
1242 }; 1401 };
1243 1402
1244 } } // namespace v8::internal 1403 } } // namespace v8::internal
1245 1404
1246 #endif // V8_IA32_ASSEMBLER_IA32_H_ 1405 #endif // V8_IA32_ASSEMBLER_IA32_H_
OLDNEW
« no previous file with comments | « no previous file | src/ia32/assembler-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698