[...@gnu-6 pr39146]$ cat bar.i typedef long long __m256i __attribute__ ((__vector_size__ (32), __may_alias__));
__m256i bar (__m256i y, __m256i x) { return x; } [...@gnu-6 pr39146]$ /export/build/gnu/gcc-stack/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc-work/build-x86_64-linux/gcc/ -S -o bar.s -O2 -mavx -m32 bar.i [...@gnu-6 pr39146]$ cat bar.s .file "bar.i" .text .p2align 4,,15 .globl bar .type bar, @function bar: pushl %ebp movl %esp, %ebp andl $-32, %esp movl 8(%ebp), %eax vmovdqa %ymm1, (%eax) movl %ebp, %esp popl %ebp ret $4 .size bar, .-bar __m256 should be returned in ymm0. -- Summary: __m256 isn't returned in ymm0 in 32bit Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: critical Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl dot tools at gmail dot com GCC target triplet: i386-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39256