[PATCH i386 5/8] [AVX-512] Extend vectorizer hooks.
Kirill Yukhin
kirill.yukhin@gmail.com
Thu Jan 2 10:53:00 GMT 2014
Hello Eric,
On 02 Jan 00:07, Eric Botcazou wrote:
> The change is actually to ix86_data_alignment, not to ix86_constant_alignment:
>
> @@ -26219,7 +26433,8 @@ ix86_constant_alignment (tree exp, int align)
> int
> ix86_data_alignment (tree type, int align, bool opt)
> {
> - int max_align = optimize_size ? BITS_PER_WORD : MIN (256,
> MAX_OFILE_ALIGNMENT);
> + int max_align = optimize_size ? BITS_PER_WORD
> + : MIN (512, MAX_OFILE_ALIGNMENT);
>
> if (opt
> && AGGREGATE_TYPE_P (type)
> Note that it has unexpected side-effects: previously, in 32-bit mode, 256-bit
> aggregate objects would have been given 256-bit alignment; now, they will fall
> back to default alignment, for example 32-bit only.
Frankly speaking, I do not understand, what's wrong here.
IMHO, this change is pretty mechanical: we just extend maximal aligment available.
Because of 512-bit data types we now extend maximal aligment to 512 bits.
I suspect that an issue is here:
if (opt
&& AGGREGATE_TYPE_P (type)
&& TYPE_SIZE (type)
&& TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
&& (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= (unsigned) max_align
|| TREE_INT_CST_HIGH (TYPE_SIZE (type)))
&& align < max_align)
align = max_align;
Maybe we can split it and handle 256-bit aggregates separately?
--
Thanks, K
More information about the Gcc-patches
mailing list