Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / Generic / intrinsics.ll
blob82e2b3ec7dee5675d94a2439931f4a5c3f44a090
1 ; RUN: llc < %s
2 ; RUN: llc -O0 < %s
4 ; NVPTX can't select sinf(float)/sin(double)
5 ; XFAIL: target=nvptx{{.*}}
7 ;; SQRT
8 declare float @llvm.sqrt.f32(float)
10 declare double @llvm.sqrt.f64(double)
12 define double @test_sqrt(float %F) {
13         %G = call float @llvm.sqrt.f32( float %F )              ; <float> [#uses=1]
14         %H = fpext float %G to double           ; <double> [#uses=1]
15         %I = call double @llvm.sqrt.f64( double %H )            ; <double> [#uses=1]
16         ret double %I
20 ; SIN
21 declare float @sinf(float) readonly
23 declare double @sin(double) readonly
25 define double @test_sin(float %F) {
26         %G = call float @sinf( float %F )               ; <float> [#uses=1]
27         %H = fpext float %G to double           ; <double> [#uses=1]
28         %I = call double @sin( double %H )              ; <double> [#uses=1]
29         ret double %I
33 ; COS
34 declare float @cosf(float) readonly
36 declare double @cos(double) readonly
38 define double @test_cos(float %F) {
39         %G = call float @cosf( float %F )               ; <float> [#uses=1]
40         %H = fpext float %G to double           ; <double> [#uses=1]
41         %I = call double @cos( double %H )              ; <double> [#uses=1]
42         ret double %I
45 declare ptr @llvm.launder.invariant.group(ptr)
47 define ptr @launder(ptr %p) {
48         %q = call ptr @llvm.launder.invariant.group(ptr %p)
49         ret ptr %q
52 declare ptr @llvm.strip.invariant.group(ptr)
54 define ptr @strip(ptr %p) {
55         %q = call ptr @llvm.strip.invariant.group(ptr %p)
56         ret ptr %q
60 ; sideeffect
62 declare void @llvm.sideeffect()
64 define void @test_sideeffect() {
65     call void @llvm.sideeffect()
66     ret void