On 23/10/17 17:36, Dominik Inführ wrote: > I’ve added your suggestions. I would also like to propose to change the type > attribute from neon_stp to store_8 and store_16, this seems to be more in > line with respect to other patterns. > > Thanks, > Dominik > > ChangeLog: > 2017-10-23 Dominik Infuehr <dominik.infu...@theobroma-systems.com> > > * config/aarch64/aarch64-simd.md > (*aarch64_simd_mov<VD:mode>): Fix type-attribute. > (*aarch64_simd_mov<VQ:mode>): Likewise.
I don't think we should conflate loads/stores to the simd registers with loads/stores to the gp registers. They might have very different characteristics. So no, I don't think we should change it that way. You've also missed the renaming of the ambiguous patterns from your changelog entry. Finally, 'fix xxx' is generally frowned upon in ChangeLogs. A better description would be 'Re-order type attributes to match pattern alternatives'. R. > — > diff --git a/gcc/config/aarch64/aarch64-simd.md > b/gcc/config/aarch64/aarch64-simd.md > index 49f615cfdbf..447ee3afd17 100644 > --- a/gcc/config/aarch64/aarch64-simd.md > +++ b/gcc/config/aarch64/aarch64-simd.md > @@ -102,7 +102,7 @@ > [(set_attr "type" "neon_dup<q>")] > ) > > -(define_insn "*aarch64_simd_mov<mode>" > +(define_insn "*aarch64_simd_mov<VD:mode>" > [(set (match_operand:VD 0 "nonimmediate_operand" > "=w, m, m, w, ?r, ?w, ?r, w") > (match_operand:VD 1 "general_operand" > @@ -126,12 +126,12 @@ > default: gcc_unreachable (); > } > } > - [(set_attr "type" "neon_load1_1reg<q>, neon_stp, neon_store1_1reg<q>,\ > + [(set_attr "type" "neon_load1_1reg<q>, store_8, neon_store1_1reg<q>,\ > neon_logic<q>, neon_to_gp<q>, f_mcr,\ > mov_reg, neon_move<q>")] > ) > > -(define_insn "*aarch64_simd_mov<mode>" > +(define_insn "*aarch64_simd_mov<VQ:mode>" > [(set (match_operand:VQ 0 "nonimmediate_operand" > "=w, Umq, m, w, ?r, ?w, ?r, w") > (match_operand:VQ 1 "general_operand" > @@ -160,8 +160,8 @@ > gcc_unreachable (); > } > } > - [(set_attr "type" "neon_load1_1reg<q>, neon_store1_1reg<q>,\ > - neon_stp, neon_logic<q>, multiple, multiple,\ > + [(set_attr "type" "neon_load1_1reg<q>, store_16, neon_store1_1reg<q>,\ > + neon_logic<q>, multiple, multiple,\ > multiple, neon_move<q>") > (set_attr "length" "4,4,4,4,8,8,8,4")] > ) > > >> On 20 Oct 2017, at 16:07, Richard Earnshaw (lists) >> <richard.earns...@arm.com> wrote: >> >> On 16/10/17 14:26, Dominik Inführ wrote: >>> Hi, >>> >>> it seems the type attributes for neon_stp and neon_store1_1reg<q> should be >>> the other way around. >>> >> >> Yes, I agree, but there's more.... >> >> Firstly, we have two patterns that are named *aarch64_simd_mov<mode>, >> with different iterators. That's slightly confusing. I think they need >> to be renamed as: >> >> *aarch64_simd_mov<VD:mode> >> >> and >> >> *aarch64_simd_mov<VQ:mode> >> >> to break the ambiguity. >> >> Secondly it looks to me as though the attributes on the other one are >> also incorrect. Could you check that one out as well, please. >> >> Thanks, >> >> R. >> >>> Thanks >>> Dominik >>> >>> ChangeLog: >>> 2017-10-16 Dominik Infuehr <dominik.infu...@theobroma-systems.com> >>> >>> * config/aarch64/aarch64-simd.md >>> (*aarch64_simd_mov<mode>): Fix type-attribute. >>> -- >>> diff --git a/gcc/config/aarch64/aarch64-simd.md >>> b/gcc/config/aarch64/aarch64-simd.md >>> index 49f615cfdbf..409ad3502ff 100644 >>> --- a/gcc/config/aarch64/aarch64-simd.md >>> +++ b/gcc/config/aarch64/aarch64-simd.md >>> @@ -160,8 +160,8 @@ >>> gcc_unreachable (); >>> } >>> } >>> - [(set_attr "type" "neon_load1_1reg<q>, neon_store1_1reg<q>,\ >>> - neon_stp, neon_logic<q>, multiple, multiple,\ >>> + [(set_attr "type" "neon_load1_1reg<q>, neon_stp, neon_store1_1reg<q>,\ >>> + neon_logic<q>, multiple, multiple,\ >>> multiple, neon_move<q>") >>> (set_attr "length" "4,4,4,4,8,8,8,4")] >>> ) >>> >> >