Commit 9182813f authored by Akos Palfi's avatar Akos Palfi

MIPS: [turbofan] Clean up and factor out branch generation logic.

Port aed26c05a50b2a1257ef8accc67143825f2e1f60

BUG=
R=paul.lind@imgtec.com

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

Cr-Commit-Position: refs/heads/master@{#25451}
parent ad86a1a2
......@@ -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));
......
......@@ -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());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment