;; Both functions in this testcase should codegen to the same function, and
;; neither of them should require spilling anything to the stack.

; RUN: llc < %s -march=x86 -stats |& \
; RUN:   not grep {Number of register spills}

;; This can be compiled to use three registers if the loads are not
;; folded into the multiplies, 2 registers otherwise.

define i32 @regpressure1(i32* %P) {
	%A = load i32* %P		; <i32> [#uses=1]
	%Bp = getelementptr i32* %P, i32 1		; <i32*> [#uses=1]
	%B = load i32* %Bp		; <i32> [#uses=1]
	%s1 = mul i32 %A, %B		; <i32> [#uses=1]
	%Cp = getelementptr i32* %P, i32 2		; <i32*> [#uses=1]
	%C = load i32* %Cp		; <i32> [#uses=1]
	%s2 = mul i32 %s1, %C		; <i32> [#uses=1]
	%Dp = getelementptr i32* %P, i32 3		; <i32*> [#uses=1]
	%D = load i32* %Dp		; <i32> [#uses=1]
	%s3 = mul i32 %s2, %D		; <i32> [#uses=1]
	%Ep = getelementptr i32* %P, i32 4		; <i32*> [#uses=1]
	%E = load i32* %Ep		; <i32> [#uses=1]
	%s4 = mul i32 %s3, %E		; <i32> [#uses=1]
	%Fp = getelementptr i32* %P, i32 5		; <i32*> [#uses=1]
	%F = load i32* %Fp		; <i32> [#uses=1]
	%s5 = mul i32 %s4, %F		; <i32> [#uses=1]
	%Gp = getelementptr i32* %P, i32 6		; <i32*> [#uses=1]
	%G = load i32* %Gp		; <i32> [#uses=1]
	%s6 = mul i32 %s5, %G		; <i32> [#uses=1]
	%Hp = getelementptr i32* %P, i32 7		; <i32*> [#uses=1]
	%H = load i32* %Hp		; <i32> [#uses=1]
	%s7 = mul i32 %s6, %H		; <i32> [#uses=1]
	%Ip = getelementptr i32* %P, i32 8		; <i32*> [#uses=1]
	%I = load i32* %Ip		; <i32> [#uses=1]
	%s8 = mul i32 %s7, %I		; <i32> [#uses=1]
	%Jp = getelementptr i32* %P, i32 9		; <i32*> [#uses=1]
	%J = load i32* %Jp		; <i32> [#uses=1]
	%s9 = mul i32 %s8, %J		; <i32> [#uses=1]
	ret i32 %s9
}

define i32 @regpressure2(i32* %P) {
	%A = load i32* %P		; <i32> [#uses=1]
	%Bp = getelementptr i32* %P, i32 1		; <i32*> [#uses=1]
	%B = load i32* %Bp		; <i32> [#uses=1]
	%Cp = getelementptr i32* %P, i32 2		; <i32*> [#uses=1]
	%C = load i32* %Cp		; <i32> [#uses=1]
	%Dp = getelementptr i32* %P, i32 3		; <i32*> [#uses=1]
	%D = load i32* %Dp		; <i32> [#uses=1]
	%Ep = getelementptr i32* %P, i32 4		; <i32*> [#uses=1]
	%E = load i32* %Ep		; <i32> [#uses=1]
	%Fp = getelementptr i32* %P, i32 5		; <i32*> [#uses=1]
	%F = load i32* %Fp		; <i32> [#uses=1]
	%Gp = getelementptr i32* %P, i32 6		; <i32*> [#uses=1]
	%G = load i32* %Gp		; <i32> [#uses=1]
	%Hp = getelementptr i32* %P, i32 7		; <i32*> [#uses=1]
	%H = load i32* %Hp		; <i32> [#uses=1]
	%Ip = getelementptr i32* %P, i32 8		; <i32*> [#uses=1]
	%I = load i32* %Ip		; <i32> [#uses=1]
	%Jp = getelementptr i32* %P, i32 9		; <i32*> [#uses=1]
	%J = load i32* %Jp		; <i32> [#uses=1]
	%s1 = mul i32 %A, %B		; <i32> [#uses=1]
	%s2 = mul i32 %s1, %C		; <i32> [#uses=1]
	%s3 = mul i32 %s2, %D		; <i32> [#uses=1]
	%s4 = mul i32 %s3, %E		; <i32> [#uses=1]
	%s5 = mul i32 %s4, %F		; <i32> [#uses=1]
	%s6 = mul i32 %s5, %G		; <i32> [#uses=1]
	%s7 = mul i32 %s6, %H		; <i32> [#uses=1]
	%s8 = mul i32 %s7, %I		; <i32> [#uses=1]
	%s9 = mul i32 %s8, %J		; <i32> [#uses=1]
	ret i32 %s9
}

define i32 @regpressure3(i16* %P, i1 %Cond, i32* %Other) {
	%A = load i16* %P		; <i16> [#uses=1]
	%Bp = getelementptr i16* %P, i32 1		; <i16*> [#uses=1]
	%B = load i16* %Bp		; <i16> [#uses=1]
	%Cp = getelementptr i16* %P, i32 2		; <i16*> [#uses=1]
	%C = load i16* %Cp		; <i16> [#uses=1]
	%Dp = getelementptr i16* %P, i32 3		; <i16*> [#uses=1]
	%D = load i16* %Dp		; <i16> [#uses=1]
	%Ep = getelementptr i16* %P, i32 4		; <i16*> [#uses=1]
	%E = load i16* %Ep		; <i16> [#uses=1]
	%Fp = getelementptr i16* %P, i32 5		; <i16*> [#uses=1]
	%F = load i16* %Fp		; <i16> [#uses=1]
	%Gp = getelementptr i16* %P, i32 6		; <i16*> [#uses=1]
	%G = load i16* %Gp		; <i16> [#uses=1]
	%Hp = getelementptr i16* %P, i32 7		; <i16*> [#uses=1]
	%H = load i16* %Hp		; <i16> [#uses=1]
	%Ip = getelementptr i16* %P, i32 8		; <i16*> [#uses=1]
	%I = load i16* %Ip		; <i16> [#uses=1]
	%Jp = getelementptr i16* %P, i32 9		; <i16*> [#uses=1]
	%J = load i16* %Jp		; <i16> [#uses=1]
	%A.upgrd.1 = sext i16 %A to i32		; <i32> [#uses=1]
	%B.upgrd.2 = sext i16 %B to i32		; <i32> [#uses=1]
	%D.upgrd.3 = sext i16 %D to i32		; <i32> [#uses=1]
	%C.upgrd.4 = sext i16 %C to i32		; <i32> [#uses=1]
	%E.upgrd.5 = sext i16 %E to i32		; <i32> [#uses=1]
	%F.upgrd.6 = sext i16 %F to i32		; <i32> [#uses=1]
	%G.upgrd.7 = sext i16 %G to i32		; <i32> [#uses=1]
	%H.upgrd.8 = sext i16 %H to i32		; <i32> [#uses=1]
	%I.upgrd.9 = sext i16 %I to i32		; <i32> [#uses=1]
	%J.upgrd.10 = sext i16 %J to i32		; <i32> [#uses=1]
	%s1 = add i32 %A.upgrd.1, %B.upgrd.2		; <i32> [#uses=1]
	%s2 = add i32 %C.upgrd.4, %s1		; <i32> [#uses=1]
	%s3 = add i32 %D.upgrd.3, %s2		; <i32> [#uses=1]
	%s4 = add i32 %E.upgrd.5, %s3		; <i32> [#uses=1]
	%s5 = add i32 %F.upgrd.6, %s4		; <i32> [#uses=1]
	%s6 = add i32 %G.upgrd.7, %s5		; <i32> [#uses=1]
	%s7 = add i32 %H.upgrd.8, %s6		; <i32> [#uses=1]
	%s8 = add i32 %I.upgrd.9, %s7		; <i32> [#uses=1]
	%s9 = add i32 %J.upgrd.10, %s8		; <i32> [#uses=1]
	ret i32 %s9
}
