[ARM] Moving CMSE handling of half arguments and return to the backend
authorLucas Prates <lucas.prates@arm.com>
Fri, 5 Jun 2020 12:23:30 +0000 (13:23 +0100)
committerLucas Prates <lucas.prates@arm.com>
Thu, 18 Jun 2020 12:16:29 +0000 (13:16 +0100)
commit92ad6d57c21824ddb4bca2d01734c5d2c391b5b5
tree2bc62b45f015e0318a8c45e2aeace968463f888d
parenta255931c40558edf87994c2a8ed9b274c3fbda30
[ARM] Moving CMSE handling of half arguments and return to the backend

Summary:
As half-precision floating point arguments and returns were previously
coerced to either float or int32 by clang's codegen, the CMSE handling
of those was also performed in clang's side by zeroing the unused MSBs
of the coercer values.

This patch moves this handling to the backend's calling convention
lowering, making sure the high bits of the registers used by
half-precision arguments and returns are zeroed.

Reviewers: chill, rjmccall, ostannard

Reviewed By: ostannard

Subscribers: kristof.beyls, hiraditya, danielkiss, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D81428
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/ARM/cmse-clear-float-hard.ll