https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100885
--- Comment #1 from Hongtao.liu <crazylht at gmail dot com> ---
152(define_register_constraint "Yw"
153 "TARGET_AVX512BW && TARGET_AVX512VL ? ALL_SSE_REGS : TARGET_SSE ? SSE_REGS
: NO_REGS"
154 "@internal Any EVEX encodable SSE register (@code{%xmm0-%xmm31}) for
AVX512BW with TARGET_AVX512VL target, otherwise any \
SSE register.")
19076(define_insn "sse4_1_<code>v8qiv8hi2<mask_name>"
19077 [(set (match_operand:V8HI 0 "register_operand" "=Yr,*x,Yw")
19078 (any_extend:V8HI
19079 (vec_select:V8QI
19080 (match_operand:V16QI 1 "register_operand" "Yr,*x,Yw")
19081 (parallel [(const_int 0) (const_int 1)
19082 (const_int 2) (const_int 3)
19083 (const_int 4) (const_int 5)
19084 (const_int 6) (const_int 7)]))))]
19085 "TARGET_SSE4_1 && <mask_avx512bw_condition> &&
<mask_avx512vl_condition>"
19086 "%vpmov<extsuffix>bw\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"
19087 [(set_attr "isa" "noavx,noavx,avx")
19088 (set_attr "type" "ssemov")
19089 (set_attr "prefix_extra" "1")
19090 (set_attr "prefix" "orig,orig,maybe_evex")
19091 (set_attr "mode" "TI")])
With avx512vl Yw should be matched, and w/o avx512bw, only SSE_REGS should be
matched, why xmm16 is allocated?