[llvm] [SelectionDAG][RISCV] Use VP_LOAD to widen MLOAD in type legalization when possible. (PR #140595)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Wed May 21 02:38:21 PDT 2025
================
@@ -6111,18 +6111,37 @@ SDValue DAGTypeLegalizer::WidenVecRes_VECTOR_COMPRESS(SDNode *N) {
}
SDValue DAGTypeLegalizer::WidenVecRes_MLOAD(MaskedLoadSDNode *N) {
-
- EVT WidenVT = TLI.getTypeToTransformTo(*DAG.getContext(),N->getValueType(0));
+ EVT VT = N->getValueType(0);
+ EVT WidenVT = TLI.getTypeToTransformTo(*DAG.getContext(), VT);
SDValue Mask = N->getMask();
EVT MaskVT = Mask.getValueType();
SDValue PassThru = GetWidenedVector(N->getPassThru());
ISD::LoadExtType ExtType = N->getExtensionType();
SDLoc dl(N);
+ EVT WideMaskVT =
+ EVT::getVectorVT(*DAG.getContext(), MaskVT.getVectorElementType(),
+ WidenVT.getVectorElementCount());
+
+ if (ExtType == ISD::NON_EXTLOAD &&
+ TLI.isOperationLegalOrCustom(ISD::VP_LOAD, WidenVT) &&
+ TLI.isTypeLegal(WideMaskVT)) {
----------------
lukel97 wrote:
Does this need to be limited to scalable vectors only? If the existing widening already worked for fixed vectors
https://github.com/llvm/llvm-project/pull/140595
More information about the llvm-commits
mailing list