Fixed OpShuffleVector
This commit is contained in:
@@ -914,11 +914,11 @@ public:
|
|||||||
auto v2 = OP_VALUE(3);
|
auto v2 = OP_VALUE(3);
|
||||||
auto v1_len = llvm::dyn_cast<llvm::VectorType>(v1->getType())->getElementCount().getFixedValue();
|
auto v1_len = llvm::dyn_cast<llvm::VectorType>(v1->getType())->getElementCount().getFixedValue();
|
||||||
|
|
||||||
|
|
||||||
for (int i = 4; i < insn->num_operands; i++) {
|
for (int i = 4; i < insn->num_operands; i++) {
|
||||||
auto idx = OP_WORD(i);
|
auto idx = OP_WORD(i);
|
||||||
auto didx = idx - 4;
|
auto didx = i - 4;
|
||||||
auto el = idx > v1_len
|
|
||||||
|
auto el = idx < v1_len
|
||||||
? builder->CreateExtractElement(v1, idx)
|
? builder->CreateExtractElement(v1, idx)
|
||||||
: builder->CreateExtractElement(v2, idx-v1_len);
|
: builder->CreateExtractElement(v2, idx-v1_len);
|
||||||
builder->CreateInsertElement(result, el, didx);
|
builder->CreateInsertElement(result, el, didx);
|
||||||
|
|||||||
Reference in New Issue
Block a user