I've read the other posts here, but still have a question about PPC and rlwinm.
The example I'm looking at is:
li r0, 0x100
clrlslwi r9, r0, 27,5 (which afaik is the same as rlwinm r9, r0,5,22,26)
First I load r0 = 0x100 Then Left Shift r0 by 5 so r0 = 0x2000 (No overflow, so no rotate needed)
Make a Mask with bits 22 to 26 set = 0x3e0
AND r0 with the Mask = 0x2000 AND 0x3E0 = 0
I must be doing something wrong...this would always net 0 What am I missing?
yes that's true (Clear left and shift left word immediate)
clrlslwi rA,rS,b,n (n ≤ b ≤ 31) = rlwinm rA,rS,n,b – n,31 – n
so
clrlslwi r9, r0, 27,5 = rlwinm r9, r0, 5, 22(27-5), 26(31-5)