diff options
| author | Tim Northover <tnorthover@apple.com> | 2016-08-19 20:09:07 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2016-08-19 20:09:07 +0000 |
| commit | 5a28c3642fec0d76a81089dcf5b57412145a7f83 (patch) | |
| tree | cf525988f68c561220be30c406dac8ddf5c657d4 /llvm/lib/CodeGen | |
| parent | b604622bbaa7dae77e60db7afe75a6cef55ea5c4 (diff) | |
| download | bcm5719-llvm-5a28c3642fec0d76a81089dcf5b57412145a7f83.tar.gz bcm5719-llvm-5a28c3642fec0d76a81089dcf5b57412145a7f83.zip | |
GlobalISel: support translating select instructions.
llvm-svn: 279309
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 7 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index 3c1807fbd2e..58235c2b823 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -236,6 +236,13 @@ bool IRTranslator::translateInsertValue(const User &U) { return true; } +bool IRTranslator::translateSelect(const User &U) { + MIRBuilder.buildSelect( + LLT{*U.getType()}, getOrCreateVReg(U), getOrCreateVReg(*U.getOperand(0)), + getOrCreateVReg(*U.getOperand(1)), getOrCreateVReg(*U.getOperand(2))); + return true; +} + bool IRTranslator::translateBitCast(const User &U) { if (LLT{*U.getOperand(0)->getType()} == LLT{*U.getType()}) { unsigned &Reg = ValToVReg[&U]; diff --git a/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp b/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp index bd66a28bdc2..0d2fae659e8 100644 --- a/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp +++ b/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp @@ -216,3 +216,13 @@ MachineInstrBuilder MachineIRBuilder::buildICmp(ArrayRef<LLT> Tys, .addUse(Op0) .addUse(Op1); } + +MachineInstrBuilder MachineIRBuilder::buildSelect(LLT Ty, unsigned Res, + unsigned Tst, + unsigned Op0, unsigned Op1) { + return buildInstr(TargetOpcode::G_SELECT, {Ty, LLT::scalar(1)}) + .addDef(Res) + .addUse(Tst) + .addUse(Op0) + .addUse(Op1); +} |

