https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111376
--- Comment #14 from YunQiang Su <syq at gcc dot gnu.org> --- And it seems that the performance of SLL is related with the operand. Just iterate from 0 to 1e9: ``` 0000000000000b00 <f32>: b00: 000223c0 sll a0,v0,0xf #### <-- the code is something wrong #### in normal code, we should access #### v0 here. v0 will be 100 or 1000. b04: 04810003 bgez a0,b14 <f32+0x14> b08: 00000000 nop b0c: 03e00008 jr ra b10: 240203e8 li v0,1000 b14: 03e00008 jr ra b18: 24020064 li v0,100 b1c: 00000000 nop ``` is slower than ``` 0000000000000b00 <f32>: b00: 000223c0 sll a0,a0,0xf b04: 04810003 bgez a0,b14 <f32+0x14> b08: 00000000 nop b0c: 03e00008 jr ra b10: 240203e8 li v0,1000 b14: 03e00008 jr ra b18: 24020064 li v0,100 b1c: 00000000 nop ``` I have no idea how to make a trade off here.