[ARM] Fix, add tests for FP16 aapcs.

Christophe Lyon christophe.lyon@linaro.org
Fri Jun 10 14:22:00 GMT 2016


On 10 June 2016 at 15:56, Matthew Wahab <matthew.wahab@foss.arm.com> wrote:
> On 10/06/16 09:32, Christophe Lyon wrote:
>>
>> On 9 June 2016 at 17:21, Matthew Wahab <matthew.wahab@foss.arm.com> wrote:
>>>
>>> A number of tests were added to check for FP16 arguments and return
>>> values being passed in registers. These require mfloat-abi=hard to be
>>> selected but in some test configurations they were run with
>>> -mfloat-abi=soft or -mfloat-abi=softfp.
>>>
>> It's an improvement, but I'm still seeing a few problems with this patch:
>> the vfp* tests are still failing in some of the configurations I test,
>> because
>> * you force dg-options that contains -mfloat-abi=hard,
>> * you check effective-target arm_neon_fp16_hw
>> * but you don't call dg-add-options arm_neon_fp16
>>
>> on non-hf targets, the effective-target arm_neon_fp16_hw will want to
>> add -mfloat-abi=softfp, but you actually force -mfloat-abi=hard.
>> So, the dg-skip directive doesn't match, and the test fails to link
>> because
>> the dejagnu glue code is compiled in soft mode, and conflicts
>> with the hard mode from vfpXX.o
>
>
> Thanks for testing this.
>
> I'm not sure why the skip-if is failing, it's intended to skip the test if
> float-abi={soft,softfp} appears anywhere in the command line. That's needed
> because, in some configurations, the directives add an -mfloat-abi=softfp
> after the -mfloat-abi=hard from dg-options, making the test fail.
>
> The require-effective-target arm_neon_fp16_hw was intended to select a
> hard-float target with FP16 support. I don't think that dg-add-options
> arm_neon_fp16 is right because that could also force soft-fp.
>
I'm seeing arm_neon_fp16_hw test passing with -mfpu=neon-fp16 -mfloat-abi=softfp
but since you don't call dg-add-options arm_neon_fp16, the dg-skip directive
sees only the -mfloat-abi-hard which comes from dg-options.
The test fails to link for me with -mfpu=vfp -mfloat-abi=hard -mfp16-format=ieee
according to my gcc.log

Christophe


> It may be better to not use arm_neon_fp16_hw. The existing aapc/vfp* tests
> have a list of require-effective-target directives to filter out invalid
> boards. I'll see if that can be made to work with arm_hard_vfp_ok and a
> selector for vfp-fp16 hardware.
>
> Matthew
>



More information about the Gcc-patches mailing list