OLD | NEW |
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 #if V8_TARGET_ARCH_IA32 | 9 #if V8_TARGET_ARCH_IA32 |
10 | 10 |
(...skipping 980 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
991 case 0x54: | 991 case 0x54: |
992 AppendToBuffer("vandps %s,%s,", NameOfXMMRegister(regop), | 992 AppendToBuffer("vandps %s,%s,", NameOfXMMRegister(regop), |
993 NameOfXMMRegister(vvvv)); | 993 NameOfXMMRegister(vvvv)); |
994 current += PrintRightXMMOperand(current); | 994 current += PrintRightXMMOperand(current); |
995 break; | 995 break; |
996 case 0x57: | 996 case 0x57: |
997 AppendToBuffer("vxorps %s,%s,", NameOfXMMRegister(regop), | 997 AppendToBuffer("vxorps %s,%s,", NameOfXMMRegister(regop), |
998 NameOfXMMRegister(vvvv)); | 998 NameOfXMMRegister(vvvv)); |
999 current += PrintRightXMMOperand(current); | 999 current += PrintRightXMMOperand(current); |
1000 break; | 1000 break; |
| 1001 case 0x58: |
| 1002 AppendToBuffer("vaddps %s,%s,", NameOfXMMRegister(regop), |
| 1003 NameOfXMMRegister(vvvv)); |
| 1004 current += PrintRightXMMOperand(current); |
| 1005 break; |
| 1006 case 0x59: |
| 1007 AppendToBuffer("vmulps %s,%s,", NameOfXMMRegister(regop), |
| 1008 NameOfXMMRegister(vvvv)); |
| 1009 current += PrintRightXMMOperand(current); |
| 1010 break; |
| 1011 case 0x5C: |
| 1012 AppendToBuffer("vsubps %s,%s,", NameOfXMMRegister(regop), |
| 1013 NameOfXMMRegister(vvvv)); |
| 1014 current += PrintRightXMMOperand(current); |
| 1015 break; |
| 1016 case 0x5D: |
| 1017 AppendToBuffer("vminps %s,%s,", NameOfXMMRegister(regop), |
| 1018 NameOfXMMRegister(vvvv)); |
| 1019 current += PrintRightXMMOperand(current); |
| 1020 break; |
| 1021 case 0x5E: |
| 1022 AppendToBuffer("vdivps %s,%s,", NameOfXMMRegister(regop), |
| 1023 NameOfXMMRegister(vvvv)); |
| 1024 current += PrintRightXMMOperand(current); |
| 1025 break; |
| 1026 case 0x5F: |
| 1027 AppendToBuffer("vmaxps %s,%s,", NameOfXMMRegister(regop), |
| 1028 NameOfXMMRegister(vvvv)); |
| 1029 current += PrintRightXMMOperand(current); |
| 1030 break; |
1001 default: | 1031 default: |
1002 UnimplementedInstruction(); | 1032 UnimplementedInstruction(); |
1003 } | 1033 } |
1004 } else if (vex_66() && vex_0f()) { | 1034 } else if (vex_66() && vex_0f()) { |
1005 int mod, regop, rm, vvvv = vex_vreg(); | 1035 int mod, regop, rm, vvvv = vex_vreg(); |
1006 get_modrm(*current, &mod, ®op, &rm); | 1036 get_modrm(*current, &mod, ®op, &rm); |
1007 switch (opcode) { | 1037 switch (opcode) { |
1008 case 0x54: | 1038 case 0x54: |
1009 AppendToBuffer("vandpd %s,%s,", NameOfXMMRegister(regop), | 1039 AppendToBuffer("vandpd %s,%s,", NameOfXMMRegister(regop), |
1010 NameOfXMMRegister(vvvv)); | 1040 NameOfXMMRegister(vvvv)); |
1011 current += PrintRightXMMOperand(current); | 1041 current += PrintRightXMMOperand(current); |
1012 break; | 1042 break; |
1013 case 0x57: | 1043 case 0x57: |
1014 AppendToBuffer("vxorpd %s,%s,", NameOfXMMRegister(regop), | 1044 AppendToBuffer("vxorpd %s,%s,", NameOfXMMRegister(regop), |
1015 NameOfXMMRegister(vvvv)); | 1045 NameOfXMMRegister(vvvv)); |
1016 current += PrintRightXMMOperand(current); | 1046 current += PrintRightXMMOperand(current); |
1017 break; | 1047 break; |
| 1048 case 0x58: |
| 1049 AppendToBuffer("vaddpd %s,%s,", NameOfXMMRegister(regop), |
| 1050 NameOfXMMRegister(vvvv)); |
| 1051 current += PrintRightXMMOperand(current); |
| 1052 break; |
| 1053 case 0x59: |
| 1054 AppendToBuffer("vmulpd %s,%s,", NameOfXMMRegister(regop), |
| 1055 NameOfXMMRegister(vvvv)); |
| 1056 current += PrintRightXMMOperand(current); |
| 1057 break; |
| 1058 case 0x5C: |
| 1059 AppendToBuffer("vsubpd %s,%s,", NameOfXMMRegister(regop), |
| 1060 NameOfXMMRegister(vvvv)); |
| 1061 current += PrintRightXMMOperand(current); |
| 1062 break; |
| 1063 case 0x5D: |
| 1064 AppendToBuffer("vminpd %s,%s,", NameOfXMMRegister(regop), |
| 1065 NameOfXMMRegister(vvvv)); |
| 1066 current += PrintRightXMMOperand(current); |
| 1067 break; |
| 1068 case 0x5E: |
| 1069 AppendToBuffer("vdivpd %s,%s,", NameOfXMMRegister(regop), |
| 1070 NameOfXMMRegister(vvvv)); |
| 1071 current += PrintRightXMMOperand(current); |
| 1072 break; |
| 1073 case 0x5F: |
| 1074 AppendToBuffer("vmaxpd %s,%s,", NameOfXMMRegister(regop), |
| 1075 NameOfXMMRegister(vvvv)); |
| 1076 current += PrintRightXMMOperand(current); |
| 1077 break; |
1018 case 0x71: | 1078 case 0x71: |
1019 AppendToBuffer("vps%sw %s,%s", sf_str[regop / 2], | 1079 AppendToBuffer("vps%sw %s,%s", sf_str[regop / 2], |
1020 NameOfXMMRegister(vvvv), NameOfXMMRegister(rm)); | 1080 NameOfXMMRegister(vvvv), NameOfXMMRegister(rm)); |
1021 current++; | 1081 current++; |
1022 AppendToBuffer(",%u", *current++); | 1082 AppendToBuffer(",%u", *current++); |
1023 break; | 1083 break; |
1024 case 0x72: | 1084 case 0x72: |
1025 AppendToBuffer("vps%sd %s,%s", sf_str[regop / 2], | 1085 AppendToBuffer("vps%sd %s,%s", sf_str[regop / 2], |
1026 NameOfXMMRegister(vvvv), NameOfXMMRegister(rm)); | 1086 NameOfXMMRegister(vvvv), NameOfXMMRegister(rm)); |
1027 current++; | 1087 current++; |
(...skipping 1333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2361 fprintf(f, " "); | 2421 fprintf(f, " "); |
2362 } | 2422 } |
2363 fprintf(f, " %s\n", buffer.start()); | 2423 fprintf(f, " %s\n", buffer.start()); |
2364 } | 2424 } |
2365 } | 2425 } |
2366 | 2426 |
2367 | 2427 |
2368 } // namespace disasm | 2428 } // namespace disasm |
2369 | 2429 |
2370 #endif // V8_TARGET_ARCH_IA32 | 2430 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |