; This test makes sure that shit instructions are properly eliminated
; even with arbitrary precision integers.
; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep sh
; END.

define i47 @test1(i47 %A) {
	%B = shl i47 %A, 0		; <i47> [#uses=1]
	ret i47 %B
}

define i41 @test2(i7 %X) {
	%A = zext i7 %X to i41		; <i41> [#uses=1]
	%B = shl i41 0, %A		; <i41> [#uses=1]
	ret i41 %B
}

define i41 @test3(i41 %A) {
	%B = ashr i41 %A, 0		; <i41> [#uses=1]
	ret i41 %B
}

define i39 @test4(i7 %X) {
	%A = zext i7 %X to i39		; <i39> [#uses=1]
	%B = ashr i39 0, %A		; <i39> [#uses=1]
	ret i39 %B
}

define i55 @test5(i55 %A) {
	%B = lshr i55 %A, 55		; <i55> [#uses=1]
	ret i55 %B
}

define i32 @test5a(i32 %A) {
	%B = shl i32 %A, 32		; <i32> [#uses=1]
	ret i32 %B
}

define i55 @test6(i55 %A) {
	%B = shl i55 %A, 1		; <i55> [#uses=1]
	%C = mul i55 %B, 3		; <i55> [#uses=1]
	ret i55 %C
}

define i29 @test7(i8 %X) {
	%A = zext i8 %X to i29		; <i29> [#uses=1]
	%B = ashr i29 -1, %A		; <i29> [#uses=1]
	ret i29 %B
}

define i7 @test8(i7 %A) {
	%B = shl i7 %A, 4		; <i7> [#uses=1]
	%C = shl i7 %B, 3		; <i7> [#uses=1]
	ret i7 %C
}

define i17 @test9(i17 %A) {
	%B = shl i17 %A, 16		; <i17> [#uses=1]
	%C = lshr i17 %B, 16		; <i17> [#uses=1]
	ret i17 %C
}

define i19 @test10(i19 %A) {
	%B = lshr i19 %A, 18		; <i19> [#uses=1]
	%C = shl i19 %B, 18		; <i19> [#uses=1]
	ret i19 %C
}

define i23 @test11(i23 %A) {
	%a = mul i23 %A, 3		; <i23> [#uses=1]
	%B = lshr i23 %a, 11		; <i23> [#uses=1]
	%C = shl i23 %B, 12		; <i23> [#uses=1]
	ret i23 %C
}

define i47 @test12(i47 %A) {
	%B = ashr i47 %A, 8		; <i47> [#uses=1]
	%C = shl i47 %B, 8		; <i47> [#uses=1]
	ret i47 %C
}

define i18 @test13(i18 %A) {
	%a = mul i18 %A, 3		; <i18> [#uses=1]
	%B = ashr i18 %a, 8		; <i18> [#uses=1]
	%C = shl i18 %B, 9		; <i18> [#uses=1]
	ret i18 %C
}

define i35 @test14(i35 %A) {
	%B = lshr i35 %A, 4		; <i35> [#uses=1]
	%C = or i35 %B, 1234		; <i35> [#uses=1]
	%D = shl i35 %C, 4		; <i35> [#uses=1]
	ret i35 %D
}

define i79 @test14a(i79 %A) {
	%B = shl i79 %A, 4		; <i79> [#uses=1]
	%C = and i79 %B, 1234		; <i79> [#uses=1]
	%D = lshr i79 %C, 4		; <i79> [#uses=1]
	ret i79 %D
}

define i45 @test15(i1 %C) {
	%A = select i1 %C, i45 3, i45 1	; <i45> [#uses=1]
	%V = shl i45 %A, 2		; <i45> [#uses=1]
	ret i45 %V
}

define i53 @test15a(i1 %X) {
	%A = select i1 %X, i8 3, i8 1	; <i8> [#uses=1]
	%B = zext i8 %A to i53		; <i53> [#uses=1]
	%V = shl i53 64, %B		; <i53> [#uses=1]
	ret i53 %V
}

define i1 @test16(i84 %X) {
	%tmp.3 = ashr i84 %X, 4		; <i84> [#uses=1]
	%tmp.6 = and i84 %tmp.3, 1	; <i84> [#uses=1]
	%tmp.7 = icmp ne i84 %tmp.6, 0	; <i1> [#uses=1]
	ret i1 %tmp.7
}

define i1 @test17(i106 %A) {
	%B = lshr i106 %A, 3		; <i106> [#uses=1]
	%C = icmp eq i106 %B, 1234	; <i1> [#uses=1]
	ret i1 %C
}

define i1 @test18(i11 %A) {
	%B = lshr i11 %A, 10		; <i11> [#uses=1]
	%C = icmp eq i11 %B, 123	; <i1> [#uses=1]
	ret i1 %C
}

define i1 @test19(i37 %A) {
	%B = ashr i37 %A, 2		; <i37> [#uses=1]
	%C = icmp eq i37 %B, 0		; <i1> [#uses=1]
	ret i1 %C
}

define i1 @test19a(i39 %A) {
	%B = ashr i39 %A, 2		; <i39> [#uses=1]
	%C = icmp eq i39 %B, -1		; <i1> [#uses=1]
	ret i1 %C
}

define i1 @test20(i13 %A) {
	%B = ashr i13 %A, 12		; <i13> [#uses=1]
	%C = icmp eq i13 %B, 123	; <i1> [#uses=1]
	ret i1 %C
}

define i1 @test21(i12 %A) {
	%B = shl i12 %A, 6		; <i12> [#uses=1]
	%C = icmp eq i12 %B, -128		; <i1> [#uses=1]
	ret i1 %C
}

define i1 @test22(i14 %A) {
	%B = shl i14 %A, 7		; <i14> [#uses=1]
	%C = icmp eq i14 %B, 0		; <i1> [#uses=1]
	ret i1 %C
}

define i11 @test23(i44 %A) {
	%B = shl i44 %A, 33		; <i44> [#uses=1]
	%C = ashr i44 %B, 33		; <i44> [#uses=1]
	%D = trunc i44 %C to i11	; <i8> [#uses=1]
	ret i11 %D
}

define i17 @test24(i17 %X) {
	%Y = and i17 %X, -5		; <i17> [#uses=1]
	%Z = shl i17 %Y, 9		; <i17> [#uses=1]
	%Q = ashr i17 %Z, 9		; <i17> [#uses=1]
	ret i17 %Q
}

define i37 @test25(i37 %tmp.2, i37 %AA) {
	%x = lshr i37 %AA, 17		; <i37> [#uses=1]
	%tmp.3 = lshr i37 %tmp.2, 17		; <i37> [#uses=1]
	%tmp.5 = add i37 %tmp.3, %x		; <i37> [#uses=1]
	%tmp.6 = shl i37 %tmp.5, 17		; <i37> [#uses=1]
	ret i37 %tmp.6
}

define i40 @test26(i40 %A) {
	%B = lshr i40 %A, 1		; <i40> [#uses=1]
	%C = bitcast i40 %B to i40		; <i40> [#uses=1]
	%D = shl i40 %C, 1		; <i40> [#uses=1]
	ret i40 %D
}
