aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-12-20 22:53:53 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-12-20 22:53:53 +0000
commit28d53a26cccd3620d2fdc50065e17b689455de47 (patch)
tree0c5e38415c1f1204dc9883948d962c3ef8bea752
parentbc87361d25fc6f09745ded50d3cb0b811e1eba1c (diff)
downloadexternal_llvm-28d53a26cccd3620d2fdc50065e17b689455de47.tar.gz
external_llvm-28d53a26cccd3620d2fdc50065e17b689455de47.tar.bz2
external_llvm-28d53a26cccd3620d2fdc50065e17b689455de47.zip
MachineInstrBuilderize NVPTX.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170794 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/NVPTX/VectorElementize.cpp69
1 files changed, 30 insertions, 39 deletions
diff --git a/lib/Target/NVPTX/VectorElementize.cpp b/lib/Target/NVPTX/VectorElementize.cpp
index e67e2e42b3..e5a6e1cf07 100644
--- a/lib/Target/NVPTX/VectorElementize.cpp
+++ b/lib/Target/NVPTX/VectorElementize.cpp
@@ -243,7 +243,7 @@ void VectorElementize::createLoadCopy(MachineFunction& F, MachineInstr *Instr,
std::vector<MachineInstr *>& copies) {
copies.push_back(F.CloneMachineInstr(Instr));
- MachineInstr *copy=copies[0];
+ MachineInstrBuilder copy(F, copies[0]);
copy->setDesc(InstrInfo->get(getScalarVersion(copy)));
// Remove the dest, that should be a vector operand.
@@ -260,12 +260,11 @@ void VectorElementize::createLoadCopy(MachineFunction& F, MachineInstr *Instr,
for (unsigned i=0, e=copy->getNumOperands(); i!=e; ++i)
copy->RemoveOperand(0);
- for (unsigned i=0, e=scalarRegs.size(); i!=e; ++i) {
- copy->addOperand(MachineOperand::CreateReg(scalarRegs[i], true));
- }
+ for (unsigned i=0, e=scalarRegs.size(); i!=e; ++i)
+ copy.addReg(scalarRegs[i], RegState::Define);
for (unsigned i=0, e=otherOperands.size(); i!=e; ++i)
- copy->addOperand(otherOperands[i]);
+ copy.addOperand(otherOperands[i]);
}
@@ -280,7 +279,7 @@ void VectorElementize::createStoreCopy(MachineFunction& F, MachineInstr *Instr,
std::vector<MachineInstr *>& copies) {
copies.push_back(F.CloneMachineInstr(Instr));
- MachineInstr *copy=copies[0];
+ MachineInstrBuilder copy(F, copies[0]);
copy->setDesc(InstrInfo->get(getScalarVersion(copy)));
MachineOperand src = copy->getOperand(0);
@@ -297,10 +296,10 @@ void VectorElementize::createStoreCopy(MachineFunction& F, MachineInstr *Instr,
copy->RemoveOperand(0);
for (unsigned i=0, e=scalarRegs.size(); i!=e; ++i)
- copy->addOperand(MachineOperand::CreateReg(scalarRegs[i], false));
+ copy.addReg(scalarRegs[i]);
for (unsigned i=0, e=otherOperands.size(); i!=e; ++i)
- copy->addOperand(otherOperands[i]);
+ copy.addOperand(otherOperands[i]);
}
///=============================================================================
@@ -327,8 +326,8 @@ void VectorElementize::createVecShuffle(MachineFunction& F, MachineInstr *Instr,
DebugLoc DL = Instr->getDebugLoc();
for (unsigned i=0; i<numcopies; i++) {
- MachineInstr *copy = BuildMI(F, DL,
- InstrInfo->get(getScalarVersion(Instr)), dest[i]);
+ MachineInstrBuilder copy =
+ BuildMI(F, DL, InstrInfo->get(getScalarVersion(Instr)), dest[i]);
MachineOperand which=Instr->getOperand(3+i);
assert(which.isImm() && "Shuffle operand not a constant");
@@ -336,9 +335,9 @@ void VectorElementize::createVecShuffle(MachineFunction& F, MachineInstr *Instr,
int elem=src%numcopies;
if (which.getImm() < numcopies)
- copy->addOperand(MachineOperand::CreateReg(src1[elem], false));
+ copy.addReg(src1[elem]);
else
- copy->addOperand(MachineOperand::CreateReg(src2[elem], false));
+ copy.addReg(src2[elem]);
copies.push_back(copy);
}
}
@@ -358,12 +357,9 @@ void VectorElementize::createVecExtract(MachineFunction& F, MachineInstr *Instr,
assert(which.isImm() && "Extract operand not a constant");
DebugLoc DL = Instr->getDebugLoc();
-
- MachineInstr *copy = BuildMI(F, DL, InstrInfo->get(getScalarVersion(Instr)),
- Instr->getOperand(0).getReg());
- copy->addOperand(MachineOperand::CreateReg(src[which.getImm()], false));
-
- copies.push_back(copy);
+ copies.push_back(BuildMI(F, DL, InstrInfo->get(getScalarVersion(Instr)),
+ Instr->getOperand(0).getReg())
+ .addReg(src[which.getImm()]));
}
///=============================================================================
@@ -389,13 +385,13 @@ void VectorElementize::createVecInsert(MachineFunction& F, MachineInstr *Instr,
DebugLoc DL = Instr->getDebugLoc();
for (unsigned i=0; i<numcopies; i++) {
- MachineInstr *copy = BuildMI(F, DL,
- InstrInfo->get(getScalarVersion(Instr)), dest[i]);
+ MachineInstrBuilder copy =
+ BuildMI(F, DL, InstrInfo->get(getScalarVersion(Instr)), dest[i]);
if (i != elem)
- copy->addOperand(MachineOperand::CreateReg(src[i], false));
+ copy.addReg(src[i]);
else
- copy->addOperand(Instr->getOperand(2));
+ copy.addOperand(Instr->getOperand(2));
copies.push_back(copy);
}
@@ -418,15 +414,10 @@ void VectorElementize::createVecBuild(MachineFunction& F, MachineInstr *Instr,
DebugLoc DL = Instr->getDebugLoc();
- for (unsigned i=0; i<numcopies; i++) {
- MachineInstr *copy = BuildMI(F, DL,
- InstrInfo->get(getScalarVersion(Instr)), dest[i]);
-
- copy->addOperand(Instr->getOperand(1+i));
-
- copies.push_back(copy);
- }
-
+ for (unsigned i=0; i<numcopies; i++)
+ copies.push_back(BuildMI(F, DL, InstrInfo->get(getScalarVersion(Instr)),
+ dest[i])
+ .addOperand(Instr->getOperand(1+i)));
}
///=============================================================================
@@ -439,7 +430,7 @@ void VectorElementize::createVecDest(MachineFunction& F, MachineInstr *Instr,
std::vector<MachineInstr *>& copies) {
copies.push_back(F.CloneMachineInstr(Instr));
- MachineInstr *copy=copies[0];
+ MachineInstrBuilder copy(F, copies[0]);
copy->setDesc(InstrInfo->get(getScalarVersion(copy)));
// Remove the dest, that should be a vector operand.
@@ -457,10 +448,10 @@ void VectorElementize::createVecDest(MachineFunction& F, MachineInstr *Instr,
copy->RemoveOperand(0);
for (unsigned i=0, e=scalarRegs.size(); i!=e; ++i)
- copy->addOperand(MachineOperand::CreateReg(scalarRegs[i], true));
+ copy.addReg(scalarRegs[i], RegState::Define);
for (unsigned i=0, e=otherOperands.size(); i!=e; ++i)
- copy->addOperand(otherOperands[i]);
+ copy.addOperand(otherOperands[i]);
}
///=============================================================================
@@ -504,7 +495,7 @@ void VectorElementize::createCopies(MachineFunction& F, MachineInstr *Instr,
copies.push_back(F.CloneMachineInstr(Instr));
for (unsigned i=0; i<numcopies; ++i) {
- MachineInstr *copy = copies[i];
+ MachineInstrBuilder copy(F, copies[i]);
std::vector<MachineOperand> allOperands;
std::vector<bool> isDef;
@@ -530,13 +521,13 @@ void VectorElementize::createCopies(MachineFunction& F, MachineInstr *Instr,
if (isVectorRegister(regnum)) {
SmallVector<unsigned, 4> scalarRegs = getScalarRegisters(regnum);
- copy->addOperand(MachineOperand::CreateReg(scalarRegs[i], isDef[j]));
+ copy.addReg(scalarRegs[i], getDefRegState(isDef[j]));
}
else
- copy->addOperand(oper);
+ copy.addOperand(oper);
}
else
- copy->addOperand(oper);
+ copy.addOperand(oper);
}
}
}
@@ -659,7 +650,7 @@ unsigned VectorElementize::copyProp(MachineFunction &F) {
for (unsigned i=0, e=Instr->getNumOperands(); i!=e; ++i)
Instr->RemoveOperand(0);
for (unsigned i=0, e=operands.size(); i!=e; ++i)
- Instr->addOperand(operands[i]);
+ Instr->addOperand(F, operands[i]);
}
}