[PATCH 5/6] [ARC] Update fma expansions.
Claudiu Zissulescu
claziss@gmail.com
Wed Jun 13 08:54:00 GMT 2018
Done. Thank you,
Claudiu
On Tue, Jun 12, 2018 at 10:32 PM, Andrew Burgess
<andrew.burgess@embecosm.com> wrote:
> * Claudiu Zissulescu <claziss@gmail.com> [2018-05-21 13:18:38 +0300]:
>
>> Make sure only one operand has an immediate.
>>
>> OK to apply?
>
> Looks good.
>
> Thanks,
> Andrew
>
>> Claudiu
>>
>> gcc/
>> 2018-03-21 Claudiu Zissulescu <claziss@synopsys.com>
>>
>> * config/arc/fpu.md (fmasf4): Force operand to register.
>> (fnmasf4): Likewise.
>>
>> gcc/testsuite
>> 2018-03-21 Claudiu Zissulescu <claziss@synopsys.com>
>>
>> * gcc.target/arc/fma-1.c: New test.
>> ---
>> gcc/config/arc/fpu.md | 6 ++++++
>> gcc/testsuite/gcc.target/arc/fma-1.c | 13 +++++++++++++
>> 2 files changed, 19 insertions(+)
>> create mode 100644 gcc/testsuite/gcc.target/arc/fma-1.c
>>
>> diff --git a/gcc/config/arc/fpu.md b/gcc/config/arc/fpu.md
>> index de876cac0c1..9457922667e 100644
>> --- a/gcc/config/arc/fpu.md
>> +++ b/gcc/config/arc/fpu.md
>> @@ -64,6 +64,9 @@
>> tmp = gen_rtx_REG (SFmode, ACCL_REGNO);
>> emit_move_insn (tmp, operands[3]);
>> operands[3] = tmp;
>> + if (!register_operand (operands[1], SFmode)
>> + && !register_operand (operands[2], SFmode))
>> + operands[2] = force_reg (SFmode, operands[2]);
>> }")
>>
>> (define_expand "fnmasf4"
>> @@ -77,6 +80,9 @@
>> tmp = gen_rtx_REG (SFmode, ACCL_REGNO);
>> emit_move_insn (tmp, operands[3]);
>> operands[3] = tmp;
>> + if (!register_operand (operands[1], SFmode)
>> + && !register_operand (operands[2], SFmode))
>> + operands[2] = force_reg (SFmode, operands[2]);
>> }")
>>
>> (define_insn "fmasf4_fpu"
>> diff --git a/gcc/testsuite/gcc.target/arc/fma-1.c b/gcc/testsuite/gcc.target/arc/fma-1.c
>> new file mode 100644
>> index 00000000000..c195ad98127
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/arc/fma-1.c
>> @@ -0,0 +1,13 @@
>> +/* { dg-do compile } */
>> +/* { dg-skip-if "FPU not available" { arc700 || arc6xx } } */
>> +/* { dg-options "-s -std=gnu11 -O2 -frounding-math -mfpu=fpus_all" } */
>> +
>> +const float a, b = 7.8539818525e01;
>> +
>> +/* Check if the fma operation is generated correctly. */
>> +
>> +int foo (void)
>> +{
>> + return (float)3.0 * b + a;
>> +}
>> +/* { dg-final { scan-assembler "fsmadd" } } */
>> --
>> 2.14.3
>>
More information about the Gcc-patches
mailing list