[Bug target/95488] Suboptimal multiplication codegen for v16qi
crazylht at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Jun 17 01:25:53 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95488
--- Comment #9 from Hongtao.liu <crazylht at gmail dot com> ---
(In reply to H.J. Lu from comment #8)
> -march=skylake-avx512 gave:
>
> [hjl@gnu-cfl-2 gcc]$
> /export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/xgcc
> -B/export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/
> /export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.target/i386/avx512bw-
> pr95488-1.c -march=skylake-avx512 -fno-diagnostics-show-caret
> -fno-diagnostics-show-line-numbers -fdiagnostics-color=never
> -fdiagnostics-urls=never -O2 -ffat-lto-objects -fno-ident -S -o
> avx512bw-pr95488-1.s
> [hjl@gnu-cfl-2 gcc]$ cat avx512bw-pr95488-1.s
> .file "avx512bw-pr95488-1.c"
> .text
> .p2align 4
> .globl mul_512
> .type mul_512, @function
> mul_512:
> .LFB0:
> .cfi_startproc
> vpunpcklbw %ymm0, %ymm0, %ymm3
> vpunpcklbw %ymm1, %ymm1, %ymm2
> vpunpckhbw %ymm0, %ymm0, %ymm0
> vpunpckhbw %ymm1, %ymm1, %ymm1
> vpmullw %ymm3, %ymm2, %ymm2
> vpmullw %ymm0, %ymm1, %ymm1
> vpshufb .LC0(%rip), %ymm2, %ymm0
> vpshufb .LC1(%rip), %ymm1, %ymm1
> vpor %ymm1, %ymm0, %ymm0
> ret
> .cfi_endproc
> .LFE0:
> .size mul_512, .-mul_512
> .p2align 4
> .globl umul_512
> .type umul_512, @function
> umul_512:
> .LFB1:
> .cfi_startproc
> vpunpcklbw %ymm0, %ymm0, %ymm3
> vpunpcklbw %ymm1, %ymm1, %ymm2
> vpunpckhbw %ymm0, %ymm0, %ymm0
> vpunpckhbw %ymm1, %ymm1, %ymm1
> vpmullw %ymm3, %ymm2, %ymm2
> vpmullw %ymm0, %ymm1, %ymm1
> vpshufb .LC0(%rip), %ymm2, %ymm0
> vpshufb .LC1(%rip), %ymm1, %ymm1
> vpor %ymm1, %ymm0, %ymm0
> ret
> .cfi_endproc
> .LFE1:
> .size umul_512, .-umul_512
It's on purpose, maybe I'll add -mprefer-vector-with=512 to testcase.
----
19498 /* Not generate zmm instruction when prefer 128/256 bit vector width.
*/
19499 if (qimode == V32QImode
19500 && (TARGET_PREFER_AVX128 || TARGET_PREFER_AVX256))
19501 return false;
----
More information about the Gcc-bugs
mailing list