https://bugs.llvm.org/show_bug.cgi?id=48223

            Bug ID: 48223
           Summary: [AVX512][Regression] Failed to use vpsubusw
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: X86
          Assignee: unassignedb...@nondot.org
          Reporter: david.bolvan...@gmail.com
                CC: craig.top...@gmail.com, llvm-bugs@lists.llvm.org,
                    llvm-...@redking.me.uk, pengfei.w...@intel.com,
                    spatel+l...@rotateright.com

#define SIZE 32
#define WSIZE 64
unsigned short head[SIZE] __attribute__((aligned(64)));

void f(void)
{
  for (unsigned n = 0; n < SIZE; ++n) {
    unsigned short m = head[n];
    head[n] = (unsigned short)(m >= WSIZE ? m-WSIZE : 0);
  }
}

Clang 11 or newer with -O3 -mavx512f:

f():                                  # @f()
        vmovdqa ymm0, ymmword ptr [rip + .LCPI0_0] # ymm0 =
[64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64]
        vmovdqa ymm1, ymmword ptr [rip + head+32]
        vpmaxuw ymm2, ymm1, ymm0
        vpcmpeqw        ymm2, ymm1, ymm2
        vmovdqa ymm3, ymmword ptr [rip + head]
        vpmaxuw ymm0, ymm3, ymm0
        vpcmpeqw        ymm0, ymm3, ymm0
        vinserti64x4    zmm0, zmm0, ymm2, 1
        vmovdqa ymm2, ymmword ptr [rip + .LCPI0_1] # ymm2 =
[65472,65472,65472,65472,65472,65472,65472,65472,65472,65472,65472,65472,65472,65472,65472,65472]
        vpaddw  ymm1, ymm1, ymm2
        vpaddw  ymm2, ymm3, ymm2
        vinserti64x4    zmm1, zmm2, ymm1, 1
        vpandq  zmm0, zmm0, zmm1
        vmovdqa64       zmmword ptr [rip + head], zmm0
        vzeroupper
        ret

Clang 10 or ICC -O3 -mavx512f:
f():                                  # @f()
        vmovdqa ymm0, ymmword ptr [rip + head]
        vmovdqa ymm1, ymmword ptr [rip + head+32]
        vmovdqa ymm2, ymmword ptr [rip + .LCPI0_0] # ymm2 =
[64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64]
        vpsubusw        ymm1, ymm1, ymm2
        vpsubusw        ymm0, ymm0, ymm2
        vmovdqa ymmword ptr [rip + head], ymm0
        vmovdqa ymmword ptr [rip + head+32], ymm1
        vzeroupper
        ret

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to