This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [AArch64][PATCH 1/2] Fix addressing printing of LDP/STP
- From: Richard Sandiford <richard dot sandiford at arm dot com>
- To: Andre Simoes Dias Vieira <Andre dot SimoesDiasVieira at arm dot com>
- Cc: "gcc-patches\@gcc.gnu.org" <gcc-patches at gcc dot gnu dot org>, nd <nd at arm dot com>
- Date: Thu, 14 Jun 2018 12:28:16 +0100
- Subject: Re: [AArch64][PATCH 1/2] Fix addressing printing of LDP/STP
- References: <AM6PR08MB3254F356249918948A2B17FB88640@AM6PR08MB3254.eurprd08.prod.outlook.com>
Andre Simoes Dias Vieira <Andre.SimoesDiasVieira@arm.com> writes:
> @@ -5716,10 +5717,17 @@ aarch64_classify_address (struct aarch64_address_info *info,
> unsigned int vec_flags = aarch64_classify_vector_mode (mode);
> bool advsimd_struct_p = (vec_flags == (VEC_ADVSIMD | VEC_STRUCT));
> bool load_store_pair_p = (type == ADDR_QUERY_LDP_STP
> + || type == ADDR_QUERY_LDP_STP_N
> || mode == TImode
> || mode == TFmode
> || (BYTES_BIG_ENDIAN && advsimd_struct_p));
>
> + /* If we are dealing with ADDR_QUERY_LDP_STP_N that means the incoming mode
> + corresponds to the actual size of the memory being loaded/stored and the
> + mode of the corresponding addressing mode is half of that. */
> + if (type == ADDR_QUERY_LDP_STP_N && known_eq (GET_MODE_SIZE (mode), 16))
> + mode = DFmode;
> +
> bool allow_reg_index_p = (!load_store_pair_p
> && (known_lt (GET_MODE_SIZE (mode), 16)
> || vec_flags == VEC_ADVSIMD
I don't know whether it matters in practice, but that description also
applies to Umq, not just Uml. It might be worth changing it too so
that things stay consistent.
Thanks,
Richard