On Mon, Jan 09, 2017 at 07:32:27PM -0500, Michael Meissner wrote:
> This patch fixes PR target/79004 by eliminating the optimization of avoiding
> direct move if we are converting an 8/16-bit integer value from memory to IEEE
> 128-bit floating point.
> 
> I opened a new bug (PR target/79038) to address the underlying issue that the
> IEEE 128-bit floating point integer conversions were written before small
> integers were allowed in the traditional Altivec registers.  This meant that 
> we
> had to use UNSPEC and explicit temporaries to get the integers into the
> appropriate registers.
> 
> I have tested this bug by doing a bootstrap build and make check on a little
> endian power8 system and using an assembler that knows about ISA 3.0
> instructions.  I added a new test to verify the results.  Can I check this 
> into
> the trunk?  This is not an issue on GCC 6.x.

Okay, thanks!  Two comments:

> +/* { dg-final { scan-assembler-not " bl __"    } } */
> +/* { dg-final { scan-assembler     "xscvdpqp"  } } */
> +/* { dg-final { scan-assembler     "xscvqpdp"  } } */

This line always matches if ...

> +/* { dg-final { scan-assembler     "xscvqpdpo" } } */

... this one does.  I recommend \m \M .

> +/* { dg-final { scan-assembler     "xscvqpsdz" } } */
> +/* { dg-final { scan-assembler     "xscvqpswz" } } */
> +/* { dg-final { scan-assembler     "xscvsdqp"  } } */
> +/* { dg-final { scan-assembler     "xscvudqp"  } } */
> +/* { dg-final { scan-assembler     "lxsd"      } } */
> +/* { dg-final { scan-assembler     "lxsiwax"   } } */
> +/* { dg-final { scan-assembler     "lxsiwzx"   } } */
> +/* { dg-final { scan-assembler     "lxssp"     } } */
> +/* { dg-final { scan-assembler     "stxsd"     } } */
> +/* { dg-final { scan-assembler     "stxsiwx"   } } */
> +/* { dg-final { scan-assembler     "stxssp"    } } */

There are many more than 14 instructions generated; maybe you want
scan-assembler-times?


Segher

Reply via email to