https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115478
--- Comment #9 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- (In reply to Xi Ruoyao from comment #8) > For LoongArch we also have a fallout: > > __int128 test(__int128 a) > { > return a << 16; > } > > is now > > srli.d $r12,$r4,48 > slli.d $r5,$r5,16 > slli.d $r4,$r4,16 > add.d $r5,$r12,$r5 > jr $r1 > > but actually r5 can be synthesized with a bytepick.d instruction instead. P.S. This didn't work in GCC 14 because of another bug, but it's supposed to work now if IOR was used instead of PLUS.