[Bug target/86752] New: FAIL: gcc.target/i386/avx2-cvt-2.c

hjl.tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Jul 31 12:37:00 GMT 2018


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

            Bug ID: 86752
           Summary: FAIL: gcc.target/i386/avx2-cvt-2.c
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
                CC: ubizjak at gmail dot com, wei3.xiao at intel dot com
  Target Milestone: ---
            Target: i386,x86-64

For

---
#define N 16
float f[N];
double d[N];
int n[N];

__attribute__((noinline)) void
f3 (void)
{
  int i;
  for (i = 0; i < N; i++)
    d[i] = f[i];
}
---

r263067 improved -O3 -mavx2 -mtune=generic -m64 from

        .cfi_startproc
        vmovaps f(%rip), %xmm2
        vmovaps f+32(%rip), %xmm3
        vinsertf128     $0x1, f+16(%rip), %ymm2, %ymm0
        vcvtps2pd       %xmm0, %ymm1
        vextractf128    $0x1, %ymm0, %xmm0
        vmovaps %xmm1, d(%rip)
        vextractf128    $0x1, %ymm1, d+16(%rip)
        vcvtps2pd       %xmm0, %ymm0
        vmovaps %xmm0, d+32(%rip)
        vextractf128    $0x1, %ymm0, d+48(%rip)
        vinsertf128     $0x1, f+48(%rip), %ymm3, %ymm0
        vcvtps2pd       %xmm0, %ymm1
        vextractf128    $0x1, %ymm0, %xmm0
        vmovaps %xmm1, d+64(%rip)
        vextractf128    $0x1, %ymm1, d+80(%rip)
        vcvtps2pd       %xmm0, %ymm0
        vmovaps %xmm0, d+96(%rip)
        vextractf128    $0x1, %ymm0, d+112(%rip)
        vzeroupper
        ret
        .cfi_endproc

to

        .cfi_startproc
        vcvtps2pd       f(%rip), %ymm0
        vmovaps %xmm0, d(%rip)
        vextractf128    $0x1, %ymm0, d+16(%rip)
        vcvtps2pd       f+16(%rip), %ymm0
        vmovaps %xmm0, d+32(%rip)
        vextractf128    $0x1, %ymm0, d+48(%rip)
        vcvtps2pd       f+32(%rip), %ymm0
        vextractf128    $0x1, %ymm0, d+80(%rip)
        vmovaps %xmm0, d+64(%rip)
        vcvtps2pd       f+48(%rip), %ymm0
        vextractf128    $0x1, %ymm0, d+112(%rip)
        vmovaps %xmm0, d+96(%rip)
        vzeroupper
        ret
        .cfi_endproc

This lead to

FAIL: gcc.target/i386/avx2-cvt-2.c scan-assembler
vcvtps2pd[^\n\r]*(%xmm[^\n\r]*%ymm|ymm[^\n\r]*xmm)
FAIL: gcc.target/i386/avx-cvt-2.c scan-assembler
vcvtps2pd[^\n\r]*(%xmm[^\n\r]*%ymm|ymm[^\n\r]*xmm)

For -m32, we generate:

        .cfi_startproc
        vmovups f, %xmm2
        vinsertf128     $0x1, f+16, %ymm2, %ymm0
        vmovups f+32, %xmm3
        vextractf128    $0x1, %ymm0, %xmm0
        vcvtps2pd       %xmm2, %ymm1
        vmovups %xmm1, d
        vextractf128    $0x1, %ymm1, d+16
        vcvtps2pd       %xmm0, %ymm0
        vcvtps2pd       %xmm3, %ymm1
        vmovups %xmm0, d+32
        vextractf128    $0x1, %ymm0, d+48
        vinsertf128     $0x1, f+48, %ymm3, %ymm0
        vmovups %xmm1, d+64
        vextractf128    $0x1, %ymm1, d+80
        vextractf128    $0x1, %ymm0, %xmm0
        vcvtps2pd       %xmm0, %ymm0
        vmovups %xmm0, d+96
        vextractf128    $0x1, %ymm0, d+112
        vzeroupper
        ret
        .cfi_endproc

which is caused by different tuning options for -mtune=generic -m32.


More information about the Gcc-bugs mailing list