MIPS: [turbofan] Clean up and factor out branch generation logic.
authorAkos Palfi <akos.palfi@imgtec.com>
Fri, 21 Nov 2014 01:15:35 +0000 (02:15 +0100)
committerAkos Palfi <akos.palfi@imgtec.com>
Fri, 21 Nov 2014 01:16:54 +0000 (01:16 +0000)
Port aed26c05a50b2a1257ef8accc67143825f2e1f60

BUG=
R=paul.lind@imgtec.com

Review URL: https://codereview.chromium.org/742243003

Cr-Commit-Position: refs/heads/master@{#25451}

src/compiler/mips/code-generator-mips.cc
src/compiler/mips64/code-generator-mips64.cc

index a49be3939667f32ad6a9590baabc189f1b317501..4eb372a7800be2be7a6448bfeba6c2aa71acf226 100644 (file)
@@ -391,8 +391,7 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
   UNIMPLEMENTED();
 
 // Assembles branches after an instruction.
-void CodeGenerator::AssembleArchBranch(Instruction* instr,
-                                       FlagsCondition condition) {
+void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) {
   MipsOperandConverter i(this, instr);
   Label* tlabel = branch->true_label;
   Label* flabel = branch->false_label;
@@ -416,7 +415,7 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr,
         cc = eq;
         break;
       default:
-        UNSUPPORTED_COND(kMipsTst, condition);
+        UNSUPPORTED_COND(kMipsTst, branch->condition);
         break;
     }
     __ And(at, i.InputRegister(0), i.InputOperand(1));
index c623045305813ecf8adb7ce3a88e3e0f22c5f53d..332afb8af3be6f7d8b91132d5600f692138a49dd 100644 (file)
@@ -477,8 +477,7 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
   UNIMPLEMENTED();
 
 // Assembles branches after an instruction.
-void CodeGenerator::AssembleArchBranch(Instruction* instr,
-                                       FlagsCondition condition) {
+void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) {
   MipsOperandConverter i(this, instr);
   Label* tlabel = branch->true_label;
   Label* flabel = branch->false_label;
@@ -583,7 +582,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr,
     __ Branch(tlabel, cc, i.InputRegister(0), i.InputOperand(1));
 
     if (!branch->fallthru) __ Branch(flabel);  // no fallthru to flabel.
-    __ bind(&done);
 
   } else if (instr->arch_opcode() == kMips64Cmp32) {
     switch (branch->condition) {
@@ -654,7 +652,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr,
     __ Branch(tlabel, cc, i.InputRegister(0), i.InputOperand(1));
 
     if (!branch->fallthru) __ Branch(flabel);  // no fallthru to flabel.
-    __ bind(&done);
   } else if (instr->arch_opcode() == kMips64CmpD) {
     // TODO(dusmil) optimize unordered checks to use less instructions
     // even if we have to unfold BranchF macro.
@@ -689,8 +686,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr,
                i.InputDoubleRegister(1));
 
     if (!branch->fallthru) __ Branch(flabel);  // no fallthru to flabel.
-    __ bind(&done);
-
   } else {
     PrintF("AssembleArchBranch Unimplemented arch_opcode: %d\n",
            instr->arch_opcode());