1 ; RUN: llc < %s 2 ; RUN: llc -O0 < %s 3 4 ;; SQRT 5 declare float @llvm.sqrt.f32(float) 6 7 declare double @llvm.sqrt.f64(double) 8 9 define 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 18 declare float @sinf(float) readonly 19 20 declare double @sin(double) readonly 21 22 define 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 31 declare float @cosf(float) readonly 32 33 declare double @cos(double) readonly 34 35 define 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 42 declare i8* @llvm.launder.invariant.group(i8*) 43 44 define i8* @launder(i8* %p) { 45 %q = call i8* @llvm.launder.invariant.group(i8* %p) 46 ret i8* %q 47 } 48 49 declare i8* @llvm.strip.invariant.group(i8*) 50 51 define i8* @strip(i8* %p) { 52 %q = call i8* @llvm.strip.invariant.group(i8* %p) 53 ret i8* %q 54 } 55 56 57 ; sideeffect 58 59 declare void @llvm.sideeffect() 60 61 define void @test_sideeffect() { 62 call void @llvm.sideeffect() 63 ret void 64 } 65