[PATCH] D81428: [ARM] Moving CMSE handling of half arguments and return to the backend
Oliver Stannard (Linaro) via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 10 02:41:40 PDT 2020
ostannard added a comment.
Is this expected to work for the soft-float calling convention, or is clang still passing half-precision values as integer types for that? If the former, then this needs some tests for that case.
================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:2267
+ // Mask f16 arguments if this is a CMSE nonsecure call
+ auto ArgVT = Outs[realArgIdx].ArgVT;
----------------
Could this be done more efficiently by changing the ANY_EXTEND above to a ZERO_EXTEND when this is a CMSE call?
================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:2955
+
+ // Mask f16 arguments if this is a CMSE nonsecure entry
+ auto RetVT = Outs[realRVLocIdx].ArgVT;
----------------
Again, could this be done by using ZERO_EXTEND instead of ANY_EXTEND for CMSE entry functions?
================
Comment at: llvm/test/CodeGen/ARM/cmse-clear-float-hard.ll:812
+define arm_aapcs_vfpcc half @h1(half (half)* nocapture %hptr) #10 {
+; CHECK-8M-LABEL: h1:
----------------
The function attributes (`"cmse_nonsecure_entry" nounwind` in this case) can be placed here (replacing the `#10`) to make the tests easier to read.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D81428/new/
https://reviews.llvm.org/D81428
More information about the cfe-commits
mailing list