[llvm] [AArch64][GlobalISel] Legalize 128-bit types for FABS (PR #104753)

David Green via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 19 03:34:44 PDT 2024


================
@@ -257,6 +257,20 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
       .clampNumElements(0, v2s64, v2s64)
       .moreElementsToNextPow2(0);
 
+  getActionDefinitionsBuilder(G_FABS)
+      .legalFor({MinFPScalar, s32, s64, v2s32, v4s32, v2s64})
+      .legalIf([=](const LegalityQuery &Query) {
+        const auto &Ty = Query.Types[0];
+        return (Ty == v8s16 || Ty == v4s16) && HasFP16;
+      })
+      .customFor({s128})
----------------
davemgreen wrote:

Would it possible to make it lowerIf and have the generic LegalizerHelper::lower handle the expansion into an AND? It should be very similar code I hope (maybe generalized to more types), but could be useful to other targets / fp types too. FP16 without +fullfp16 might be able to use it, for example.

https://github.com/llvm/llvm-project/pull/104753


More information about the llvm-commits mailing list