For now, PowerPC will using several instructions to get the constant and "and" it with the following case:
define i32 @test1(i32 %a) {
%and = and i32 %a, -2
ret i32 %andHowever, we could exploit it with the rotate mask instructions.
MB ME +----------------------+ |xxxxxxxxxxx00011111000| +----------------------+ 0 32 64
Notice that, we can only do it if the MB is larger than 32 and MB <= ME as RLWINM will replace the content of [0 - 32) with [32 - 64) even we didn't rotate it.
imm16 should be handle as well in new patch? comment should update?