[all-commits] [llvm/llvm-project] 308ce8: [ARM] Fix calling convention for __fp16 with big-e...
Oliver Stannard via All-commits
all-commits at lists.llvm.org
Thu Feb 13 01:09:51 PST 2025
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 308ce8d5240875911987b63fa6579c87758ab4ac
https://github.com/llvm/llvm-project/commit/308ce8d5240875911987b63fa6579c87758ab4ac
Author: Oliver Stannard <oliver.stannard at arm.com>
Date: 2025-02-13 (Thu, 13 Feb 2025)
Changed paths:
M llvm/lib/Target/ARM/ARMCallingConv.cpp
M llvm/lib/Target/ARM/ARMCallingConv.td
M llvm/lib/Target/ARM/ARMISelLowering.cpp
A llvm/test/CodeGen/Thumb2/bf16-pcs.ll
A llvm/test/CodeGen/Thumb2/fp16-pcs.ll
Log Message:
-----------
[ARM] Fix calling convention for __fp16 with big-endian (#126741)
AAPCS32 defines the fp16 and bf16 types as being passed as if they were
extended to 32 bits, with the high 16 bits being unspecified. The
extension is specified as happening as-if it was done in a register,
which means that for big endian targets, the actual value gets passed in
the higher addressed half of the stack slot, instead of the lower
addressed half as for little endian. Previously, for targets with the
fp16 extension, we were passing these types as a 16 bit stack slot,
which worked for little endian because every later stack slot would be
4-byte aligned leaving the 2 byte gap, but was incorrect for big endian.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list