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



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to