diff options
author | Volkan Keles <vkeles@apple.com> | 2017-03-13 21:36:19 +0000 |
---|---|---|
committer | Volkan Keles <vkeles@apple.com> | 2017-03-13 21:36:19 +0000 |
commit | 38a91a0de661967b3609d044e63985101d69e153 (patch) | |
tree | 48cdfde6dac95043998f6b1e86da5acfe1487ecc /llvm/lib/CodeGen/GlobalISel | |
parent | e7d0fa68f38f2ad8aa567f9c5ca4871f508cdae7 (diff) | |
download | bcm5719-llvm-38a91a0de661967b3609d044e63985101d69e153.tar.gz bcm5719-llvm-38a91a0de661967b3609d044e63985101d69e153.zip |
GlobalISel: Translate ConstantDataVector
Reviewers: qcolombet, aditya_nandakumar, dsanders, t.p.northover, javed.absar, ab
Reviewed By: qcolombet, dsanders, ab
Subscribers: dberris, rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D30216
llvm-svn: 297670
Diffstat (limited to 'llvm/lib/CodeGen/GlobalISel')
-rw-r--r-- | llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index 7e6c61dfca6..15bf31cd6d6 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -1074,6 +1074,13 @@ bool IRTranslator::translate(const Constant &C, unsigned Reg) { Ops.push_back(getOrCreateVReg(Elt)); } EntryBuilder.buildMerge(Reg, Ops); + } else if (auto CV = dyn_cast<ConstantDataVector>(&C)) { + std::vector<unsigned> Ops; + for (unsigned i = 0; i < CV->getNumElements(); ++i) { + Constant &Elt = *CV->getElementAsConstant(i); + Ops.push_back(getOrCreateVReg(Elt)); + } + EntryBuilder.buildMerge(Reg, Ops); } else if (auto CE = dyn_cast<ConstantExpr>(&C)) { switch(CE->getOpcode()) { #define HANDLE_INST(NUM, OPCODE, CLASS) \ |