On 13 May 2016 at 15:41, Ramana Radhakrishnan <ramana....@googlemail.com> wrote:
> On Thu, Apr 28, 2016 at 10:20 AM, Matthew Wahab
> <matthew.wa...@foss.arm.com> wrote:
>> Hello,
>>
>> The ARM target supports the half-precision floating point type __fp16
>> but does not allow its use as a function return or parameter type. This
>> patch removes that restriction and defines the ACLE macro
>> __ARM_FP16_ARGS to indicate this. The code generated for passing __fp16
>> values into and out of functions depends on the level of hardware
>> support but conforms to the AAPCS (see
>> http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042f/IHI0042F_aapcs.pdf).
>>
>> This patch enables data movement for HF-mode values using VFP registers,
>> when they are available, to support passing arguments and return values
>> through the registers.
>>
>> This patch also fixes the definition of TARGET_NEON_FP16 which used to
>> require both neon and fp16 features to be enabled. This was
>> inadvertently weakened, when the macro definition was changed to use
>> ARM_FPU_FSET_HAS, to only require one of neon or fp16 to be
>> enabled. This patch returns to the original
>> requirements. TARGET_NEON_FP16 is only used in instruction selection for
>> HF-mode data moves.
>>
>> Tested for arm-none-eabi with cross-compiled check-gcc and for
>> arm-none-linux-gnueabihf with native bootstrap and make check.
>>
>> Ok for trunk?
>> Matthew
>
> This is OK - thanks.

Hi,

I'm seeing regressions on non-hf targets (arm-none-eabi,
arm-none-linux-gnueabi):
new FAIL:
gcc.target/arm/aapcs/neon-vect10.c execution test
gcc.target/arm/aapcs/neon-vect9.c execution test

I'm using QEMU (2.4.1). You said you tested arm-none-eabi, so I'm
probably missing something?

Christophe


>
> We have to deal with Joseph's points around the issue with double
> rounding but I think that's the subject of a separate patch.
>
> regards
> Ramana
>
>>
>> gcc/
>> 2016-04-27  Matthew Wahab  <matthew.wa...@arm.com>
>>             Ramana Radhakrishnan  <ramana.radhakrish...@arm.com>
>>             Jiong Wang  <jiong.w...@arm.com>
>>
>>         * config/arm/arm-c.c (arm_cpu_builtins): Use def_or_undef_macro
>>         for __ARM_FP16_FORMAT_IEEE and __ARM_FP16_FORMAT_ALTERNATIVE.
>>         Define __ARM_FP16_ARGS when appropriate.
>>         * config/arm/arm.c (arm_invalid_parameter_type): Remove
>>         declaration.
>>         (arm_invalid_return_type): Likewise.
>>         (TARGET_INVALID_PARAMETER_TYPE): Remove.
>>         (TARGET_INVALID_RETURN_TYPE): Remove.
>>         (aapcs_vfp_sub_candidate): Allow HFmode.
>>         (aapcs_vfp_allocate): Add comment.  Support HFmode.
>>         (aapcs_vfp_allocate_return_reg): Likewise.
>>         (struct aapcs_cp_arg_layout): Slightly reword comments for
>>         is_return_candidate and allocate_return_reg.
>>         (output_mov_vfp): Update assert.
>>         (arm_hard_regno_mode_ok): Remove comment, update HF-mode
>>         condition.
>>         (arm_invalid_parameter_type): Remove.
>>         (amr_invalid_return_type): Remove.
>>         * config/arm/arm.h (TARGET_NEON_FP16): Fix definition.
>>         * config/arm/arm.md (*arm32_movhf): Disable for TARGET_VFP.
>>         * config/arm/vfp.md (*movhf_vfp): Enable for TARGET_VFP.
>>
>> gcc/testsuite/
>> 2016-04-27  Matthew Wahab  <matthew.wa...@arm.com>
>>
>>         * g++.dg/ext/arm-fp16/fp16-param-1.c: Update expected output.  Add
>>         test for __ARM_FP16_ARGS.
>>         * g++.dg/ext/arm-fp16/fp16-return-1.c: Update expected output.
>>         * gcc.target/arm/aapcs/neon-vect10.c: New.
>>         * gcc.target/arm/aapcs/neon-vect9.c: New.
>>         * gcc.target/arm/aapcs/vfp18.c: New.
>>         * gcc.target/arm/aapcs/vfp19.c: New.
>>         * gcc.target/arm/aapcs/vfp20.c: New.
>>         * gcc.target/arm/aapcs/vfp21.c: New.
>>         * gcc.target/arm/fp16-aapcs-1.c: New.
>>         * g++.target/arm/fp16-param-1.c: Update expected output.  Add
>>         test for __ARM_FP16_ARGS.
>>         * g++.target/arm/fp16-return-1.c: Update expected output.

Reply via email to