; RUN: llvm-as < %s | opt -simplifycfg -instcombine | llvm-dis | grep 0x7FF8000000000000 | count 7
; RUN: llvm-as < %s | opt -simplifycfg -instcombine | llvm-dis | grep 0x7FF00000FFFFFFFF | count 5
; RUN: llvm-as < %s | opt -simplifycfg -instcombine | llvm-dis | grep {0\\.0} | count 3
; RUN: llvm-as < %s | opt -simplifycfg -instcombine | llvm-dis | grep {3\\.5} | count 1
;

; ModuleID = 'apf.c'
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "i386-apple-darwin9.6"
@"\01LC" = internal constant [4 x i8] c"%f\0A\00"		; <[4 x i8]*> [#uses=1]

define void @foo1() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0x7FF0000000000000, float* %x, align 4
	store float 0x7FF8000000000000, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

declare i32 @printf(i8*, ...) nounwind

define void @foo2() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0x7FF0000000000000, float* %x, align 4
	store float 0.000000e+00, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo3() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0x7FF0000000000000, float* %x, align 4
	store float 3.500000e+00, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo4() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0x7FF0000000000000, float* %x, align 4
	store float 0x7FF0000000000000, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo5() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0x7FF8000000000000, float* %x, align 4
	store float 0x7FF0000000000000, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo6() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0x7FF8000000000000, float* %x, align 4
	store float 0.000000e+00, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo7() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0x7FF8000000000000, float* %x, align 4
	store float 3.500000e+00, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo8() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0x7FF8000000000000, float* %x, align 4
	store float 0x7FF8000000000000, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo9() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0.000000e+00, float* %x, align 4
	store float 0x7FF8000000000000, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo10() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0.000000e+00, float* %x, align 4
	store float 0x7FF0000000000000, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo11() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0.000000e+00, float* %x, align 4
	store float 0.000000e+00, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo12() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 0.000000e+00, float* %x, align 4
	store float 3.500000e+00, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo13() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 3.500000e+00, float* %x, align 4
	store float 0x7FF8000000000000, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo14() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 3.500000e+00, float* %x, align 4
	store float 0x7FF0000000000000, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo15() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 3.500000e+00, float* %x, align 4
	store float 0.000000e+00, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}

define void @foo16() nounwind {
entry:
	%y = alloca float		; <float*> [#uses=2]
	%x = alloca float		; <float*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store float 3.500000e+00, float* %x, align 4
	store float 3.500000e+00, float* %y, align 4
	%0 = load float* %y, align 4		; <float> [#uses=1]
	%1 = fpext float %0 to double		; <double> [#uses=1]
	%2 = load float* %x, align 4		; <float> [#uses=1]
	%3 = fpext float %2 to double		; <double> [#uses=1]
	%4 = frem double %3, %1		; <double> [#uses=1]
	%5 = call i32 (i8*, ...)* @printf(i8* getelementptr ([4 x i8]* @"\01LC", i32 0, i32 0), double %4) nounwind		; <i32> [#uses=0]
	br label %return

return:		; preds = %entry
	ret void
}
