https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70581

            Bug ID: 70581
           Summary: [6 regression] gcc.dg/lto/simd-function FAILs
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ro at gcc dot gnu.org
  Target Milestone: ---
              Host: i386-pc-solaris2.1[012]
            Target: i386-pc-solaris2.1[012]
             Build: i386-pc-solaris2.1[012]

After 20160401, the gcc.dg/lto/simd-function testcase began to FAIL on
Solaris/x86
with /bin/as:

FAIL: gcc.dg/lto/simd-function c_lto_simd-function_0.o assemble,  -fopenmp-simd
-O3 -ffast-math -mavx2 -flto -flto-partition=max 
UNRESOLVED: gcc.dg/lto/simd-function
c_lto_simd-function_0.o-c_lto_simd-function_0.o execute  -fopenmp-simd -O3
-ffast-math -mavx2 -flto -flto-partition=max 
UNRESOLVED: gcc.dg/lto/simd-function
c_lto_simd-function_0.o-c_lto_simd-function_0.o link  -fopenmp-simd -O3
-ffast-math -mavx2 -flto -flto-partition=max 

Assembler: simd-function_0.c
        "/var/tmp//ccw.aGWM.s", line 850 : Invalid instruction argument
        Near line: "    vmulps  %zmm1, %zmm0, %zmm0"
        "/var/tmp//ccw.aGWM.s", line 858 : Illegal mnemonic
        Near line: "    vpxord  %zmm3, %zmm3, %zmm3"
        "/var/tmp//ccw.aGWM.s", line 858 : Syntax error
        Near line: "    vpxord  %zmm3, %zmm3, %zmm3"
        "/var/tmp//ccw.aGWM.s", line 860 : Invalid instruction argument
        Near line: "    vmulps  %zmm1, %zmm0, %zmm0"
        "/var/tmp//ccw.aGWM.s", line 863 : Illegal mnemonic
        Near line: "    vpcmpd  $4, %zmm3, %zmm2, %k1"
        "/var/tmp//ccw.aGWM.s", line 863 : Syntax error
        Near line: "    vpcmpd  $4, %zmm3, %zmm2, %k1"
        "/var/tmp//ccw.aGWM.s", line 866 : Illegal mnemonic
        Near line: "    kmovw   %k1, %eax"
        "/var/tmp//ccw.aGWM.s", line 866 : Syntax error
        Near line: "    kmovw   %k1, %eax"
        "/var/tmp//ccw.aGWM.s", line 870 : Invalid instruction argument
        Near line: "    vmovaps %zmm0, -120(%ebp){%k1}"
        "/var/tmp//ccw.aGWM.s", line 872 : Invalid instruction argument
        Near line: "    vmovaps -120(%ebp), %zmm0"

for both 32 and 64-bit.  It seems the compiler started to emit avx512f insns
despite the -mavx2.  Either the testcase needs to be amended requiring the 
corresponding effective-target, or the compiler fixed not to emit those unless
told to...

Here's a diff between the assembler outputs from 20160401 and 20160407:

--- /homes/ro/simd-function_0.s 2016-04-07 18:05:16.449629000 +0200
+++ simd-function_0.s   2016-04-07 18:06:05.170292167 +0200
[...]
@@ -846,6 +846,39 @@
        leal    -4(%ecx), %esp
        ret
        .size   _ZGVdM8vv_my_mul, .-_ZGVdM8vv_my_mul
+       .p2align 4,,15
+       .globl  _ZGVeN16vv_my_mul
+       .type   _ZGVeN16vv_my_mul, @function
+_ZGVeN16vv_my_mul:
+       vmulps  %zmm1, %zmm0, %zmm0
+       ret
+       .size   _ZGVeN16vv_my_mul, .-_ZGVeN16vv_my_mul
+       .p2align 4,,15
+       .globl  _ZGVeM16vv_my_mul
+       .type   _ZGVeM16vv_my_mul, @function
+_ZGVeM16vv_my_mul:
+       leal    4(%esp), %ecx
+       vpxord  %zmm3, %zmm3, %zmm3
+       andl    $-64, %esp
+       vmulps  %zmm1, %zmm0, %zmm0
+       pushl   -4(%ecx)
+       pushl   %ebp
+       vpcmpd  $4, %zmm3, %zmm2, %k1
+       movl    %esp, %ebp
+       pushl   %ecx
+       kmovw   %k1, %eax
+       subl    $308, %esp
+       testw   %ax, %ax
+       je      .L89
+       vmovaps %zmm0, -120(%ebp){%k1}
+.L89:
+       vmovaps -120(%ebp), %zmm0
+       addl    $308, %esp
+       popl    %ecx
+       popl    %ebp
+       leal    -4(%ecx), %esp
+       ret
+       .size   _ZGVeM16vv_my_mul, .-_ZGVeM16vv_my_mul
        .comm   x,16384,32
        .section        .rodata
        .align 4

  Rainer

Reply via email to