r239411 - in /branches/gcc-6-branch: ./ gcc/Cha...
jgreenhalgh@gcc.gnu.org
jgreenhalgh@gcc.gnu.org
Fri Aug 12 11:26:00 GMT 2016
Author: jgreenhalgh
Date: Fri Aug 12 11:26:06 2016
New Revision: 239411
URL: https://gcc.gnu.org/viewcvs?rev=239411&root=gcc&view=rev
Log:
[AArch64] Handle HFAs of float16 types properly
Backport from mainline r239173.
Fix PR Target/72819.
gcc/
PR Target/72819
* config/aarch64/aarch64.h (aarch64_fp16_type_node): Declare.
(aarch64_fp16_ptr_type_node): Likewise.
* config/aarch64/aarch64-simd-builtins.c
(aarch64_fp16_ptr_type_node): Define.
(aarch64_init_fp16_types): New, refactored out of...
(aarch64_init_builtins): ...here, update to call
aarch64_init_fp16_types.
* config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr): Handle
HFmode.
(aapcs_vfp_sub_candidate): Likewise.
gcc/testsuite/
PR Target/72819
* gcc.target/aarch64/aapcs64/abitest-common.h: Define half-precision
registers.
* gcc.target/aarch64/aapcs64/abitest.S (dumpregs): Add assembly for
saving the half-precision registers.
* gcc.target/aarch64/aapcs64/func-ret-1.c: Test that an __fp16
value is returned in h0.
* gcc.target/aarch64/aapcs64/test_2.c: Check that __FP16 arguments
are passed in FP/SIMD registers.
* gcc.target/aarch64/aapcs64/test_27.c: New, test that __fp16 HFA
passing works corrcetly.
* gcc.target/aarch64/aapcs64/type-def.h (hfa_f16x1_t): New.
(hfa_f16x2_t): Likewise.
(hfa_f16x3_t): Likewise.
* gcc.target/aarch64/aapcs64/va_arg-1.c: Check that __fp16 values
are promoted to double and passed in a double register.
* gcc.target/aarch64/aapcs64/va_arg-2.c: Check that __fp16 values
are promoted to double and stacked.
* gcc.target/aarch64/aapcs64/va_arg-4.c: Check stacking of HFA of
__fp16 data types.
* gcc.target/aarch64/aapcs64/va_arg-5.c: Likewise.
* gcc.target/aarch64/aapcs64/va_arg-16.c: New, check HFAs of
__fp16 first get passed in FP/SIMD registers, then stacked.
Added:
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/test_27.c
- copied unchanged from r239173, trunk/gcc/testsuite/gcc.target/aarch64/aapcs64/test_27.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-16.c
- copied unchanged from r239173, trunk/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-16.c
Modified:
branches/gcc-6-branch/ (props changed)
branches/gcc-6-branch/gcc/ChangeLog
branches/gcc-6-branch/gcc/config/aarch64/aarch64-builtins.c
branches/gcc-6-branch/gcc/config/aarch64/aarch64.c
branches/gcc-6-branch/gcc/config/aarch64/aarch64.h
branches/gcc-6-branch/gcc/testsuite/ChangeLog
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/abitest-common.h
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/abitest.S
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-1.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/test_2.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-1.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-2.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-4.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-5.c
Propchange: branches/gcc-6-branch/
('svn:mergeinfo' added)
More information about the Gcc-cvs
mailing list