Chromium Code Reviews| Index: src/compiler/ia32/code-generator-ia32.cc |
| diff --git a/src/compiler/ia32/code-generator-ia32.cc b/src/compiler/ia32/code-generator-ia32.cc |
| index 944632e04fe9aa796ec739dd152f8dd376c1b8dc..d316eb72ef02c22f68272cd99fc3a211b80acf00 100644 |
| --- a/src/compiler/ia32/code-generator-ia32.cc |
| +++ b/src/compiler/ia32/code-generator-ia32.cc |
| @@ -528,17 +528,37 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
| } |
| break; |
| case kIA32Cmp: |
| - if (HasImmediateInput(instr, 1)) { |
| - __ cmp(i.InputOperand(0), i.InputImmediate(1)); |
| + if (AddressingModeField::decode(instr->opcode()) != kMode_None) { |
| + size_t index = 0; |
| + Operand memop = i.MemoryOperand(&index); |
|
Benedikt Meurer
2016/02/18 05:02:53
Nit: Please use "operand" instead of "memop" to be
epertoso
2016/02/18 10:58:29
Done.
|
| + if (HasImmediateInput(instr, index)) { |
| + __ cmp(memop, i.InputImmediate(index)); |
| + } else { |
| + __ cmp(memop, i.InputRegister(index)); |
| + } |
| } else { |
| - __ cmp(i.InputRegister(0), i.InputOperand(1)); |
| + if (HasImmediateInput(instr, 1)) { |
| + __ cmp(i.InputOperand(0), i.InputImmediate(1)); |
| + } else { |
| + __ cmp(i.InputRegister(0), i.InputOperand(1)); |
| + } |
| } |
| break; |
| case kIA32Test: |
| - if (HasImmediateInput(instr, 1)) { |
| - __ test(i.InputOperand(0), i.InputImmediate(1)); |
| + if (AddressingModeField::decode(instr->opcode()) != kMode_None) { |
| + size_t index = 0; |
| + Operand memop = i.MemoryOperand(&index); |
|
Benedikt Meurer
2016/02/18 05:02:53
Nit: Please use "operand" instead of "memop" to be
epertoso
2016/02/18 10:58:29
Done.
|
| + if (HasImmediateInput(instr, index)) { |
| + __ test(memop, i.InputImmediate(index)); |
| + } else { |
| + __ test(i.InputRegister(index), memop); |
| + } |
| } else { |
| - __ test(i.InputRegister(0), i.InputOperand(1)); |
| + if (HasImmediateInput(instr, 1)) { |
| + __ test(i.InputOperand(0), i.InputImmediate(1)); |
| + } else { |
| + __ test(i.InputRegister(0), i.InputOperand(1)); |
| + } |
| } |
| break; |
| case kIA32Imul: |