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

Side by Side Diff: src/x64/disasm-x64.cc

Issue 1072343002: [x86] Introduce vandps/vandpd/vxorps/vxorpd. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 5 years, 8 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/x64/assembler-x64.cc ('k') | test/cctest/test-disasm-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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <assert.h> 5 #include <assert.h>
6 #include <stdarg.h> 6 #include <stdarg.h>
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include "src/v8.h" 9 #include "src/v8.h"
10 10
(...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 const char* mnem = conditional_code_suffix[cond]; 869 const char* mnem = conditional_code_suffix[cond];
870 AppendToBuffer("set%s%c ", mnem, operand_size_code()); 870 AppendToBuffer("set%s%c ", mnem, operand_size_code());
871 PrintRightByteOperand(data + 2); 871 PrintRightByteOperand(data + 2);
872 return 3; // includes 0x0F 872 return 3; // includes 0x0F
873 } 873 }
874 874
875 875
876 int DisassemblerX64::AVXInstruction(byte* data) { 876 int DisassemblerX64::AVXInstruction(byte* data) {
877 byte opcode = *data; 877 byte opcode = *data;
878 byte* current = data + 1; 878 byte* current = data + 1;
879 if (vex_0f() && opcode == 0x2e) { 879 if (vex_66() && vex_0f38()) {
880 int mod, regop, rm;
881 get_modrm(*current, &mod, &regop, &rm);
882 AppendToBuffer("vucomis%c %s,", vex_66() ? 'd' : 's',
883 NameOfXMMRegister(regop));
884 current += PrintRightXMMOperand(current);
885 } else if (vex_66() && vex_0f38()) {
886 int mod, regop, rm, vvvv = vex_vreg(); 880 int mod, regop, rm, vvvv = vex_vreg();
887 get_modrm(*current, &mod, &regop, &rm); 881 get_modrm(*current, &mod, &regop, &rm);
888 switch (opcode) { 882 switch (opcode) {
889 case 0x99: 883 case 0x99:
890 AppendToBuffer("vfmadd132s%c %s,%s,", float_size_code(), 884 AppendToBuffer("vfmadd132s%c %s,%s,", float_size_code(),
891 NameOfXMMRegister(regop), NameOfXMMRegister(vvvv)); 885 NameOfXMMRegister(regop), NameOfXMMRegister(vvvv));
892 current += PrintRightXMMOperand(current); 886 current += PrintRightXMMOperand(current);
893 break; 887 break;
894 case 0xa9: 888 case 0xa9:
895 AppendToBuffer("vfmadd213s%c %s,%s,", float_size_code(), 889 AppendToBuffer("vfmadd213s%c %s,%s,", float_size_code(),
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 AppendToBuffer(",%d", *current & 0x3f); 1124 AppendToBuffer(",%d", *current & 0x3f);
1131 break; 1125 break;
1132 default: 1126 default:
1133 UnimplementedInstruction(); 1127 UnimplementedInstruction();
1134 } 1128 }
1135 current += 1; 1129 current += 1;
1136 break; 1130 break;
1137 default: 1131 default:
1138 UnimplementedInstruction(); 1132 UnimplementedInstruction();
1139 } 1133 }
1134 } else if (vex_none() && vex_0f()) {
1135 int mod, regop, rm, vvvv = vex_vreg();
1136 get_modrm(*current, &mod, &regop, &rm);
1137 switch (opcode) {
1138 case 0x2e:
1139 AppendToBuffer("vucomiss %s,", NameOfXMMRegister(regop));
1140 current += PrintRightXMMOperand(current);
1141 break;
1142 case 0x54:
1143 AppendToBuffer("vandps %s,%s,", NameOfXMMRegister(regop),
1144 NameOfXMMRegister(vvvv));
1145 current += PrintRightXMMOperand(current);
1146 break;
1147 case 0x57:
1148 AppendToBuffer("vxorps %s,%s,", NameOfXMMRegister(regop),
1149 NameOfXMMRegister(vvvv));
1150 current += PrintRightXMMOperand(current);
1151 break;
1152 default:
1153 UnimplementedInstruction();
1154 }
1155 } else if (vex_66() && vex_0f()) {
1156 int mod, regop, rm, vvvv = vex_vreg();
1157 get_modrm(*current, &mod, &regop, &rm);
1158 switch (opcode) {
1159 case 0x2e:
1160 AppendToBuffer("vucomisd %s,", NameOfXMMRegister(regop));
1161 current += PrintRightXMMOperand(current);
1162 break;
1163 case 0x54:
1164 AppendToBuffer("vandpd %s,%s,", NameOfXMMRegister(regop),
1165 NameOfXMMRegister(vvvv));
1166 current += PrintRightXMMOperand(current);
1167 break;
1168 case 0x57:
1169 AppendToBuffer("vxorpd %s,%s,", NameOfXMMRegister(regop),
1170 NameOfXMMRegister(vvvv));
1171 current += PrintRightXMMOperand(current);
1172 break;
1173 default:
1174 UnimplementedInstruction();
1175 }
1176
1140 } else { 1177 } else {
1141 UnimplementedInstruction(); 1178 UnimplementedInstruction();
1142 } 1179 }
1143 1180
1144 return static_cast<int>(current - data); 1181 return static_cast<int>(current - data);
1145 } 1182 }
1146 1183
1147 1184
1148 // Returns number of bytes used, including *data. 1185 // Returns number of bytes used, including *data.
1149 int DisassemblerX64::FPUInstruction(byte* data) { 1186 int DisassemblerX64::FPUInstruction(byte* data) {
(...skipping 1166 matching lines...) Expand 10 before | Expand all | Expand 10 after
2316 for (int i = 6 - static_cast<int>(pc - prev_pc); i >= 0; i--) { 2353 for (int i = 6 - static_cast<int>(pc - prev_pc); i >= 0; i--) {
2317 fprintf(f, " "); 2354 fprintf(f, " ");
2318 } 2355 }
2319 fprintf(f, " %s\n", buffer.start()); 2356 fprintf(f, " %s\n", buffer.start());
2320 } 2357 }
2321 } 2358 }
2322 2359
2323 } // namespace disasm 2360 } // namespace disasm
2324 2361
2325 #endif // V8_TARGET_ARCH_X64 2362 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/x64/assembler-x64.cc ('k') | test/cctest/test-disasm-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698