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

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

Issue 2771513002: Add pshufw instruction, fix inconsistencies with pextrw instruction. (Closed)
Patch Set: Created 3 years, 9 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 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
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, &regop, &rm); 2133 get_modrm(*current, &mod, &regop, &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, &regop, &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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698