[Bug target/126429] [i386] _mm512_{mask,maskz}_dpbf16_ps only honor the low 8 bits of the __mmask16 (kmovb instead of kmovw)

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jul 28 08:20:20 GMT 2026


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

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-15 branch has been updated by Haochen Jiang
<jianghc@gcc.gnu.org>:

https://gcc.gnu.org/g:e9b1cb64b6e3c10c3d39b8c917d924281c2e7530

commit r15-11423-ge9b1cb64b6e3c10c3d39b8c917d924281c2e7530
Author: Haochen Jiang <haochen.jiang@intel.com>
Date:   Tue Jul 28 11:00:38 2026 +0800

    i386: Correct vdpbf16ps mask usage in pattern [PR126429]

    512 bit vdpbf16ps is using 16 bit mask. However, it only take the lower 8
    bit into consideration due to avx512fhalfmaskmode usage in pattern.

    Correct to avx512fmaskmode and remove not used iterators and patterns.
    256 bit and 128 bit vdpbf16ps are not affected since they are both 8 bit
    mask.

    gcc/ChangeLog:

            PR target/126429
            * config/i386/sse.md (avx512fmaskhalfmode): Removed.
            (avx512f_dpbf16ps_<mode>_maskz): Use avx512fmaskmode instead of
            avx512fmaskhalfmode.
            (avx512f_dpbf16ps_<mode>_mask): Ditto.
            (avx512f_dpbf16ps_<mode><maskz_half_name>): Rename to ...
            (avx512f_dpbf16ps_<mode><sd_maskz_name>): ... this. Use
            corresponding sd_mask_op4.
            * config/i386/subst.md (maskz_half): Remove not used pattern.

    gcc/testsuite/ChangeLog:

            PR target/126429
            * gcc.target/i386/pr126429-1.c: New test.

    (cherry picked from commit ed04be2c33faaf19d14521f8e6959b12a812701a)


More information about the Gcc-bugs mailing list