4
4
@g1 = protected addrspace (1 ) externally_initialized global i32 0 , align 4
5
5
@g2 = protected addrspace (1 ) externally_initialized global i32 0 , align 4
6
6
@g3 = protected addrspace (1 ) externally_initialized global i32 0 , align 4
7
- @g4 = protected addrspace (1 ) externally_initialized global i32 0 , align 4
8
7
9
8
define internal void @callee_with_always_uniform_argument (ptr addrspace (1 ) %x , i32 %y ) {
10
9
; CHECK-LABEL: define internal void @callee_with_always_uniform_argument(
11
10
; CHECK-SAME: ptr addrspace(1) inreg [[X:%.*]], i32 inreg [[Y:%.*]]) #[[ATTR0:[0-9]+]] {
12
11
; CHECK-NEXT: [[ENTRY:.*:]]
13
12
; CHECK-NEXT: [[X_VAL:%.*]] = load i32, ptr addrspace(1) [[X]], align 4
14
- ; CHECK-NEXT: store i32 [[X_VAL]], ptr addrspace(1) @g3 , align 4
15
- ; CHECK-NEXT: store i32 [[Y]], ptr addrspace(1) @g4 , align 4
13
+ ; CHECK-NEXT: store i32 [[X_VAL]], ptr addrspace(1) @g2 , align 4
14
+ ; CHECK-NEXT: store i32 [[Y]], ptr addrspace(1) @g3 , align 4
16
15
; CHECK-NEXT: ret void
17
16
;
18
17
entry:
19
18
%x.val = load i32 , ptr addrspace (1 ) %x , align 4
20
- store i32 %x.val , ptr addrspace (1 ) @g3 , align 4
21
- store i32 %y , ptr addrspace (1 ) @g4 , align 4
19
+ store i32 %x.val , ptr addrspace (1 ) @g2 , align 4
20
+ store i32 %y , ptr addrspace (1 ) @g3 , align 4
22
21
ret void
23
22
}
24
23
@@ -36,19 +35,31 @@ entry:
36
35
ret void
37
36
}
38
37
38
+ define amdgpu_kernel void @kernel_with_constant (i32 %x ) {
39
+ ; CHECK-LABEL: define amdgpu_kernel void @kernel_with_constant(
40
+ ; CHECK-SAME: i32 [[X:%.*]]) #[[ATTR0]] {
41
+ ; CHECK-NEXT: [[ENTRY:.*:]]
42
+ ; CHECK-NEXT: call void @callee_with_always_uniform_argument(ptr addrspace(1) @g1, i32 [[X]])
43
+ ; CHECK-NEXT: ret void
44
+ ;
45
+ entry:
46
+ call void @callee_with_always_uniform_argument (ptr addrspace (1 ) @g1 , i32 %x )
47
+ ret void
48
+ }
49
+
39
50
define internal void @callee_without_always_uniform_argument (ptr addrspace (1 ) %x , i32 %y ) {
40
51
; CHECK-LABEL: define internal void @callee_without_always_uniform_argument(
41
52
; CHECK-SAME: ptr addrspace(1) [[X:%.*]], i32 [[Y:%.*]]) #[[ATTR0]] {
42
53
; CHECK-NEXT: [[ENTRY:.*:]]
43
54
; CHECK-NEXT: [[X_VAL:%.*]] = load i32, ptr addrspace(1) [[X]], align 4
44
- ; CHECK-NEXT: store i32 [[X_VAL]], ptr addrspace(1) @g3 , align 4
45
- ; CHECK-NEXT: store i32 [[Y]], ptr addrspace(1) @g4 , align 4
55
+ ; CHECK-NEXT: store i32 [[X_VAL]], ptr addrspace(1) @g2 , align 4
56
+ ; CHECK-NEXT: store i32 [[Y]], ptr addrspace(1) @g3 , align 4
46
57
; CHECK-NEXT: ret void
47
58
;
48
59
entry:
49
60
%x.val = load i32 , ptr addrspace (1 ) %x , align 4
50
- store i32 %x.val , ptr addrspace (1 ) @g3 , align 4
51
- store i32 %y , ptr addrspace (1 ) @g4 , align 4
61
+ store i32 %x.val , ptr addrspace (1 ) @g2 , align 4
62
+ store i32 %y , ptr addrspace (1 ) @g3 , align 4
52
63
ret void
53
64
}
54
65
0 commit comments