"Kewen.Lin" <li...@linux.ibm.com> writes:

> Hi!
>
>> +
>> +      /* Use paddi for the low 32 bits.  */
>> +      if (ud2 != 0 && ud1 != 0 && can_use_paddi)
>> +        emit_move_insn (dest, gen_rtx_PLUS (DImode, dest,
>> +                                            GEN_INT ((ud2 << 16) | ud1)));
>> +
>> +      /* Use oris, ori for low 32 bits.  */
>> +      if (ud2 != 0 && (ud1 == 0 || !can_use_paddi))
>> +        emit_move_insn (ud1 != 0 ? dest : dest,
>
> Nit: "ud1 != 0 ? dest : dest" => dest
Thanks! Yes, only 'dest' is ok.
>
>> +                        gen_rtx_IOR (DImode, dest, GEN_INT (ud2 << 16)));
>> +      if (ud1 != 0 && (ud2 == 0 || !can_use_paddi))
>> +        emit_move_insn (dest, gen_rtx_IOR (DImode, dest, GEN_INT (ud1)));
>> +    }
>> +    }
>>    else
>>      {
>>        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
>> diff --git a/gcc/testsuite/gcc.target/powerpc/pr106550.c 
>> b/gcc/testsuite/gcc.target/powerpc/pr106550.c
>> new file mode 100644
>> index 00000000000..d023fac4676
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/powerpc/pr106550.c
>> @@ -0,0 +1,14 @@
>> +/* PR target/106550 */
>> +/* { dg-options "-O2 -mdejagnu-cpu=power10" } */
>> +/* { dg-require-effective-target power10_ok } */
>> +
>> +void
>> +foo (unsigned long long *a)
>> +{
>> +  *a++ = 0x020805006106003; /* pli+pli+rldimi */
>> +  *a++ = 0x2351847027482577;/* pli+pli+rldimi */  
>> +}
>> +
>> +/* { dg-final { scan-assembler-times {\mpli\M} 4 } } */
>> +/* { dg-final { scan-assembler-times {\mrldimi\M} 2 } } */
>> +
>> diff --git a/gcc/testsuite/gcc.target/powerpc/pr106550_1.c 
>> b/gcc/testsuite/gcc.target/powerpc/pr106550_1.c
>> new file mode 100644
>> index 00000000000..48f76ca3da9
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/powerpc/pr106550_1.c
>> @@ -0,0 +1,22 @@
>> +/* PR target/106550 */
>> +/* { dg-require-effective-target power10_ok } */
>> +/* { dg-options "-O2 -mdejagnu-cpu=power10 -fdisable-rtl-split1" } */
>> +/* force the constant splitter run after RA: -fdisable-rtl-split1.  */
>> +
>> +void
>> +foo (unsigned long long *a)
>> +{
>> +  /* Test oris/ori is used where paddi does not work with 'r0'. */
>> +  register long long d asm("r0") = 0x1245abcef9240dec; /* pli+sldi+oris+ori 
>> */
>> +  long long n;
>> +  asm("cntlzd %0, %1" : "=r"(n) : "r"(d));
>> +  *a++ = n;
>> +
>> +  *a++ = 0x235a8470a7480000ULL; /* pli+sldi+oris*/
>> +  *a++ = 0x23a184700000b677ULL; /* pli+sldi+ori*/
>
> Nit: I guess you want one space at the separated end of these two comment 
> lines
> since the comment lines at the other places have.  :)
Yeap, thanks for your careful review!

BR,
Jeff(Jiufu)
>
> BR,
> Kewen

Reply via email to