; All of these ands and shifts should be folded into rlwimi's
; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep and
; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | grep rlwimi | count 8

implementation   ; Functions:

int %test1(int %x, int %y) {
entry:
	%tmp.3 = shl int %x, ubyte 16		; <int> [#uses=1]
	%tmp.7 = and int %y, 65535		; <int> [#uses=1]
	%tmp.9 = or int %tmp.7, %tmp.3		; <int> [#uses=1]
	ret int %tmp.9
}

int %test2(int %x, int %y) {
entry:
	%tmp.7 = and int %x, 65535		; <int> [#uses=1]
	%tmp.3 = shl int %y, ubyte 16		; <int> [#uses=1]
	%tmp.9 = or int %tmp.7, %tmp.3		; <int> [#uses=1]
	ret int %tmp.9
}

uint %test3(uint %x, uint %y) {
entry:
	%tmp.3 = shr uint %x, ubyte 16		; <uint> [#uses=1]
	%tmp.6 = and uint %y, 4294901760		; <uint> [#uses=1]
	%tmp.7 = or uint %tmp.6, %tmp.3		; <uint> [#uses=1]
	ret uint %tmp.7
}

uint %test4(uint %x, uint %y) {
entry:
	%tmp.6 = and uint %x, 4294901760		; <uint> [#uses=1]
	%tmp.3 = shr uint %y, ubyte 16		; <uint> [#uses=1]
	%tmp.7 = or uint %tmp.6, %tmp.3		; <uint> [#uses=1]
	ret uint %tmp.7
}

int %test5(int %x, int %y) {
entry:
	%tmp.3 = shl int %x, ubyte 1		; <int> [#uses=1]
	%tmp.4 = and int %tmp.3, -65536		; <int> [#uses=1]
	%tmp.7 = and int %y, 65535		; <int> [#uses=1]
	%tmp.9 = or int %tmp.4, %tmp.7		; <int> [#uses=1]
	ret int %tmp.9
}

int %test6(int %x, int %y) {
entry:
	%tmp.7 = and int %x, 65535		; <int> [#uses=1]
	%tmp.3 = shl int %y, ubyte 1		; <int> [#uses=1]
	%tmp.4 = and int %tmp.3, -65536		; <int> [#uses=1]
	%tmp.9 = or int %tmp.4, %tmp.7		; <int> [#uses=1]
	ret int %tmp.9
}

int %test7(int %x, int %y) {
entry:
	%tmp.2 = and int %x, -65536		; <int> [#uses=1]
	%tmp.5 = and int %y, 65535		; <int> [#uses=1]
	%tmp.7 = or int %tmp.5, %tmp.2		; <int> [#uses=1]
	ret int %tmp.7
}

uint %test8(uint %bar) {
entry:
	%tmp.3 = shl uint %bar, ubyte 1		; <uint> [#uses=1]
	%tmp.4 = and uint %tmp.3, 2		; <uint> [#uses=1]
	%tmp.6 = and uint %bar, 4294967293		; <uint> [#uses=1]
	%tmp.7 = or uint %tmp.4, %tmp.6		; <uint> [#uses=1]
	ret uint %tmp.7
}
