[PATCH] D81428: [ARM] Moving CMSE handling of half arguments and return to the backend

Oliver Stannard (Linaro) via Phabricator via llvm-commits llvm-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 llvm-commits mailing list