; Testcase for calls to the standard C "pow" function
;
; RUN: opt < %s -simplify-libcalls -S | not grep {call .pow}


declare double @pow(double, double)
declare float @powf(float, float)

define double @test1(double %X) {
	%Y = call double @pow( double %X, double 0.000000e+00 )		; <double> [#uses=1]
	ret double %Y
}

define double @test2(double %X) {
	%Y = call double @pow( double %X, double -0.000000e+00 )		; <double> [#uses=1]
	ret double %Y
}

define double @test3(double %X) {
	%Y = call double @pow( double 1.000000e+00, double %X )		; <double> [#uses=1]
	ret double %Y
}

define double @test4(double %X) {
	%Y = call double @pow( double %X, double 2.0)
	ret double %Y
}

define float @test4f(float %X) {
	%Y = call float @powf( float %X, float 2.0)
	ret float %Y
}

define float @test5f(float %X) {
	%Y = call float @powf(float 2.0, float %X)  ;; exp2
	ret float %Y
}
