https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115921
--- Comment #6 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- And at least removing the condition && (!(TARGET_64BIT && TARGET_ZBA) || !consecutive_bits_operand (operands[3], VOIDmode) || !imm123_operand (operands[2], VOIDmode)) *allows* using sh3add for long t(long a, long b) { return ((a | 0x1ff) << 3) + b; } sh3add is matched in late_combine2.