diff options
author | Tim Northover <tnorthover@apple.com> | 2016-07-26 20:23:26 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2016-07-26 20:23:26 +0000 |
commit | ad2b717f2c8fcc279cf13aa51349012c3710c987 (patch) | |
tree | bd3e80030a58bc7921257a8ed21a775871c24d20 /llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp | |
parent | 2dc08f7df8b8edaf60df784996e2224786b3115c (diff) | |
download | bcm5719-llvm-ad2b717f2c8fcc279cf13aa51349012c3710c987.tar.gz bcm5719-llvm-ad2b717f2c8fcc279cf13aa51349012c3710c987.zip |
GlobalISel: add generic load and store instructions.
Pretty straightforward, the only oddity is the MachineMemOperand (which it's
surprisingly difficult to share code for).
llvm-svn: 276799
Diffstat (limited to 'llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp')
-rw-r--r-- | llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp b/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp index 30971e72f7d..be4cafc575b 100644 --- a/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp +++ b/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp @@ -94,6 +94,23 @@ MachineInstr *MachineIRBuilder::buildCopy(unsigned Res, unsigned Op) { return buildInstr(TargetOpcode::COPY, Res, Op); } +MachineInstr *MachineIRBuilder::buildLoad(LLT VTy, LLT PTy, unsigned Res, + unsigned Addr, + MachineMemOperand &MMO) { + MachineInstr *NewMI = buildInstr(TargetOpcode::G_LOAD, {VTy, PTy}, Res, Addr); + NewMI->addMemOperand(getMF(), &MMO); + return NewMI; +} + +MachineInstr *MachineIRBuilder::buildStore(LLT VTy, LLT PTy, unsigned Val, + unsigned Addr, + MachineMemOperand &MMO) { + MachineInstr *NewMI = buildInstr(TargetOpcode::G_STORE, {VTy, PTy}); + NewMI->addMemOperand(getMF(), &MMO); + MachineInstrBuilder(getMF(), NewMI).addReg(Val).addReg(Addr); + return NewMI; +} + MachineInstr *MachineIRBuilder::buildExtract(LLT Ty, ArrayRef<unsigned> Results, unsigned Src, ArrayRef<unsigned> Indexes) { |