[llvm] [RISCV] Tuple intrinsics are creating overly aligned memory operands (PR #115804)
Brandon Wu via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 13 00:22:14 PST 2024
================
@@ -1623,10 +1623,17 @@ bool RISCVTargetLowering::getTgtMemIntrinsic(IntrinsicInfo &Info,
MemTy = MemTy->getScalarType();
Info.memVT = getValueType(DL, MemTy);
- if (MemTy->isTargetExtTy())
+ if (MemTy->isTargetExtTy()) {
+ // RISC-V vector tuple type's alignment type should be its element type.
+ if (cast<TargetExtType>(MemTy)->getName() == "riscv.vector.tuple")
+ MemTy = Type::getIntNTy(
+ MemTy->getContext(),
+ 1 << cast<ConstantInt>(I.getArgOperand(I.arg_size() - 1))
+ ->getZExtValue());
Info.align = DL.getABITypeAlign(MemTy);
- else
+ } else {
Info.align = Align(DL.getTypeSizeInBits(MemTy->getScalarType()) / 8);
+ }
----------------
4vtomat wrote:
I think we need to add to else block to keep it uniform with the `if` block: https://llvm.org/docs/CodingStandards.html#don-t-use-braces-on-simple-single-statement-bodies-of-if-else-loop-statements
https://github.com/llvm/llvm-project/pull/115804
More information about the llvm-commits
mailing list