https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115176
Xi Ruoyao <xry111 at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |xry111 at gcc dot gnu.org --- Comment #2 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- LoongArch currently has: (define_insn "bitrev_4b" [(set (match_operand:SI 0 "register_operand" "=r") (unspec:SI [(match_operand:SI 1 "register_operand" "r")] UNSPEC_BITREV_4B))] "" "bitrev.4b\t%0,%1" [(set_attr "type" "unknown") (set_attr "mode" "SI")]) (define_insn "bitrev_8b" [(set (match_operand:DI 0 "register_operand" "=r") (unspec:DI [(match_operand:DI 1 "register_operand" "r")] UNSPEC_BITREV_8B))] "" "bitrev.8b\t%0,%1" [(set_attr "type" "unknown") (set_attr "mode" "DI")]) Maybe we can make them something like (subreg:DI (bitreverse:V8QI (subreg:QI (match...) 0)) 0) instead. And LoongArch also has bitrev.{w/d} instructions but GCC doesn't know them yet. I plan to add them after PR50481 is implemented.