This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/81496] AVX load from adjacent memory location followed by concatenation
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 21 Jul 2017 09:13:29 +0000
- Subject: [Bug target/81496] AVX load from adjacent memory location followed by concatenation
- Auto-submitted: auto-generated
- References: <bug-81496-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81496
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Strangely I've just today tried icc on
typedef int V __attribute__((vector_size (32)));
V
f1 (int a, int b, int c, int d, int e, int f, int g, int h)
{
return (V) { a, b, c, d, e, f, g, h };
}
with -O3 -march=core-avx2 and got:
movl 16(%rbp), %eax
movl 24(%rbp), %r10d
movl %edi, -32(%rsp)
movl %esi, -28(%rsp)
movl %edx, -24(%rsp)
movl %ecx, -20(%rsp)
movl %r8d, -16(%rsp)
movl %r9d, -12(%rsp)
movl %eax, -8(%rsp)
movl %r10d, -4(%rsp)
vmovdqu -32(%rsp), %ymm0
ICC 17.0.4 20170411.
Similarly for
typedef long long V __attribute__((vector_size (64)));
V
f1 (long long a, long long b, long long c, long long d, long long e, long long
f, long long g, long long h)
{
return (V) { a, b, c, d, e, f, g, h };
}
and -O3 -xCORE-AVX512.