1; RUN: llc < %s 2; RUN: llc -O0 < %s 3 4;; SQRT 5declare float @llvm.sqrt.f32(float) 6 7declare double @llvm.sqrt.f64(double) 8 9define double @test_sqrt(float %F) { 10 %G = call float @llvm.sqrt.f32( float %F ) ; <float> [#uses=1] 11 %H = fpext float %G to double ; <double> [#uses=1] 12 %I = call double @llvm.sqrt.f64( double %H ) ; <double> [#uses=1] 13 ret double %I 14} 15 16 17; SIN 18declare float @sinf(float) readonly 19 20declare double @sin(double) readonly 21 22define double @test_sin(float %F) { 23 %G = call float @sinf( float %F ) ; <float> [#uses=1] 24 %H = fpext float %G to double ; <double> [#uses=1] 25 %I = call double @sin( double %H ) ; <double> [#uses=1] 26 ret double %I 27} 28 29 30; COS 31declare float @cosf(float) readonly 32 33declare double @cos(double) readonly 34 35define double @test_cos(float %F) { 36 %G = call float @cosf( float %F ) ; <float> [#uses=1] 37 %H = fpext float %G to double ; <double> [#uses=1] 38 %I = call double @cos( double %H ) ; <double> [#uses=1] 39 ret double %I 40} 41 42declare i8* @llvm.launder.invariant.group(i8*) 43 44define i8* @launder(i8* %p) { 45 %q = call i8* @llvm.launder.invariant.group(i8* %p) 46 ret i8* %q 47} 48 49declare i8* @llvm.strip.invariant.group(i8*) 50 51define i8* @strip(i8* %p) { 52 %q = call i8* @llvm.strip.invariant.group(i8* %p) 53 ret i8* %q 54} 55 56 57; sideeffect 58 59declare void @llvm.sideeffect() 60 61define void @test_sideeffect() { 62 call void @llvm.sideeffect() 63 ret void 64} 65