@@ -24,21 +24,24 @@ llvm.func @foo(%arg0: !llvm.ptr, %arg1: !llvm.ptr) {
24
24
%0 = llvm.mlir.constant (5 : i64 ) : i64
25
25
llvm.intr.experimental.noalias.scope.decl #alias_scope
26
26
%2 = llvm.load %arg1 {alias_scopes = [#alias_scope ], alignment = 4 : i64 , noalias_scopes = [#alias_scope1 ]} : !llvm.ptr -> f32
27
- %3 = llvm.getelementptr inbounds %arg0 [%0 ] : (!llvm.ptr , i64 ) -> !llvm.ptr , f32
28
- llvm.store %2 , %3 {alias_scopes = [#alias_scope1 ], alignment = 4 : i64 , noalias_scopes = [#alias_scope ]} : f32 , !llvm.ptr
27
+ " test.one_region_op" () ({
28
+ %3 = llvm.getelementptr inbounds %arg0 [%0 ] : (!llvm.ptr , i64 ) -> !llvm.ptr , f32
29
+ llvm.store %2 , %3 {alias_scopes = [#alias_scope1 ], alignment = 4 : i64 , noalias_scopes = [#alias_scope ]} : f32 , !llvm.ptr
30
+ " test.terminator" () : () -> ()
31
+ }) : () -> ()
29
32
llvm.return
30
33
}
31
34
32
- // CHECK-LABEL: llvm.func @bar
35
+ // CHECK-LABEL: llvm.func @clone_alias_scopes
33
36
// CHECK: llvm.intr.experimental.noalias.scope.decl #[[$BAR_LOAD]]
34
37
// CHECK: llvm.load
35
38
// CHECK-SAME: alias_scopes = [#[[$BAR_LOAD]]]
36
39
// CHECK-SAME: noalias_scopes = [#[[$BAR_STORE]]]
37
40
// CHECK: llvm.store
38
41
// CHECK-SAME: alias_scopes = [#[[$BAR_STORE]]]
39
42
// CHECK-SAME: noalias_scopes = [#[[$BAR_LOAD]]]
40
- llvm.func @bar (%arg0: !llvm.ptr , %arg1: !llvm.ptr , %arg2 : !llvm.ptr ) {
41
- llvm.call @foo (%arg0 , %arg2 ) : (!llvm.ptr , !llvm.ptr ) -> ()
43
+ llvm.func @clone_alias_scopes (%arg0: !llvm.ptr , %arg1: !llvm.ptr ) {
44
+ llvm.call @foo (%arg0 , %arg1 ) : (!llvm.ptr , !llvm.ptr ) -> ()
42
45
llvm.return
43
46
}
44
47
@@ -87,9 +90,12 @@ llvm.func @callee_with_metadata(%arg0: !llvm.ptr, %arg1: !llvm.ptr, %arg2: !llvm
87
90
llvm.store %3 , %4 {alias_scopes = [#alias_scope ], alignment = 4 : i64 , noalias_scopes = [#alias_scope1 ]} : f32 , !llvm.ptr
88
91
%5 = llvm.getelementptr inbounds %arg1 [%1 ] : (!llvm.ptr , i64 ) -> !llvm.ptr , f32
89
92
llvm.store %3 , %5 {alias_scopes = [#alias_scope1 ], alignment = 4 : i64 , noalias_scopes = [#alias_scope ]} : f32 , !llvm.ptr
90
- %6 = llvm.load %arg2 {alignment = 4 : i64 } : !llvm.ptr -> f32
91
- %7 = llvm.getelementptr inbounds %arg0 [%2 ] : (!llvm.ptr , i64 ) -> !llvm.ptr , f32
92
- llvm.store %6 , %7 {alignment = 4 : i64 } : f32 , !llvm.ptr
93
+ " test.one_region_op" () ({
94
+ %6 = llvm.load %arg2 {alignment = 4 : i64 } : !llvm.ptr -> f32
95
+ %7 = llvm.getelementptr inbounds %arg0 [%2 ] : (!llvm.ptr , i64 ) -> !llvm.ptr , f32
96
+ llvm.store %6 , %7 {alignment = 4 : i64 } : f32 , !llvm.ptr
97
+ " test.terminator" () : () -> ()
98
+ }) : () -> ()
93
99
llvm.return
94
100
}
95
101
@@ -105,9 +111,13 @@ llvm.func @callee_without_metadata(%arg0: !llvm.ptr, %arg1: !llvm.ptr, %arg2: !l
105
111
llvm.store %3 , %4 {alignment = 4 : i64 } : f32 , !llvm.ptr
106
112
%5 = llvm.getelementptr inbounds %arg1 [%1 ] : (!llvm.ptr , i64 ) -> !llvm.ptr , f32
107
113
llvm.store %3 , %5 {alignment = 4 : i64 } : f32 , !llvm.ptr
108
- %6 = llvm.load %arg2 {alignment = 4 : i64 } : !llvm.ptr -> f32
109
- %7 = llvm.getelementptr inbounds %arg0 [%2 ] : (!llvm.ptr , i64 ) -> !llvm.ptr , f32
110
- llvm.store %6 , %7 {alignment = 4 : i64 } : f32 , !llvm.ptr
114
+ " test.one_region_op" () ({
115
+ %6 = llvm.load %arg2 {alignment = 4 : i64 } : !llvm.ptr -> f32
116
+ %7 = llvm.getelementptr inbounds %arg0 [%2 ] : (!llvm.ptr , i64 ) -> !llvm.ptr , f32
117
+ llvm.store %6 , %7 {alignment = 4 : i64 } : f32 , !llvm.ptr
118
+ " test.terminator" () : () -> ()
119
+ }) : () -> ()
120
+
111
121
llvm.return
112
122
}
113
123
@@ -394,3 +404,30 @@ llvm.func @bar(%arg0: !llvm.ptr, %arg1: !llvm.ptr, %arg2: !llvm.ptr) {
394
404
llvm.call @supported_operations (%arg0 , %arg2 ) : (!llvm.ptr , !llvm.ptr ) -> ()
395
405
llvm.return
396
406
}
407
+
408
+ // -----
409
+
410
+ // CHECK-DAG: #[[DOMAIN:.*]] = #llvm.alias_scope_domain<{{.*}}>
411
+ // CHECK-DAG: #[[$ARG_SCOPE:.*]] = #llvm.alias_scope<id = {{.*}}, domain = #[[DOMAIN]]{{(,.*)?}}>
412
+
413
+ llvm.func @foo (%arg: i32 )
414
+
415
+ llvm.func @region (%arg0: !llvm.ptr {llvm.noalias }) {
416
+ " test.one_region_op" () ({
417
+ %1 = llvm.load %arg0 : !llvm.ptr -> i32
418
+ llvm.call @foo (%1 ) : (i32 ) -> ()
419
+ " test.terminator" () : () -> ()
420
+ }) : () -> ()
421
+ llvm.return
422
+ }
423
+
424
+ // CHECK-LABEL: llvm.func @noalias_with_region
425
+ // CHECK: llvm.load
426
+ // CHECK-SAME: alias_scopes = [#[[$ARG_SCOPE]]]
427
+ // CHECK: llvm.call
428
+ // CHECK-NOT: alias_scopes
429
+ // CHECK-SAME: noalias_scopes = [#[[$ARG_SCOPE]]]
430
+ llvm.func @noalias_with_region (%arg0: !llvm.ptr ) {
431
+ llvm.call @region (%arg0 ) : (!llvm.ptr ) -> ()
432
+ llvm.return
433
+ }
0 commit comments