[llvm] [AArch64][GISel] Allow import of DAG FCVT/CVTF patterns using fixedpoint immediate (PR #215812)
Kieran B via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 13 08:13:46 PDT 2026
================
@@ -6858,35 +6858,55 @@ multiclass FPToIntegerIntPats<Intrinsic round, string INST> {
defm : FPToIntegerIntPats<int_aarch64_neon_fcvtzs, "FCVTZS">;
defm : FPToIntegerIntPats<int_aarch64_neon_fcvtzu, "FCVTZU">;
-// This thing just allows us to change the type of the node produced. The imm
-// value we want is already in V from SelectCVTFixedPointVec.
-def fixedpoint_vec_xform : SDNodeXForm<timm, [{
+// These are split by fixed-point width so GlobalISel can route each
+// transformed operand to a renderer that checks the correct #fbits range.
+def fixedpoint_xform32 : SDNodeXForm<timm, [{
+ (void)N;
+ return V;
+}]>;
----------------
kieroxide wrote:
Turns out we don't need it at all, since the renderer only ever used by same-width instructions. I have removed them and now just use a generic scalar_xform, and the renderer just infers the width from the src register. Which was what the original functionality did.
The selectors are the ones that still need the width to be passed as these do deal with cross-width instructions
https://github.com/llvm/llvm-project/pull/215812
More information about the llvm-commits
mailing list