https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65407
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ra
Target| |x86
CC| |hjl.tools at gmail dot com,
| |kyukhin at gcc dot gnu.org,
| |vmakarov at gcc dot gnu.org
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
Happens in reload:
(insn 17 11 19 2 (parallel [
(set (reg:HI 69 k0 [104])
(and:HI (not:HI (reg:HI 69 k0 [orig:100 k1 ] [100]))
(reg:HI 70 k1 [orig:102 k2 ] [102])))
(clobber (reg:CC 17 flags))
]) /ssd/uros/gcc-build/prev-gcc/include/avx512fintrin.h:9995 388
{kandnhi}
(nil))
...
(insn 36 21 29 2 (set (reg:HI 71 k2 [104])
(reg:HI 69 k0 [104]))
/ssd/uros/gcc-build/prev-gcc/include/avx512fintrin.h:10718 92 {*movhi_internal}
(nil))
(insn 29 36 31 2 (set (reg:V16SF 21 xmm0 [109])
(vec_merge:V16SF (plus:V16SF (reg:V16SF 23 xmm2 [orig:91 D.26753 ]
[91])
(reg:V16SF 22 xmm1 [orig:90 D.26753 ] [90]))
(reg:V16SF 21 xmm0 [orig:92 D.26753 ] [92])
(reg:HI 71 k2 [104])))
/ssd/uros/gcc-build/prev-gcc/include/avx512fintrin.h:10718 1356
{*addv16sf3_mask}
(nil))
The constraint for mask register in (insn 29) is Yk (so, k1 to k7) and reload
satisfies this by emitting input reload from k0 -> k2. Ideally, k2 should be
chosen as output register from (insn 17).