[mips][FastISel] Simple refactoring of MipsFastISel::emitLogicalOP(). NFC.

llvm-svn: 249580
This commit is contained in:
Vasileios Kalintiris 2015-10-07 18:14:24 +00:00
parent 7c6ac2b8f9
commit daad571ba4
1 changed files with 17 additions and 13 deletions

View File

@ -236,32 +236,36 @@ unsigned MipsFastISel::emitLogicalOp(unsigned ISDOpc, MVT RetVT,
std::swap(LHS, RHS);
unsigned Opc;
if (ISDOpc == ISD::AND) {
Opc = Mips::AND;
} else if (ISDOpc == ISD::OR) {
Opc = Mips::OR;
} else if (ISDOpc == ISD::XOR) {
Opc = Mips::XOR;
} else
switch (ISDOpc) {
case ISD::AND:
Opc = Mips::AND;
break;
case ISD::OR:
Opc = Mips::OR;
break;
case ISD::XOR:
Opc = Mips::XOR;
break;
default:
llvm_unreachable("unexpected opcode");
}
unsigned LHSReg = getRegForValue(LHS);
unsigned ResultReg = createResultReg(&Mips::GPR32RegClass);
if (!ResultReg)
return 0;
unsigned RHSReg;
if (!LHSReg)
return 0;
unsigned RHSReg;
if (const auto *C = dyn_cast<ConstantInt>(RHS))
RHSReg = materializeInt(C, MVT::i32);
else
RHSReg = getRegForValue(RHS);
if (!RHSReg)
return 0;
unsigned ResultReg = createResultReg(&Mips::GPR32RegClass);
if (!ResultReg)
return 0;
emitInst(Opc, ResultReg).addReg(LHSReg).addReg(RHSReg);
return ResultReg;
}