[PATCH 2/2] rs6000: Define define_insn_and_split to split unspec sldi+or to rldimi
luoxhu
luoxhu@linux.ibm.com
Mon Jul 13 01:27:51 GMT 2020
On 2020/7/11 08:28, Segher Boessenkool wrote:
> Hi!
>
> On Thu, Jul 09, 2020 at 09:14:45PM -0500, Xiong Hu Luo wrote:
>> * config/rs6000/rs6000.md (rotl_unspec): New
>> define_insn_and_split.
>
>> +; rldimi with UNSPEC_SI_FROM_SF.
>> +(define_insn_and_split "*rotl_unspec"
>
> Please have rotldi3_insert in the name. "unspec" in the name doesn't
> really mean much... Can you put "sf" in the name, instead? So something
> like "*rotldi3_insert_sf"?
>
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/powerpc/vector_float.c
>> @@ -0,0 +1,14 @@
>> +/* { dg-do compile } */
>> +/* { dg-options "-O2 -mdejagnu-cpu=power9" } */
>
> This needs p9vector_ok (yes, that name doesn't make too much sense).
>
>> +vector float
>> +test (float *a, float *b, float *c, float *d)
>> +{
>> + return (vector float){*a, *b, *c, *d};
>> +}
>> +
>> +/* { dg-final { scan-assembler-not {\mlxsspx\M} } } */
>> +/* { dg-final { scan-assembler-not {\mlfs\M} } } */
>
> No lxssp or lfsx either... or the update forms...
>
> /* { dg-final { scan-assembler-not {\mlxssp} } } */
> /* { dg-final { scan-assembler-not {\mlfs} } } */
>
> works fine (there are no other mnemonics starting with those strings).
>
>> +/* { dg-final { scan-assembler-times {\mlwz\M} 4 } } */
>> +/* { dg-final { scan-assembler-times {\mrldimi\M} 2 } } */
>> +/* { dg-final { scan-assembler-times {\mmtvsrdd\M} 1 } } */
>
> Okay for trunk with those changes (or post again if you prefer). Thanks!
>
Thanks. The 2 patches are committed to trunk(r11-2043, r11-2044) after
modifications.
Xionghu
More information about the Gcc-patches
mailing list