; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep or && ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | grep rlwnm | wc -l | grep 2 && ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | grep rlwinm | wc -l | grep 2 implementation ; Functions: int %rotlw(uint %x, int %sh) { entry: %tmp.3 = cast int %sh to ubyte ; [#uses=1] %x.s = cast uint %x to int ; [#uses=1] %tmp.7 = sub int 32, %sh ; [#uses=1] %tmp.9 = cast int %tmp.7 to ubyte ; [#uses=1] %tmp.10 = shr uint %x, ubyte %tmp.9 ; [#uses=1] %tmp.4 = shl int %x.s, ubyte %tmp.3 ; [#uses=1] %tmp.12 = or int %tmp.10, %tmp.4 ; [#uses=1] ret int %tmp.12 } int %rotrw(uint %x, int %sh) { entry: %tmp.3 = cast int %sh to ubyte ; [#uses=1] %tmp.4 = shr uint %x, ubyte %tmp.3 ; [#uses=1] %tmp.7 = sub int 32, %sh ; [#uses=1] %tmp.9 = cast int %tmp.7 to ubyte ; [#uses=1] %x.s = cast uint %x to int ; [#uses=1] %tmp.10 = shl int %x.s, ubyte %tmp.9 ; [#uses=1] %tmp.12 = or int %tmp.4, %tmp.10 ; [#uses=1] ret int %tmp.12 } int %rotlwi(uint %x) { entry: %x.s = cast uint %x to int ; [#uses=1] %tmp.7 = shr uint %x, ubyte 27 ; [#uses=1] %tmp.3 = shl int %x.s, ubyte 5 ; [#uses=1] %tmp.9 = or int %tmp.3, %tmp.7 ; [#uses=1] ret int %tmp.9 } int %rotrwi(uint %x) { entry: %tmp.3 = shr uint %x, ubyte 5 ; [#uses=1] %x.s = cast uint %x to int ; [#uses=1] %tmp.7 = shl int %x.s, ubyte 27 ; [#uses=1] %tmp.9 = or int %tmp.3, %tmp.7 ; [#uses=1] ret int %tmp.9 }