Hi,

On Mon, 2020-04-20 at 14:00 -0500, Aaron Sawdey via Gcc-patches wrote:
> For future architecture with prefix instructions, always use plq
> rather than lq for atomi load of quadword. Then we never have to

atomic :-)

> do the doubleword swap on little endian. Before this fix, -mno-pcrel
> would generate lq with the doubleword swap (which was ok) and -mpcrel
> would generate plq, also with the doubleword swap, which was wrong.
> 
> OK for trunk if regstrap passes on ppc64le power9?

> 
> Thanks,
>    Aaron
> 
> 2020-04-20  Aaron Sawdey  <acsaw...@linux.ibm.com>
> 
>       PR target/94622
>       * config/rs6000/sync.md (load_quadpti): Make this have attr
> prefixed
>       if TARGET_PREFIXED.

I'd rearrange to be
: Add attr "prefixed" if TARGET_PREFIXED.

but thats mostly cosmetic, so no big deal.  

>       (atomic_load<mode>): Do not swap doublewords if TARGET_PREFIXED
> as
>       plq will be used and doesn't need it.

Ok.   


> ---
>  gcc/config/rs6000/sync.md | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/gcc/config/rs6000/sync.md b/gcc/config/rs6000/sync.md
> index f27edc77b6a..64dfda6ef75 100644
> --- a/gcc/config/rs6000/sync.md
> +++ b/gcc/config/rs6000/sync.md
> @@ -129,7 +129,10 @@ (define_insn "load_quadpti"
>    "TARGET_SYNC_TI
>     && !reg_mentioned_p (operands[0], operands[1])"
>    "lq %0,%1"
> -  [(set_attr "type" "load")])
> +  [(set_attr "type" "load")
> +   (set_attr "prefixed" (if_then_else (match_test "TARGET_PREFIXED")
> +                                      (const_string "yes")
> +                                      (const_string "no")))])
> 
>  (define_expand "atomic_load<mode>"
>    [(set (match_operand:AINT 0 "register_operand")            ;;
> output
> @@ -162,7 +165,7 @@ (define_expand "atomic_load<mode>"
> 
>        emit_insn (gen_load_quadpti (pti_reg, op1));
> 
> -      if (WORDS_BIG_ENDIAN)
> +      if (WORDS_BIG_ENDIAN || TARGET_PREFIXED)
>       emit_move_insn (op0, gen_lowpart (TImode, pti_reg));
>        else
>       {

seems straightforward.  lgtm.  

Thanks
-Will


Reply via email to