https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123149
Hongtao Liu <liuhongt at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |liuhongt at gcc dot gnu.org
--- Comment #6 from Hongtao Liu <liuhongt at gcc dot gnu.org> ---
the backend support the patterns.
17954(define_insn "<avx512>_<rotate>v<mode><mask_name>"
17955 [(set (match_operand:VI48_AVX512VL 0 "register_operand" "=v")
17956 (any_rotate:VI48_AVX512VL
17957 (match_operand:VI48_AVX512VL 1 "register_operand" "v")
17958 (match_operand:VI48_AVX512VL 2 "nonimmediate_operand" "vm")))]
17959 "TARGET_AVX512F"
17960 "vp<rotate>v<ssemodesuffix>\t{%2, %1,
%0<mask_operand3>|%0<mask_operand3>, %1, %2}"
17961 [(set_attr "prefix" "evex")
17962 (set_attr "mode" "<sseinsnmode>")])
17963
17964(define_insn "<avx512>_<rotate><mode><mask_name>"
17965 [(set (match_operand:VI48_AVX512VL 0 "register_operand" "=v")
17966 (any_rotate:VI48_AVX512VL
17967 (match_operand:VI48_AVX512VL 1 "nonimmediate_operand" "vm")
17968 (match_operand:SI 2 "const_0_to_255_operand")))]
17969 "TARGET_AVX512F"
17970 "vp<rotate><ssemodesuffix>\t{%2, %1,
%0<mask_operand3>|%0<mask_operand3>, %1, %2}"
17971 [(set_attr "prefix" "evex")
17972 (set_attr "mode" "<sseinsnmode>")])
The second pattern should match
(set (reg:V2DI 108 [ _3 ])
(rotate:V2DI (reg/v:V2DI 104 [ v ])
(const_int 5 [0x5])))