[llvm] [LoongArch] Type legalize v2f32 loads by using an f64 load and a scalar_to_vector (PR #164943)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 27 18:57:23 PDT 2025
================
@@ -4668,6 +4670,32 @@ void LoongArchTargetLowering::ReplaceNodeResults(
"Unexpected custom legalisation");
Results.push_back(customLegalizeToWOp(N, DAG, 2));
break;
+ case ISD::LOAD: {
+ // Use an f64 load and a scalar_to_vector for v2f32 loads. This avoids
+ // scalarizing in 32-bit mode. In 64-bit mode this avoids a int->fp
+ // cast since type legalization will try to use an i64 load.
+ MVT VT = N->getSimpleValueType(0);
+ assert(VT == MVT::v2f32 && "Unexpected VT");
+ assert(getTypeAction(*DAG.getContext(), VT) == TypeWidenVector &&
+ "Unexpected type action!");
+ if (!ISD::isNON_EXTLoad(N))
+ return;
+ auto *Ld = cast<LoadSDNode>(N);
+ if (Subtarget.hasExtLSX()) {
----------------
zhaoqi5 wrote:
This maybe unnecessary?
https://github.com/llvm/llvm-project/pull/164943
More information about the llvm-commits
mailing list