[...@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

Reply via email to