Skip to content

Commit 367c145

Browse files
authored
[IRTranslator][RISCV] Support scalable vector zeroinitializer. (#108666)
1 parent a205a85 commit 367c145

File tree

2 files changed

+826
-3
lines changed

2 files changed

+826
-3
lines changed

llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3528,11 +3528,13 @@ bool IRTranslator::translate(const Constant &C, Register Reg) {
35283528
Register AddrDisc = getOrCreateVReg(*CPA->getAddrDiscriminator());
35293529
EntryBuilder->buildConstantPtrAuth(Reg, CPA, Addr, AddrDisc);
35303530
} else if (auto CAZ = dyn_cast<ConstantAggregateZero>(&C)) {
3531-
if (!isa<FixedVectorType>(CAZ->getType()))
3532-
return false;
3531+
Constant &Elt = *CAZ->getElementValue(0u);
3532+
if (isa<ScalableVectorType>(CAZ->getType())) {
3533+
EntryBuilder->buildSplatVector(Reg, getOrCreateVReg(Elt));
3534+
return true;
3535+
}
35333536
// Return the scalar if it is a <1 x Ty> vector.
35343537
unsigned NumElts = CAZ->getElementCount().getFixedValue();
3535-
Constant &Elt = *CAZ->getElementValue(0u);
35363538
if (NumElts == 1)
35373539
return translateCopy(C, Elt, *EntryBuilder);
35383540
// All elements are zero so we can just use the first one.

0 commit comments

Comments
 (0)