[llvm] r263264 - [MachineIRBuilder] Rework buildInstr API to maximize code reuse.
Quentin Colombet via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 11 09:27:58 PST 2016
Author: qcolombet
Date: Fri Mar 11 11:27:58 2016
New Revision: 263264
URL: http://llvm.org/viewvc/llvm-project?rev=263264&view=rev
Log:
[MachineIRBuilder] Rework buildInstr API to maximize code reuse.
Modified:
llvm/trunk/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
llvm/trunk/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
Modified: llvm/trunk/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h?rev=263264&r1=263263&r2=263264&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h (original)
+++ llvm/trunk/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h Fri Mar 11 11:27:58 2016
@@ -85,7 +85,7 @@ public:
/// Set the debug location to \p DL for all the next build instructions.
void setDebugLoc(const DebugLoc &DL) { this->DL = DL; }
- /// Build and insert \p Res<def> = \p Opcode [\p Ty] \p Op0, \p Op1.
+ /// Build and insert <empty> = \p Opcode [\p Ty] <empty>.
/// \p Ty is the type of the instruction if \p Opcode describes
/// a generic machine instruction. \p Ty must be nullptr if \p Opcode
/// does not describe a generic instruction.
@@ -96,6 +96,14 @@ public:
/// \pre Ty == nullptr or isPreISelGenericOpcode(Opcode)
///
/// \return The newly created instruction.
+ MachineInstr *buildInstr(unsigned Opcode, Type *Ty);
+
+ /// Build and insert \p Res<def> = \p Opcode [\p Ty] \p Op0, \p Op1.
+ ///
+ /// \pre setBasicBlock or setMI must have been called.
+ /// \pre Ty == nullptr or isPreISelGenericOpcode(Opcode)
+ ///
+ /// \return The newly created instruction.
MachineInstr *buildInstr(unsigned Opcode, Type *Ty, unsigned Res,
unsigned Op0, unsigned Op1);
@@ -117,7 +125,7 @@ public:
/// \return The newly created instruction.
MachineInstr *buildInstr(unsigned Opcode, unsigned Res, unsigned Op0);
- /// Build and insert = \p Opcode.
+ /// Build and insert <empty> = \p Opcode <empty>.
///
/// \pre setBasicBlock or setMI must have been called.
/// \pre not isPreISelGenericOpcode(\p Opcode)
Modified: llvm/trunk/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp?rev=263264&r1=263263&r2=263264&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp (original)
+++ llvm/trunk/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp Fri Mar 11 11:27:58 2016
@@ -53,16 +53,11 @@ MachineBasicBlock::iterator MachineIRBui
return Before ? getMBB().begin() : getMBB().end();
}
-MachineInstr *MachineIRBuilder::buildInstr(unsigned Opcode, unsigned Res,
- unsigned Op0, unsigned Op1) {
- return buildInstr(Opcode, nullptr, Res, Op0, Op1);
-}
-
-MachineInstr *MachineIRBuilder::buildInstr(unsigned Opcode, Type *Ty,
- unsigned Res, unsigned Op0,
- unsigned Op1) {
- MachineInstr *NewMI =
- BuildMI(getMF(), DL, getTII().get(Opcode), Res).addReg(Op0).addReg(Op1);
+//------------------------------------------------------------------------------
+// Build instruction variants.
+//------------------------------------------------------------------------------
+MachineInstr *MachineIRBuilder::buildInstr(unsigned Opcode, Type *Ty) {
+ MachineInstr *NewMI = BuildMI(getMF(), DL, getTII().get(Opcode));
if (Ty) {
assert(isPreISelGenericOpcode(Opcode) &&
"Only generic instruction can have a type");
@@ -75,21 +70,28 @@ MachineInstr *MachineIRBuilder::buildIns
}
MachineInstr *MachineIRBuilder::buildInstr(unsigned Opcode, unsigned Res,
- unsigned Op0) {
- assert(!isPreISelGenericOpcode(Opcode) &&
- "Generic instruction must have a type");
+ unsigned Op0, unsigned Op1) {
+ return buildInstr(Opcode, nullptr, Res, Op0, Op1);
+}
- MachineInstr *NewMI =
- BuildMI(getMF(), DL, getTII().get(Opcode), Res).addReg(Op0);
- getMBB().insert(getInsertPt(), NewMI);
+MachineInstr *MachineIRBuilder::buildInstr(unsigned Opcode, Type *Ty,
+ unsigned Res, unsigned Op0,
+ unsigned Op1) {
+ MachineInstr *NewMI = buildInstr(Opcode, Ty);
+ MachineInstrBuilder(getMF(), NewMI)
+ .addReg(Res, RegState::Define)
+ .addReg(Op0)
+ .addReg(Op1);
return NewMI;
}
-MachineInstr *MachineIRBuilder::buildInstr(unsigned Opcode) {
- assert(!isPreISelGenericOpcode(Opcode) &&
- "Generic instruction must have a type");
-
- MachineInstr *NewMI = BuildMI(getMF(), DL, getTII().get(Opcode));
- getMBB().insert(getInsertPt(), NewMI);
+MachineInstr *MachineIRBuilder::buildInstr(unsigned Opcode, unsigned Res,
+ unsigned Op0) {
+ MachineInstr *NewMI = buildInstr(Opcode, nullptr);
+ MachineInstrBuilder(getMF(), NewMI).addReg(Res, RegState::Define).addReg(Op0);
return NewMI;
}
+
+MachineInstr *MachineIRBuilder::buildInstr(unsigned Opcode) {
+ return buildInstr(Opcode, nullptr);
+}
More information about the llvm-commits
mailing list