Lines Matching full:llvm

1 // RUN: mlir-opt %s --pass-pipeline='builtin.module(llvm.func(mem2reg{region-simplify=false}))' | F…
3 llvm.func @use(i64)
4 llvm.func @use_ptr(!llvm.ptr)
6 #di_basic_type = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "ptr sized type", sizeInBits = …
7 #di_file = #llvm.di_file<"test.ll" in "">
8 #di_compile_unit = #llvm.di_compile_unit<id = distinct[0]<>, sourceLanguage = DW_LANG_C_plus_plus_1…
9 #di_subprogram = #llvm.di_subprogram<compileUnit = #di_compile_unit, scope = #di_file, name = "blah…
10 // CHECK: #[[$VAR:.*]] = #llvm.di_local_variable<{{.*}}name = "ptr sized var"{{.*}}>
11 #di_local_variable = #llvm.di_local_variable<scope = #di_subprogram, name = "ptr sized var", file =…
12 #di_local_variable_2 = #llvm.di_local_variable<scope = #di_subprogram, name = "ptr sized var 2", fi…
14 // CHECK-LABEL: llvm.func @basic_store_load
15 llvm.func @basic_store_load(%arg0: i64) -> i64 {
16 %0 = llvm.mlir.constant(1 : i32) : i32
17 // CHECK-NOT: = llvm.alloca
18 %1 = llvm.alloca %0 x i64 {alignment = 8 : i64} : (i32) -> !llvm.ptr
19 // CHECK-NOT: llvm.store
20 llvm.store %arg0, %1 {alignment = 4 : i64} : i64, !llvm.ptr
21 // CHECK-NOT: llvm.intr.dbg.declare
22 llvm.intr.dbg.declare #di_local_variable = %1 : !llvm.ptr
23 // CHECK: llvm.intr.dbg.value #[[$VAR]] = %[[LOADED:.*]] : i64
24 // CHECK-NOT: llvm.intr.dbg.value
25 // CHECK-NOT: llvm.intr.dbg.declare
26 // CHECK-NOT: llvm.store
27 %2 = llvm.load %1 {alignment = 4 : i64} : !llvm.ptr -> i64
28 // CHECK: llvm.return %[[LOADED]] : i64
29 llvm.return %2 : i64
32 // CHECK-LABEL: llvm.func @multiple_store_load
33 llvm.func @multiple_store_load(%arg0: i64) -> i64 {
34 %0 = llvm.mlir.constant(1 : i32) : i32
35 // CHECK-NOT: = llvm.alloca
36 %1 = llvm.alloca %0 x i64 {alignment = 8 : i64} : (i32) -> !llvm.ptr
37 // CHECK-NOT: llvm.intr.dbg.declare
38 llvm.intr.dbg.declare #di_local_variable = %1 : !llvm.ptr
39 // CHECK-NOT: llvm.store
40 llvm.store %arg0, %1 {alignment = 4 : i64} : i64, !llvm.ptr
41 // CHECK-NOT: llvm.intr.dbg.declare
42 llvm.intr.dbg.declare #di_local_variable = %1 : !llvm.ptr
43 // CHECK: llvm.intr.dbg.value #[[$VAR]] = %[[LOADED:.*]] : i64
44 // CHECK: llvm.intr.dbg.value #[[$VAR]] = %[[LOADED]] : i64
45 // CHECK-NOT: llvm.intr.dbg.value
46 // CHECK-NOT: llvm.intr.dbg.declare
47 // CHECK-NOT: llvm.store
48 %2 = llvm.load %1 {alignment = 4 : i64} : !llvm.ptr -> i64
49 // CHECK: llvm.return %[[LOADED]] : i64
50 llvm.return %2 : i64
53 // CHECK-LABEL: llvm.func @block_argument_value
55 llvm.func @block_argument_value(%arg0: i64, %arg1: i1) -> i64 {
56 %0 = llvm.mlir.constant(1 : i32) : i32
57 // CHECK-NOT: = llvm.alloca
58 %1 = llvm.alloca %0 x i64 {alignment = 8 : i64} : (i32) -> !llvm.ptr
59 // CHECK-NOT: llvm.intr.dbg.declare
60 llvm.intr.dbg.declare #di_local_variable = %1 : !llvm.ptr
61 llvm.cond_br %arg1, ^bb1, ^bb2
64 // CHECK: llvm.intr.dbg.value #[[$VAR]] = %[[ARG0]]
65 // CHECK-NOT: llvm.intr.dbg.value
66 llvm.store %arg0, %1 {alignment = 4 : i64} : i64, !llvm.ptr
67 llvm.br ^bb2
70 // CHECK: llvm.intr.dbg.value #[[$VAR]] = %[[BLOCKARG]]
71 %2 = llvm.load %1 {alignment = 4 : i64} : !llvm.ptr -> i64
72 llvm.return %2 : i64
75 // CHECK-LABEL: llvm.func @double_block_argument_value
77 llvm.func @double_block_argument_value(%arg0: i64, %arg1: i1) -> i64 {
78 %0 = llvm.mlir.constant(1 : i32) : i32
79 // CHECK-NOT: = llvm.alloca
80 %1 = llvm.alloca %0 x i64 {alignment = 8 : i64} : (i32) -> !llvm.ptr
81 // CHECK-NOT: llvm.intr.dbg.declare
82 llvm.intr.dbg.declare #di_local_variable = %1 : !llvm.ptr
83 llvm.cond_br %arg1, ^bb1, ^bb2
86 // CHECK: llvm.intr.dbg.value #[[$VAR]] = %[[BLOCKARG1]]
87 %2 = llvm.load %1 {alignment = 4 : i64} : !llvm.ptr -> i64
88 llvm.call @use(%2) : (i64) -> ()
89 // CHECK: llvm.intr.dbg.value #[[$VAR]] = %[[ARG0]]
90 llvm.store %arg0, %1 {alignment = 4 : i64} : i64, !llvm.ptr
91 llvm.br ^bb2
92 // CHECK-NOT: llvm.intr.dbg.value
95 // CHECK: llvm.intr.dbg.value #[[$VAR]] = %[[BLOCKARG2]]
96 llvm.br ^bb1
99 // CHECK-LABEL: llvm.func @always_drop_promoted_declare
100 // CHECK: %[[UNDEF:.*]] = llvm.mlir.undef
101 // CHECK-NOT: = llvm.alloca
102 // CHECK-NOT: llvm.intr.dbg.declare
103 // CHECK: llvm.intr.dbg.value #{{.*}} = %[[UNDEF]]
104 llvm.func @always_drop_promoted_declare() {
105 %0 = llvm.mlir.constant(1 : i32) : i32
106 %1 = llvm.alloca %0 x i64 {alignment = 8 : i64} : (i32) -> !llvm.ptr
107 llvm.intr.dbg.declare #di_local_variable = %1 : !llvm.ptr
108 llvm.intr.dbg.value #di_local_variable = %1 : !llvm.ptr
109 llvm.return
112 // CHECK-LABEL: llvm.func @keep_dbg_if_not_promoted
113 llvm.func @keep_dbg_if_not_promoted() {
114 %0 = llvm.mlir.constant(1 : i32) : i32
115 // CHECK: %[[ALLOCA:.*]] = llvm.alloca
116 %1 = llvm.alloca %0 x i64 {alignment = 8 : i64} : (i32) -> !llvm.ptr
117 // CHECK-NOT: = llvm.alloca
118 // CHECK-NOT: llvm.intr.dbg.declare
119 // CHECK: llvm.intr.dbg.declare #[[$VAR]] = %[[ALLOCA]]
120 // CHECK-NOT: = llvm.alloca
121 // CHECK-NOT: llvm.intr.dbg.declare
122 // CHECK: llvm.call @use_ptr(%[[ALLOCA]])
123 llvm.intr.dbg.declare #di_local_variable = %1 : !llvm.ptr
124 %2 = llvm.alloca %0 x i64 {alignment = 8 : i64} : (i32) -> !llvm.ptr
125 llvm.intr.dbg.declare #di_local_variable_2 = %2 : !llvm.ptr
126 llvm.call @use_ptr(%1) : (!llvm.ptr) -> ()
127 llvm.return