[llvm] [AArch64] Fix lowring error for masked load/store integer scalable ve… (PR #99354)
Sander de Smalen via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 19 06:54:21 PDT 2024
================
@@ -6912,32 +6911,40 @@ SDValue DAGTypeLegalizer::WidenVecOp_MSTORE(SDNode *N, unsigned OpNo) {
SDValue Mask = MST->getMask();
EVT MaskVT = Mask.getValueType();
SDValue StVal = MST->getValue();
+ EVT VT = StVal.getValueType();
SDLoc dl(N);
if (OpNo == 1) {
- // Widen the value.
- StVal = GetWidenedVector(StVal);
-
- // The mask should be widened as well.
- EVT WideVT = StVal.getValueType();
- EVT WideMaskVT = EVT::getVectorVT(*DAG.getContext(),
- MaskVT.getVectorElementType(),
- WideVT.getVectorNumElements());
+ EVT WideVT;
+ if (VT.isScalableVector() && VT.getVectorMinNumElements() == 1 &&
+ VT.isInteger() && VT.getVectorElementType().isByteSized()) {
+ WideVT = TLI.getTypeToTransformTo(*DAG.getContext(), VT);
+ StVal = ModifyToType(StVal, WideVT);
----------------
sdesmalen-arm wrote:
I'm not sure why this is needed. Why doesn't `GetWidenedVector` already return a widened vector?
https://github.com/llvm/llvm-project/pull/99354
More information about the llvm-commits
mailing list