http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48612

           Summary: [4.7 Regression] vminps instruction is generated with
                    -ftree-vectorize even without -mavx, causing SIGILL
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: zso...@seznam.cz
              Host: x86_64-pc-linux-gnu
            Target: x86_64-pc-linux-gnu


Created attachment 23990
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23990
reduced testcase (from gcc.target/i386/sse-minps-1.c)

Output:
$ gcc -O -ftree-vectorize testcase.c
$ ./a.out
Program received signal SIGILL, Illegal instruction.
0x00000000004004eb in do_test (e=0x7fffffffde70) at testcase.c:16
16          e[i] = s1.a[i] < s2.a[i] ? s1.a[i] : s2.a[i];
(gdb) disassemble
Dump of assembler code for function do_test:
   0x00000000004004e4 <+0>:     movaps 0x135(%rip),%xmm0        # 0x400620
=> 0x00000000004004eb <+7>:     vminps 0x13d(%rip),%xmm0,%xmm0        #
0x400630
   0x00000000004004f3 <+15>:    movlps %xmm0,(%rdi)
   0x00000000004004f6 <+18>:    movhps %xmm0,0x8(%rdi)
   0x00000000004004fa <+22>:    retq   
End of assembler dump.

Reply via email to