[llvm] [AArch64][GlobalISel] More FCmp legalization. (PR #78734)
Thorsten Schütt via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 19 09:09:37 PST 2024
================
@@ -532,32 +532,19 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
.clampNumElements(0, v2s64, v2s64);
getActionDefinitionsBuilder(G_FCMP)
- // If we don't have full FP16 support, then scalarize the elements of
- // vectors containing fp16 types.
- .fewerElementsIf(
- [=](const LegalityQuery &Query) {
- const auto &Ty = Query.Types[0];
- return Ty.isVector() && Ty.getElementType() == s16 && !HasFP16;
- },
- [=](const LegalityQuery &Query) { return std::make_pair(0, s16); })
- // If we don't have full FP16 support, then widen s16 to s32 if we
- // encounter it.
- .widenScalarIf(
- [=](const LegalityQuery &Query) {
- return Query.Types[0] == s16 && !HasFP16;
- },
- [=](const LegalityQuery &Query) { return std::make_pair(0, s32); })
- .legalFor({{s16, s16},
+ .legalFor({{s32, MinFPScalar},
{s32, s32},
{s32, s64},
{v4s32, v4s32},
{v2s32, v2s32},
- {v2s64, v2s64},
- {v4s16, v4s16},
- {v8s16, v8s16}})
+ {v2s64, v2s64}})
+ .legalIf([=](const LegalityQuery &Query) {
+ const auto &Ty = Query.Types[0];
+ return (Ty == v8s16 || Ty == v4s16) && HasFP16;
----------------
tschuett wrote:
It reads as if arbitrary types on the RHS are legal.
https://github.com/llvm/llvm-project/pull/78734
More information about the llvm-commits
mailing list