Index: src/compiler/mips64/code-generator-mips64.cc |
diff --git a/src/compiler/mips64/code-generator-mips64.cc b/src/compiler/mips64/code-generator-mips64.cc |
index a9f99614c55f2c63a1c9913f705de311b5f366d2..85b2ffb38f951ed7a1c8fd316b384a14854c5275 100644 |
--- a/src/compiler/mips64/code-generator-mips64.cc |
+++ b/src/compiler/mips64/code-generator-mips64.cc |
@@ -586,11 +586,9 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
__ Dror(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); |
break; |
case kMips64Tst: |
- case kMips64Tst32: |
// Pseudo-instruction used for cmp/branch. No opcode emitted here. |
break; |
case kMips64Cmp: |
- case kMips64Cmp32: |
// Pseudo-instruction used for cmp/branch. No opcode emitted here. |
break; |
case kMips64Mov: |
@@ -826,25 +824,13 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { |
// implemented differently than on the other arch's. The compare operations |
// emit mips psuedo-instructions, which are handled here by branch |
paul.l...
2015/03/13 17:05:31
nit: Here is another place I misspelled pseudo, pl
|
// instructions that do the actual comparison. Essential that the input |
- // registers to compare psuedo-op are not modified before this branch op, as |
+ // registers to compare pseudo-op are not modified before this branch op, as |
// they are tested here. |
- // TODO(plind): Add CHECK() to ensure that test/cmp and this branch were |
- // not separated by other instructions. |
if (instr->arch_opcode() == kMips64Tst) { |
cc = FlagsConditionToConditionTst(branch->condition); |
__ And(at, i.InputRegister(0), i.InputOperand(1)); |
__ Branch(tlabel, cc, at, Operand(zero_reg)); |
- } else if (instr->arch_opcode() == kMips64Tst32) { |
- cc = FlagsConditionToConditionTst(branch->condition); |
- // Zero-extend registers on MIPS64 only 64-bit operand |
- // branch and compare op. is available. |
- // This is a disadvantage to perform 32-bit operation on MIPS64. |
- // Try to force globally in front-end Word64 representation to be preferred |
- // for MIPS64 even for Word32. |
- __ And(at, i.InputRegister(0), i.InputOperand(1)); |
- __ Dext(at, at, 0, 32); |
- __ Branch(tlabel, cc, at, Operand(zero_reg)); |
} else if (instr->arch_opcode() == kMips64Dadd || |
instr->arch_opcode() == kMips64Dsub) { |
cc = FlagsConditionToConditionOvf(branch->condition); |
@@ -857,42 +843,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { |
__ Branch(tlabel, cc, i.InputRegister(0), i.InputOperand(1)); |
if (!branch->fallthru) __ Branch(flabel); // no fallthru to flabel. |
- |
- } else if (instr->arch_opcode() == kMips64Cmp32) { |
- cc = FlagsConditionToConditionCmp(branch->condition); |
- |
- switch (branch->condition) { |
- case kEqual: |
- case kNotEqual: |
- case kSignedLessThan: |
- case kSignedGreaterThanOrEqual: |
- case kSignedLessThanOrEqual: |
- case kSignedGreaterThan: |
- // Sign-extend registers on MIPS64 only 64-bit operand |
- // branch and compare op. is available. |
- __ sll(i.InputRegister(0), i.InputRegister(0), 0); |
- if (instr->InputAt(1)->IsRegister()) { |
- __ sll(i.InputRegister(1), i.InputRegister(1), 0); |
- } |
- break; |
- case kUnsignedLessThan: |
- case kUnsignedGreaterThanOrEqual: |
- case kUnsignedLessThanOrEqual: |
- case kUnsignedGreaterThan: |
- // Zero-extend registers on MIPS64 only 64-bit operand |
- // branch and compare op. is available. |
- __ Dext(i.InputRegister(0), i.InputRegister(0), 0, 32); |
- if (instr->InputAt(1)->IsRegister()) { |
- __ Dext(i.InputRegister(1), i.InputRegister(1), 0, 32); |
- } |
- break; |
- default: |
- UNSUPPORTED_COND(kMips64Cmp, branch->condition); |
- break; |
- } |
- __ Branch(tlabel, cc, i.InputRegister(0), i.InputOperand(1)); |
- |
- if (!branch->fallthru) __ Branch(flabel); // no fallthru to flabel. |
} else if (instr->arch_opcode() == kMips64CmpD) { |
// TODO(dusmil) optimize unordered checks to use less instructions |
// even if we have to unfold BranchF macro. |
@@ -966,14 +916,6 @@ void CodeGenerator::AssembleArchBoolean(Instruction* instr, |
__ And(at, i.InputRegister(0), i.InputOperand(1)); |
__ Branch(USE_DELAY_SLOT, &done, cc, at, Operand(zero_reg)); |
__ li(result, Operand(1)); // In delay slot. |
- } else if (instr->arch_opcode() == kMips64Tst32) { |
- cc = FlagsConditionToConditionTst(condition); |
- // Zero-extend register on MIPS64 only 64-bit operand |
- // branch and compare op. is available. |
- __ And(at, i.InputRegister(0), i.InputOperand(1)); |
- __ Dext(at, at, 0, 32); |
- __ Branch(USE_DELAY_SLOT, &done, cc, at, Operand(zero_reg)); |
- __ li(result, Operand(1)); // In delay slot. |
} else if (instr->arch_opcode() == kMips64Dadd || |
instr->arch_opcode() == kMips64Dsub) { |
cc = FlagsConditionToConditionOvf(condition); |
@@ -987,42 +929,6 @@ void CodeGenerator::AssembleArchBoolean(Instruction* instr, |
cc = FlagsConditionToConditionCmp(condition); |
__ Branch(USE_DELAY_SLOT, &done, cc, left, right); |
__ li(result, Operand(1)); // In delay slot. |
- } else if (instr->arch_opcode() == kMips64Cmp32) { |
- Register left = i.InputRegister(0); |
- Operand right = i.InputOperand(1); |
- cc = FlagsConditionToConditionCmp(condition); |
- |
- switch (condition) { |
- case kEqual: |
- case kNotEqual: |
- case kSignedLessThan: |
- case kSignedGreaterThanOrEqual: |
- case kSignedLessThanOrEqual: |
- case kSignedGreaterThan: |
- // Sign-extend registers on MIPS64 only 64-bit operand |
- // branch and compare op. is available. |
- __ sll(left, left, 0); |
- if (instr->InputAt(1)->IsRegister()) { |
- __ sll(i.InputRegister(1), i.InputRegister(1), 0); |
- } |
- break; |
- case kUnsignedLessThan: |
- case kUnsignedGreaterThanOrEqual: |
- case kUnsignedLessThanOrEqual: |
- case kUnsignedGreaterThan: |
- // Zero-extend registers on MIPS64 only 64-bit operand |
- // branch and compare op. is available. |
- __ Dext(left, left, 0, 32); |
- if (instr->InputAt(1)->IsRegister()) { |
- __ Dext(i.InputRegister(1), i.InputRegister(1), 0, 32); |
- } |
- break; |
- default: |
- UNSUPPORTED_COND(kMips64Cmp32, condition); |
- break; |
- } |
- __ Branch(USE_DELAY_SLOT, &done, cc, left, right); |
- __ li(result, Operand(1)); // In delay slot. |
} else if (instr->arch_opcode() == kMips64CmpD) { |
FPURegister left = i.InputDoubleRegister(0); |
FPURegister right = i.InputDoubleRegister(1); |