[PATCH] D136361: [AArch64][SME] Disable GlobalISel/FastISel for SME functions.
Sander de Smalen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 31 06:28:52 PDT 2022
sdesmalen added inline comments.
================
Comment at: llvm/lib/Target/AArch64/AArch64FastISel.cpp:5121
+ SMEAttrs CallerAttrs(*FuncInfo.Fn);
+ if (!CallerAttrs.hasStreamingInterface() && CallerAttrs.hasStreamingBody())
+ return nullptr;
----------------
david-arm wrote:
> Should we also check for arm_new_za here too?
I don't believe so, because the work for arm_new_za functions is done by the SMEABI pass at the LLVM IR level.
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:21892
+ /*BodyOverridesInterface=*/false) ||
+ CallerAttrs.requiresLazySave(CalleeAttrs))
+ return true;
----------------
david-arm wrote:
> I guess this covers most cases, except I'm not sure what happens at -O0 if the caller is in a shared-ZA function and contains something like a 128-bit FP IR that ends up getting lowered to a library call to a private-ZA function. Maybe this just works and we just a need a test for it?
I've added two tests for this scenario, which seem to exhibit the desired behaviour.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D136361/new/
https://reviews.llvm.org/D136361
More information about the llvm-commits
mailing list