summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAditya Nandakumar <aditya_nandakumar@apple.com>2017-05-04 21:43:12 +0000
committerAditya Nandakumar <aditya_nandakumar@apple.com>2017-05-04 21:43:12 +0000
commit117b667bd9d36ae751909ac93bf2e590de26b69c (patch)
treeb24cd090162ba0867f3aaa3360c5f2163dc7137e /llvm/lib
parent7f3190118b8b9b2b43befb382cb0dc6bf5cc2990 (diff)
downloadbcm5719-llvm-117b667bd9d36ae751909ac93bf2e590de26b69c.tar.gz
bcm5719-llvm-117b667bd9d36ae751909ac93bf2e590de26b69c.zip
[GISel]: Add support to translate ConstantVectors
Reviewed by Quentin https://reviews.llvm.org/D32814 llvm-svn: 302196
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index 75be7a55bd2..f12048103f7 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -1108,6 +1108,14 @@ bool IRTranslator::translate(const Constant &C, unsigned Reg) {
default:
return false;
}
+ } else if (auto CV = dyn_cast<ConstantVector>(&C)) {
+ if (CV->getNumOperands() == 1)
+ return translate(*CV->getOperand(0), Reg);
+ SmallVector<unsigned, 4> Ops;
+ for (unsigned i = 0; i < CV->getNumOperands(); ++i) {
+ Ops.push_back(getOrCreateVReg(*CV->getOperand(i)));
+ }
+ EntryBuilder.buildMerge(Reg, Ops);
} else
return false;
OpenPOWER on IntegriCloud