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