xref: /llvm-project/llvm/test/CodeGen/Generic/intrinsics.ll (revision 0e8bd5a44a1bd8034706189b49a7a816c59304cd)
1; RUN: llc < %s
2; RUN: llc -O0 < %s
3
4; NVPTX can't select sinf(float)/sin(double)
5; XFAIL: target=nvptx{{.*}}
6
7;; SQRT
8declare float @llvm.sqrt.f32(float)
9
10declare double @llvm.sqrt.f64(double)
11
12define 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
17}
18
19
20; SIN
21declare float @sinf(float) readonly
22
23declare double @sin(double) readonly
24
25define 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
30}
31
32
33; COS
34declare float @cosf(float) readonly
35
36declare double @cos(double) readonly
37
38define 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
43}
44
45declare ptr @llvm.launder.invariant.group(ptr)
46
47define ptr @launder(ptr %p) {
48        %q = call ptr @llvm.launder.invariant.group(ptr %p)
49        ret ptr %q
50}
51
52declare ptr @llvm.strip.invariant.group(ptr)
53
54define ptr @strip(ptr %p) {
55        %q = call ptr @llvm.strip.invariant.group(ptr %p)
56        ret ptr %q
57}
58
59
60; sideeffect
61
62declare void @llvm.sideeffect()
63
64define void @test_sideeffect() {
65    call void @llvm.sideeffect()
66    ret void
67}
68