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