1
1
;RUN: opt -mtriple=amdgcn-mesa-mesa3d -analyze -divergence %s | FileCheck %s
2
2
3
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.swap.i32(
3
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.swap.1d.i32. i32(
4
4
define float @image_atomic_swap (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
5
5
main_body:
6
- %orig = call i32 @llvm.amdgcn.image.atomic.swap.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
6
+ %orig = call i32 @llvm.amdgcn.image.atomic.swap.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
7
7
%r = bitcast i32 %orig to float
8
8
ret float %r
9
9
}
10
10
11
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.add.i32(
11
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.add.1d.i32. i32(
12
12
define float @image_atomic_add (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
13
13
main_body:
14
- %orig = call i32 @llvm.amdgcn.image.atomic.add.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
14
+ %orig = call i32 @llvm.amdgcn.image.atomic.add.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
15
15
%r = bitcast i32 %orig to float
16
16
ret float %r
17
17
}
18
18
19
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.sub.i32(
19
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.sub.1d.i32. i32(
20
20
define float @image_atomic_sub (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
21
21
main_body:
22
- %orig = call i32 @llvm.amdgcn.image.atomic.sub.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
22
+ %orig = call i32 @llvm.amdgcn.image.atomic.sub.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
23
23
%r = bitcast i32 %orig to float
24
24
ret float %r
25
25
}
26
26
27
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.smin.i32(
27
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.smin.1d.i32. i32(
28
28
define float @image_atomic_smin (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
29
29
main_body:
30
- %orig = call i32 @llvm.amdgcn.image.atomic.smin.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
30
+ %orig = call i32 @llvm.amdgcn.image.atomic.smin.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
31
31
%r = bitcast i32 %orig to float
32
32
ret float %r
33
33
}
34
34
35
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.umin.i32(
35
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.umin.1d.i32. i32(
36
36
define float @image_atomic_umin (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
37
37
main_body:
38
- %orig = call i32 @llvm.amdgcn.image.atomic.umin.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
38
+ %orig = call i32 @llvm.amdgcn.image.atomic.umin.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
39
39
%r = bitcast i32 %orig to float
40
40
ret float %r
41
41
}
42
42
43
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.smax.i32(
43
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.smax.1d.i32. i32(
44
44
define float @image_atomic_smax (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
45
45
main_body:
46
- %orig = call i32 @llvm.amdgcn.image.atomic.smax.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
46
+ %orig = call i32 @llvm.amdgcn.image.atomic.smax.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
47
47
%r = bitcast i32 %orig to float
48
48
ret float %r
49
49
}
50
50
51
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.umax.i32(
51
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.umax.1d.i32. i32(
52
52
define float @image_atomic_umax (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
53
53
main_body:
54
- %orig = call i32 @llvm.amdgcn.image.atomic.umax.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
54
+ %orig = call i32 @llvm.amdgcn.image.atomic.umax.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
55
55
%r = bitcast i32 %orig to float
56
56
ret float %r
57
57
}
58
58
59
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.and.i32(
59
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.and.1d.i32. i32(
60
60
define float @image_atomic_and (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
61
61
main_body:
62
- %orig = call i32 @llvm.amdgcn.image.atomic.and.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
62
+ %orig = call i32 @llvm.amdgcn.image.atomic.and.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
63
63
%r = bitcast i32 %orig to float
64
64
ret float %r
65
65
}
66
66
67
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.or.i32(
67
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.or.1d.i32. i32(
68
68
define float @image_atomic_or (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
69
69
main_body:
70
- %orig = call i32 @llvm.amdgcn.image.atomic.or.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
70
+ %orig = call i32 @llvm.amdgcn.image.atomic.or.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
71
71
%r = bitcast i32 %orig to float
72
72
ret float %r
73
73
}
74
74
75
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.xor.i32(
75
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.xor.1d.i32. i32(
76
76
define float @image_atomic_xor (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
77
77
main_body:
78
- %orig = call i32 @llvm.amdgcn.image.atomic.xor.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
78
+ %orig = call i32 @llvm.amdgcn.image.atomic.xor.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
79
79
%r = bitcast i32 %orig to float
80
80
ret float %r
81
81
}
82
82
83
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.inc.i32(
83
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.inc.1d.i32. i32(
84
84
define float @image_atomic_inc (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
85
85
main_body:
86
- %orig = call i32 @llvm.amdgcn.image.atomic.inc.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
86
+ %orig = call i32 @llvm.amdgcn.image.atomic.inc.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
87
87
%r = bitcast i32 %orig to float
88
88
ret float %r
89
89
}
90
90
91
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.dec.i32(
91
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.dec.1d.i32. i32(
92
92
define float @image_atomic_dec (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data ) #0 {
93
93
main_body:
94
- %orig = call i32 @llvm.amdgcn.image.atomic.dec.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
94
+ %orig = call i32 @llvm.amdgcn.image.atomic.dec.1d. i32.i32 (i32 %data , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
95
95
%r = bitcast i32 %orig to float
96
96
ret float %r
97
97
}
98
98
99
- ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.cmpswap.i32(
99
+ ;CHECK: DIVERGENT: %orig = call i32 @llvm.amdgcn.image.atomic.cmpswap.1d.i32. i32(
100
100
define float @image_atomic_cmpswap (<8 x i32 > inreg %rsrc , i32 inreg %addr , i32 inreg %data , i32 inreg %cmp ) #0 {
101
101
main_body:
102
- %orig = call i32 @llvm.amdgcn.image.atomic.cmpswap.i32 (i32 %data , i32 %cmp , i32 %addr , <8 x i32 > %rsrc , i1 0 , i1 0 , i1 0 )
102
+ %orig = call i32 @llvm.amdgcn.image.atomic.cmpswap.1d. i32.i32 (i32 %data , i32 %cmp , i32 %addr , <8 x i32 > %rsrc , i32 0 , i32 0 )
103
103
%r = bitcast i32 %orig to float
104
104
ret float %r
105
105
}
@@ -112,19 +112,19 @@ main_body:
112
112
ret float %r
113
113
}
114
114
115
- declare i32 @llvm.amdgcn.image.atomic.swap.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
116
- declare i32 @llvm.amdgcn.image.atomic.add.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
117
- declare i32 @llvm.amdgcn.image.atomic.sub.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
118
- declare i32 @llvm.amdgcn.image.atomic.smin.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
119
- declare i32 @llvm.amdgcn.image.atomic.umin.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
120
- declare i32 @llvm.amdgcn.image.atomic.smax.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
121
- declare i32 @llvm.amdgcn.image.atomic.umax.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
122
- declare i32 @llvm.amdgcn.image.atomic.and.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
123
- declare i32 @llvm.amdgcn.image.atomic.or.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
124
- declare i32 @llvm.amdgcn.image.atomic.xor.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
125
- declare i32 @llvm.amdgcn.image.atomic.inc.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
126
- declare i32 @llvm.amdgcn.image.atomic.dec.i32 (i32 , i32 , <8 x i32 >, i1 , i1 , i1 ) #0
127
- declare i32 @llvm.amdgcn.image.atomic.cmpswap.i32 (i32 , i32 , i32 , <8 x i32 >,i1 , i1 , i1 ) #0
115
+ declare i32 @llvm.amdgcn.image.atomic.swap.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
116
+ declare i32 @llvm.amdgcn.image.atomic.add.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
117
+ declare i32 @llvm.amdgcn.image.atomic.sub.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
118
+ declare i32 @llvm.amdgcn.image.atomic.smin.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
119
+ declare i32 @llvm.amdgcn.image.atomic.umin.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
120
+ declare i32 @llvm.amdgcn.image.atomic.smax.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
121
+ declare i32 @llvm.amdgcn.image.atomic.umax.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
122
+ declare i32 @llvm.amdgcn.image.atomic.and.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
123
+ declare i32 @llvm.amdgcn.image.atomic.or.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
124
+ declare i32 @llvm.amdgcn.image.atomic.xor.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
125
+ declare i32 @llvm.amdgcn.image.atomic.inc.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
126
+ declare i32 @llvm.amdgcn.image.atomic.dec.1d. i32.i32 (i32 , i32 , <8 x i32 >, i32 , i32 ) #0
127
+ declare i32 @llvm.amdgcn.image.atomic.cmpswap.1d. i32.i32 (i32 , i32 , i32 , <8 x i32 >, i32 , i32 ) #0
128
128
129
129
declare i32 @llvm.amdgcn.image.atomic.add.2d.i32.i32 (i32 , i32 , i32 , <8 x i32 >, i32 , i32 ) #0
130
130
0 commit comments