Use BuildMI more, Create*Instruction less
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5291 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/SparcV9/SparcV9InstrSelection.cpp b/lib/Target/SparcV9/SparcV9InstrSelection.cpp
index dbcce3f..05208a4 100644
--- a/lib/Target/SparcV9/SparcV9InstrSelection.cpp
+++ b/lib/Target/SparcV9/SparcV9InstrSelection.cpp
@@ -303,11 +303,7 @@
{
MachineOpCode opCode = ChooseConvertFPToIntInstr(destTID, srcVal->getType());
assert(opCode != INVALID_OPCODE && "Expected to need conversion!");
-
- MachineInstr* M = new MachineInstr(opCode);
- M->SetMachineOperandVal(0, MachineOperand::MO_VirtualRegister, srcVal);
- M->SetMachineOperandVal(1, MachineOperand::MO_VirtualRegister, destVal);
- return M;
+ return BuildMI(opCode, 2).addReg(srcVal).addRegDef(destVal);
}
// CreateCodeToConvertFloatToInt: Convert FP value to signed or unsigned integer
@@ -367,13 +363,9 @@
CreateMovFloatInstruction(const InstructionNode* instrNode,
const Type* resultType)
{
- MachineInstr* minstr = new MachineInstr((resultType == Type::FloatTy)
- ? FMOVS : FMOVD);
- minstr->SetMachineOperandVal(0, MachineOperand::MO_VirtualRegister,
- instrNode->leftChild()->getValue());
- minstr->SetMachineOperandVal(1, MachineOperand::MO_VirtualRegister,
- instrNode->getValue());
- return minstr;
+ return BuildMI((resultType == Type::FloatTy) ? FMOVS : FMOVD, 2)
+ .addReg(instrNode->leftChild()->getValue())
+ .addRegDef(instrNode->getValue());
}
static inline MachineInstr*
@@ -501,11 +493,8 @@
CreateIntNegInstruction(const TargetMachine& target,
Value* vreg)
{
- MachineInstr* minstr = new MachineInstr(SUB);
- minstr->SetMachineOperandReg(0, target.getRegInfo().getZeroRegNum());
- minstr->SetMachineOperandVal(1, MachineOperand::MO_VirtualRegister, vreg);
- minstr->SetMachineOperandVal(2, MachineOperand::MO_VirtualRegister, vreg);
- return minstr;
+ return BuildMI(SUB, 3).addMReg(target.getRegInfo().getZeroRegNum())
+ .addReg(vreg).addRegDef(vreg);
}
@@ -600,15 +589,16 @@
C = -C;
}
- if (C == 0 || C == 1)
- {
- cost = target.getInstrInfo().minLatency(ADD);
- unsigned ZeroReg = target.getRegInfo().getZeroRegNum();
- MachineInstr* M = (C == 0)
- ? Create3OperandInstr_Reg(ADD, ZeroReg, ZeroReg, destVal)
- : Create3OperandInstr_Reg(ADD, lval, ZeroReg, destVal);
- mvec.push_back(M);
- }
+ if (C == 0 || C == 1) {
+ cost = target.getInstrInfo().minLatency(ADD);
+ unsigned Zero = target.getRegInfo().getZeroRegNum();
+ MachineInstr* M;
+ if (C == 0)
+ M = BuildMI(ADD,3).addMReg(Zero).addMReg(Zero).addRegDef(destVal);
+ else
+ M = BuildMI(ADD,3).addReg(lval).addMReg(Zero).addRegDef(destVal);
+ mvec.push_back(M);
+ }
else if (isPowerOf2(C, pow))
{
unsigned opSize = target.getTargetData().getTypeSize(resultType);
@@ -634,8 +624,7 @@
MachineOpCode opCode = (dval < 0)
? (resultType == Type::FloatTy? FNEGS : FNEGD)
: (resultType == Type::FloatTy? FMOVS : FMOVD);
- MachineInstr* M = Create2OperandInstr(opCode, lval, destVal);
- mvec.push_back(M);
+ mvec.push_back(BuildMI(opCode,2).addReg(lval).addRegDef(destVal));
}
}
}
@@ -695,11 +684,8 @@
MachineOpCode mulOp = ((forceMulOp != INVALID_MACHINE_OPCODE)
? forceMulOp
: ChooseMulInstructionByType(destVal->getType()));
- MachineInstr* M = new MachineInstr(mulOp);
- M->SetMachineOperandVal(0, MachineOperand::MO_VirtualRegister, lval);
- M->SetMachineOperandVal(1, MachineOperand::MO_VirtualRegister, rval);
- M->SetMachineOperandVal(2, MachineOperand::MO_VirtualRegister, destVal);
- mvec.push_back(M);
+ mvec.push_back(BuildMI(mulOp, 3).addReg(lval).addReg(rval)
+ .addRegDef(destVal));
}
}
@@ -1438,9 +1424,9 @@
{ // First find the unary operand. It may be left or right, usually right.
Value* notArg = BinaryOperator::getNotArgument(
cast<BinaryOperator>(subtreeRoot->getInstruction()));
- mvec.push_back(Create3OperandInstr_Reg(XNOR, notArg,
- target.getRegInfo().getZeroRegNum(),
- subtreeRoot->getValue()));
+ unsigned ZeroReg = target.getRegInfo().getZeroRegNum();
+ mvec.push_back(BuildMI(XNOR, 3).addReg(notArg).addMReg(ZeroReg)
+ .addRegDef(subtreeRoot->getValue()));
break;
}
@@ -2010,7 +1996,7 @@
// Use JMPL for indirect calls.
//
if (isa<Function>(callee)) // direct function call
- M = Create1OperandInstr_Addr(CALL, callee);
+ M = BuildMI(CALL, 1).addPCDisp(callee);
else // indirect function call
M = BuildMI(JMPLCALL,
3).addReg(callee).addSImm((int64_t)0).addReg(retAddrReg);