https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100028
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org
Status|NEW |ASSIGNED
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I guess it is basically a dup of PR87763, except that it needs yet another
pattern.
Combiner tries to match here:
(ior:SI (and:SI (reg:SI 102)
(const_int -8 [0xfffffffffffffff8]))
(subreg:SI (zero_extract:DI (subreg:DI (reg:SI 103) 0)
(const_int 3 [0x3])
(const_int 11 [0xb])) 0)))
which is similar to:
(define_insn "*aarch64_bfi<GPI:mode>4_noand"
[(set (match_operand:GPI 0 "register_operand" "=r")
(ior:GPI (and:GPI (match_operand:GPI 1 "register_operand" "0")
(match_operand:GPI 2 "const_int_operand" "n"))
(ashift:GPI
(match_operand:GPI 3 "register_operand" "r")
(match_operand:GPI 4 "aarch64_simd_shift_imm_<mode>"
n"))))]
"aarch64_masks_and_shift_for_bfi_p (<MODE>mode, UINTVAL (operands[2]),
UINTVAL (operands[4]),
HOST_WIDE_INT_M1U << UINTVAL (operands[4])
)"