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_X64 | 9 #if V8_TARGET_ARCH_X64 |
10 | 10 |
(...skipping 2115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2126 AppendToBuffer("shufps %s, ", NameOfXMMRegister(regop)); | 2126 AppendToBuffer("shufps %s, ", NameOfXMMRegister(regop)); |
2127 current += PrintRightXMMOperand(current); | 2127 current += PrintRightXMMOperand(current); |
2128 AppendToBuffer(", %d", (*current) & 3); | 2128 AppendToBuffer(", %d", (*current) & 3); |
2129 current += 1; | 2129 current += 1; |
2130 } else if (opcode == 0x50) { | 2130 } else if (opcode == 0x50) { |
2131 // movmskps reg, xmm | 2131 // movmskps reg, xmm |
2132 int mod, regop, rm; | 2132 int mod, regop, rm; |
2133 get_modrm(*current, &mod, ®op, &rm); | 2133 get_modrm(*current, &mod, ®op, &rm); |
2134 AppendToBuffer("movmskps %s,", NameOfCPURegister(regop)); | 2134 AppendToBuffer("movmskps %s,", NameOfCPURegister(regop)); |
2135 current += PrintRightXMMOperand(current); | 2135 current += PrintRightXMMOperand(current); |
2136 | 2136 } else if (opcode == 0x70) { |
| 2137 int mod, regop, rm; |
| 2138 get_modrm(*current, &mod, ®op, &rm); |
| 2139 AppendToBuffer("pshufw %s, ", NameOfXMMRegister(regop)); |
| 2140 current += PrintRightXMMOperand(current); |
| 2141 AppendToBuffer(", %d", (*current) & 3); |
| 2142 current += 1; |
2137 } else if ((opcode & 0xF0) == 0x80) { | 2143 } else if ((opcode & 0xF0) == 0x80) { |
2138 // Jcc: Conditional jump (branch). | 2144 // Jcc: Conditional jump (branch). |
2139 current = data + JumpConditional(data); | 2145 current = data + JumpConditional(data); |
2140 | 2146 |
2141 } else if (opcode == 0xBE || opcode == 0xBF || opcode == 0xB6 || | 2147 } else if (opcode == 0xBE || opcode == 0xBF || opcode == 0xB6 || |
2142 opcode == 0xB7 || opcode == 0xAF) { | 2148 opcode == 0xB7 || opcode == 0xAF) { |
2143 // Size-extending moves, IMUL. | 2149 // Size-extending moves, IMUL. |
2144 current += PrintOperands(mnemonic, REG_OPER_OP_ORDER, current); | 2150 current += PrintOperands(mnemonic, REG_OPER_OP_ORDER, current); |
2145 | 2151 |
2146 } else if ((opcode & 0xF0) == 0x90) { | 2152 } else if ((opcode & 0xF0) == 0x90) { |
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2797 for (int i = 6 - static_cast<int>(pc - prev_pc); i >= 0; i--) { | 2803 for (int i = 6 - static_cast<int>(pc - prev_pc); i >= 0; i--) { |
2798 fprintf(f, " "); | 2804 fprintf(f, " "); |
2799 } | 2805 } |
2800 fprintf(f, " %s\n", buffer.start()); | 2806 fprintf(f, " %s\n", buffer.start()); |
2801 } | 2807 } |
2802 } | 2808 } |
2803 | 2809 |
2804 } // namespace disasm | 2810 } // namespace disasm |
2805 | 2811 |
2806 #endif // V8_TARGET_ARCH_X64 | 2812 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |