[llvm] [AArch64][GlobalISel] Legalize 128-bit types for FABS (PR #104753)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 23 02:35:10 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;
+ })
+ .lowerFor({s128})
+ .scalarizeIf(scalarOrEltWiderThan(0, 64), 0)
----------------
Him188 wrote:
G_AND does not support s128 so we still need this. Left a TODO.
```
LLVM ERROR: unable to legalize instruction: %3:_(<2 x s128>) = G_AND %0:_, %7:_ (in function: fabs_v2f128)
```
https://github.com/llvm/llvm-project/pull/104753
More information about the llvm-commits
mailing list