xref: /llvm-project/llvm/test/Analysis/CostModel/free-intrinsics-no_info.ll (revision 1e442ac4c33ac36d33e191c2d18ff594d8a5d11a)
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2;; Pin this test to not use "RemoveDIs" non-intrinsic debug-info. We get the
3;; correct output in that mode, but it generates spurious test changes, so
4;; avoid that for the moment.
5; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size %s -S -o - --experimental-debuginfo-iterators=false | FileCheck %s --check-prefix=CHECK-SIZE
6; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=throughput %s -S -o - --experimental-debuginfo-iterators=false | FileCheck %s --check-prefix=CHECK-THROUGHPUT
7
8define i32 @trivially_free() {
9; CHECK-SIZE-LABEL: 'trivially_free'
10; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = call i32 @llvm.annotation.i32.p0(i32 undef, ptr undef, ptr undef, i32 undef)
11; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.assume(i1 undef)
12; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.experimental.noalias.scope.decl(metadata !3)
13; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.sideeffect()
14; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.dbg.assign(metadata ptr undef, metadata !6, metadata !DIExpression(), metadata !8, metadata ptr undef, metadata !DIExpression()), !dbg !9
15; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.dbg.declare(metadata ptr undef, metadata !6, metadata !DIExpression()), !dbg !9
16; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.dbg.label(metadata !10), !dbg !9
17; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = call ptr @llvm.invariant.start.p0(i64 1, ptr undef)
18; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.invariant.end.p0(ptr undef, i64 1, ptr undef)
19; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef)
20; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef)
21; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef)
22; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(i64 1, ptr undef)
23; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(i64 1, ptr undef)
24; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 true, i1 true, i1 true)
25; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a6 = call ptr @llvm.ptr.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef)
26; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.var.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef)
27; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a7 = call i1 @llvm.allow.ubsan.check(i8 123)
28; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a8 = call i1 @llvm.allow.runtime.check(metadata !"test_check")
29; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
30;
31; CHECK-THROUGHPUT-LABEL: 'trivially_free'
32; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = call i32 @llvm.annotation.i32.p0(i32 undef, ptr undef, ptr undef, i32 undef)
33; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.assume(i1 undef)
34; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.experimental.noalias.scope.decl(metadata !3)
35; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.sideeffect()
36; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.dbg.assign(metadata ptr undef, metadata !6, metadata !DIExpression(), metadata !8, metadata ptr undef, metadata !DIExpression()), !dbg !9
37; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.dbg.declare(metadata ptr undef, metadata !6, metadata !DIExpression()), !dbg !9
38; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.dbg.label(metadata !10), !dbg !9
39; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = call ptr @llvm.invariant.start.p0(i64 1, ptr undef)
40; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.invariant.end.p0(ptr undef, i64 1, ptr undef)
41; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef)
42; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef)
43; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef)
44; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(i64 1, ptr undef)
45; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(i64 1, ptr undef)
46; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 true, i1 true, i1 true)
47; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a6 = call ptr @llvm.ptr.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef)
48; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.var.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef)
49; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a7 = call i1 @llvm.allow.ubsan.check(i8 123)
50; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a8 = call i1 @llvm.allow.runtime.check(metadata !"test_check")
51; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
52;
53  %a0 = call i32 @llvm.annotation.i32(i32 undef, ptr undef, ptr undef, i32 undef)
54  call void @llvm.assume(i1 undef)
55  call void @llvm.experimental.noalias.scope.decl(metadata !4)
56  call void @llvm.sideeffect()
57  call void @llvm.dbg.assign(metadata ptr undef, metadata !0, metadata !DIExpression(), metadata !10, metadata ptr undef, metadata !DIExpression()), !dbg !8
58  call void @llvm.dbg.declare(metadata ptr undef, metadata !0, metadata !DIExpression()), !dbg !8
59  call void @llvm.dbg.value(metadata i64 undef, i64 undef, metadata !DIExpression(), metadata !DIExpression()), !dbg !8
60  call void @llvm.dbg.label(metadata !2), !dbg !8
61  %a1 = call ptr @llvm.invariant.start.p0(i64 1, ptr undef)
62  call void @llvm.invariant.end.p0(ptr undef, i64 1, ptr undef)
63  %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef)
64  %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef)
65  %a4 = call i1 @llvm.is.constant.i32(i32 undef)
66  call void @llvm.lifetime.start.p0(i64 1, ptr undef)
67  call void @llvm.lifetime.end.p0(i64 1, ptr undef)
68  %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 1, i1 1, i1 1)
69  %a6 = call ptr @llvm.ptr.annotation.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef)
70  call void @llvm.var.annotation(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef)
71  %a7 = call i1 @llvm.allow.ubsan.check(i8 123)
72  %a8 = call i1 @llvm.allow.runtime.check(metadata !"test_check")
73  ret i32 undef
74}
75
76declare i32 @llvm.annotation.i32(i32, ptr, ptr, i32)
77declare void @llvm.assume(i1)
78declare void @llvm.experimental.noalias.scope.decl(metadata)
79declare void @llvm.sideeffect()
80declare void @llvm.dbg.assign(metadata, metadata, metadata, metadata, metadata, metadata)
81declare void @llvm.dbg.declare(metadata, metadata, metadata)
82declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
83declare void @llvm.dbg.label(metadata)
84declare ptr @llvm.invariant.start.p0(i64, ptr)
85declare void @llvm.invariant.end.p0(ptr, i64, ptr)
86declare ptr @llvm.launder.invariant.group.p0(ptr)
87declare ptr @llvm.strip.invariant.group.p0(ptr)
88declare i1 @llvm.is.constant.i32(i32)
89declare void @llvm.lifetime.start.p0(i64, ptr)
90declare void @llvm.lifetime.end.p0(i64, ptr)
91declare i64 @llvm.objectsize.i64.p0(ptr, i1, i1, i1)
92declare ptr @llvm.ptr.annotation.p0(ptr, ptr, ptr, i32, ptr)
93declare void @llvm.var.annotation(ptr, ptr, ptr, i32, ptr)
94
95!llvm.dbg.cu = !{!9}
96!llvm.module.flags = !{!7}
97
98!0 = !DILocalVariable(scope: !1)
99!1 = distinct !DISubprogram(name: "dummy", line: 79, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, file: !3, unit: !9)
100!2 = !DILabel(scope: !1, name: "label", file: !3, line: 7)
101!3 = !DIFile(filename: "debug-label.c", directory: "./")
102!4 = !{ !5 }
103!5 = distinct !{ !5, !6, !"foo: var" }
104!6 = distinct !{ !6, !"foo" }
105!7 = !{i32 2, !"Debug Info Version", i32 3}
106!8 = !DILocation(line: 0, scope: !1)
107!9 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang")
108!10 = distinct !DIAssignID()
109