[PATCH] Enable two UNSIGNED_FLOAT simplifications in simplify_unary_operation_1

Renlin Li renlin.li@arm.com
Fri Mar 20 17:03:00 GMT 2015


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.li@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.li@arm.com>

     * gcc.target/aarch64/unsigned-float.c: New.
     * gcc.target/arm/unsigned-float.c: New.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 2.diff
Type: text/x-patch
Size: 2849 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150320/563a3897/attachment.bin>


More information about the Gcc-patches mailing list