On 23/06/15 11:43, Renlin Li wrote:
Hi Christophe,

Yes, we have also noticed this failure.

Here I have a simple patch to remove the mfloat-abi option for
hard-float toolchain. The default abi is used.
For non-hardfloat toolchain, softfp abi is specified.

I have checked with arm-none-eabi and arm-none-linux-gnueabihf
toolchain, this problem should be resolved by this patch.

Okay to commit?

Ok.
Thanks,
Kyrill



gcc/testsuite/ChangeLog:

2015-06-23  Renlin Li  <renlin...@arm.com>

      * gcc.target/arm/unsigned-float.c: Different options for hf toolchain.


On 16/06/15 14:33, Christophe Lyon wrote:
On 20 March 2015 at 18:03, Renlin Li <renlin...@arm.com> wrote:
Hi all,

This is a simple patch to enable two simplifications for UNSIGNED_FLOAT
expression.

For the following rtx patterns, they can be simplified when the integer x
can be
represented in float mode without precision loss:

float_truncate (float x) --> float x
float_extend (float x) --> float x

Those two simplifications are also applicable to UNSIGNED_FLOAT expression.

For example, compile the following code using aarch64-none-elf toolchain
with -O1 flag.
double
f1 (uint16_t x)
{
    return (double)(float)x;
}
Before the change, the compiler generates the following code:
f1:
          uxth    w0, w0
          ucvtf   s0, w0
          fcvt    d0, s0
          ret
After the change, the following simplified asm code snipts are generated.
f1:
          uxth    w0, w0
          ucvtf   d0, w0
          ret


aarch64-none-elf regression test runs Okay. x86_64 bootstraps Okay.
Okay to commit?

gcc/ChangeLog:

2015-03-20  Renlin Li  <renlin...@arm.com>

      * simplify-rtx.c (simplify_unary_operation_1): Fix a typo. Enable two
      simplifications for UNSIGNED_FLOAT.

gcc/testsuite/ChangeLog:

2015-03-20  Renlin Li  <renlin...@arm.com>

      * gcc.target/aarch64/unsigned-float.c: New.
      * gcc.target/arm/unsigned-float.c: New.
This new test fails on ARM targets defaulting to hard-float which have
no softfp multilib.
I'm not sure about the best way to fix this.

Note that dg-require-effective-target arm_vfp_ok passes, but the
testcase fails because it includes stdint.h, leading to:
sysroot-arm-none-linux-gnueabihf/usr/include/gnu/stubs.h:7:29: fatal
error: gnu/stubs-soft.h: No such file or directory

Christophe.


Reply via email to