;; 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
}
