1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2
- ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 < %s | FileCheck -check-prefixes=GCN,GFX7 %s
3
- ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s
4
- ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s
5
- ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s
2
+ ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 < %s | FileCheck -check-prefixes=GFX7 %s
3
+ ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9 %s
4
+ ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX11 %s
6
5
7
6
define i32 @fneg_select_i32 (i32 %cond , i32 %a , i32 %b ) {
8
7
; GCN-LABEL: fneg_select_i32:
@@ -12,6 +11,20 @@ define i32 @fneg_select_i32(i32 %cond, i32 %a, i32 %b) {
12
11
; GCN-NEXT: v_cndmask_b32_e64 v0, v2, -v1, vcc
13
12
; GCN-NEXT: s_setpc_b64 s[30:31]
14
13
;
14
+ ; GFX7-LABEL: fneg_select_i32:
15
+ ; GFX7: ; %bb.0:
16
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17
+ ; GFX7-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
18
+ ; GFX7-NEXT: v_cndmask_b32_e64 v0, v2, -v1, vcc
19
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
20
+ ;
21
+ ; GFX9-LABEL: fneg_select_i32:
22
+ ; GFX9: ; %bb.0:
23
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24
+ ; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
25
+ ; GFX9-NEXT: v_cndmask_b32_e64 v0, v2, -v1, vcc
26
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
27
+ ;
15
28
; GFX11-LABEL: fneg_select_i32:
16
29
; GFX11: ; %bb.0:
17
30
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -34,6 +47,24 @@ define <2 x i32> @fneg_select_v2i32(<2 x i32> %cond, <2 x i32> %a, <2 x i32> %b)
34
47
; GCN-NEXT: v_cndmask_b32_e64 v1, v5, -v3, vcc
35
48
; GCN-NEXT: s_setpc_b64 s[30:31]
36
49
;
50
+ ; GFX7-LABEL: fneg_select_v2i32:
51
+ ; GFX7: ; %bb.0:
52
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53
+ ; GFX7-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
54
+ ; GFX7-NEXT: v_cndmask_b32_e64 v0, v4, -v2, vcc
55
+ ; GFX7-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1
56
+ ; GFX7-NEXT: v_cndmask_b32_e64 v1, v5, -v3, vcc
57
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
58
+ ;
59
+ ; GFX9-LABEL: fneg_select_v2i32:
60
+ ; GFX9: ; %bb.0:
61
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62
+ ; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
63
+ ; GFX9-NEXT: v_cndmask_b32_e64 v0, v4, -v2, vcc
64
+ ; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1
65
+ ; GFX9-NEXT: v_cndmask_b32_e64 v1, v5, -v3, vcc
66
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
67
+ ;
37
68
; GFX11-LABEL: fneg_select_v2i32:
38
69
; GFX11: ; %bb.0:
39
70
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -56,6 +87,20 @@ define i32 @fabs_select_i32(i32 %cond, i32 %a, i32 %b) {
56
87
; GCN-NEXT: v_cndmask_b32_e64 v0, v2, |v1|, vcc
57
88
; GCN-NEXT: s_setpc_b64 s[30:31]
58
89
;
90
+ ; GFX7-LABEL: fabs_select_i32:
91
+ ; GFX7: ; %bb.0:
92
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
93
+ ; GFX7-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
94
+ ; GFX7-NEXT: v_cndmask_b32_e64 v0, v2, |v1|, vcc
95
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
96
+ ;
97
+ ; GFX9-LABEL: fabs_select_i32:
98
+ ; GFX9: ; %bb.0:
99
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
100
+ ; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
101
+ ; GFX9-NEXT: v_cndmask_b32_e64 v0, v2, |v1|, vcc
102
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
103
+ ;
59
104
; GFX11-LABEL: fabs_select_i32:
60
105
; GFX11: ; %bb.0:
61
106
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -78,6 +123,24 @@ define <2 x i32> @fabs_select_v2i32(<2 x i32> %cond, <2 x i32> %a, <2 x i32> %b)
78
123
; GCN-NEXT: v_cndmask_b32_e64 v1, v5, |v3|, vcc
79
124
; GCN-NEXT: s_setpc_b64 s[30:31]
80
125
;
126
+ ; GFX7-LABEL: fabs_select_v2i32:
127
+ ; GFX7: ; %bb.0:
128
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
129
+ ; GFX7-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
130
+ ; GFX7-NEXT: v_cndmask_b32_e64 v0, v4, |v2|, vcc
131
+ ; GFX7-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1
132
+ ; GFX7-NEXT: v_cndmask_b32_e64 v1, v5, |v3|, vcc
133
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
134
+ ;
135
+ ; GFX9-LABEL: fabs_select_v2i32:
136
+ ; GFX9: ; %bb.0:
137
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
138
+ ; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
139
+ ; GFX9-NEXT: v_cndmask_b32_e64 v0, v4, |v2|, vcc
140
+ ; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1
141
+ ; GFX9-NEXT: v_cndmask_b32_e64 v1, v5, |v3|, vcc
142
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
143
+ ;
81
144
; GFX11-LABEL: fabs_select_v2i32:
82
145
; GFX11: ; %bb.0:
83
146
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -101,6 +164,22 @@ define i32 @fneg_fabs_select_i32(i32 %cond, i32 %a, i32 %b) {
101
164
; GCN-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc
102
165
; GCN-NEXT: s_setpc_b64 s[30:31]
103
166
;
167
+ ; GFX7-LABEL: fneg_fabs_select_i32:
168
+ ; GFX7: ; %bb.0:
169
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
170
+ ; GFX7-NEXT: v_or_b32_e32 v1, 0x80000000, v1
171
+ ; GFX7-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
172
+ ; GFX7-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc
173
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
174
+ ;
175
+ ; GFX9-LABEL: fneg_fabs_select_i32:
176
+ ; GFX9: ; %bb.0:
177
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
178
+ ; GFX9-NEXT: v_or_b32_e32 v1, 0x80000000, v1
179
+ ; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
180
+ ; GFX9-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc
181
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
182
+ ;
104
183
; GFX11-LABEL: fneg_fabs_select_i32:
105
184
; GFX11: ; %bb.0:
106
185
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -127,6 +206,28 @@ define <2 x i32> @fneg_fabs_select_v2i32(<2 x i32> %cond, <2 x i32> %a, <2 x i32
127
206
; GCN-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
128
207
; GCN-NEXT: s_setpc_b64 s[30:31]
129
208
;
209
+ ; GFX7-LABEL: fneg_fabs_select_v2i32:
210
+ ; GFX7: ; %bb.0:
211
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
212
+ ; GFX7-NEXT: v_or_b32_e32 v2, 0x80000000, v2
213
+ ; GFX7-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
214
+ ; GFX7-NEXT: v_or_b32_e32 v3, 0x80000000, v3
215
+ ; GFX7-NEXT: v_cndmask_b32_e32 v0, v4, v2, vcc
216
+ ; GFX7-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1
217
+ ; GFX7-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
218
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
219
+ ;
220
+ ; GFX9-LABEL: fneg_fabs_select_v2i32:
221
+ ; GFX9: ; %bb.0:
222
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
223
+ ; GFX9-NEXT: v_or_b32_e32 v2, 0x80000000, v2
224
+ ; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
225
+ ; GFX9-NEXT: v_or_b32_e32 v3, 0x80000000, v3
226
+ ; GFX9-NEXT: v_cndmask_b32_e32 v0, v4, v2, vcc
227
+ ; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1
228
+ ; GFX9-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
229
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
230
+ ;
130
231
; GFX11-LABEL: fneg_fabs_select_v2i32:
131
232
; GFX11: ; %bb.0:
132
233
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -154,6 +255,24 @@ define i64 @fneg_select_i64(i64 %cond, i64 %a, i64 %b) {
154
255
; GCN-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
155
256
; GCN-NEXT: s_setpc_b64 s[30:31]
156
257
;
258
+ ; GFX7-LABEL: fneg_select_i64:
259
+ ; GFX7: ; %bb.0:
260
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
261
+ ; GFX7-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]
262
+ ; GFX7-NEXT: v_xor_b32_e32 v3, 0x80000000, v3
263
+ ; GFX7-NEXT: v_cndmask_b32_e32 v0, v4, v2, vcc
264
+ ; GFX7-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
265
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
266
+ ;
267
+ ; GFX9-LABEL: fneg_select_i64:
268
+ ; GFX9: ; %bb.0:
269
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
270
+ ; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]
271
+ ; GFX9-NEXT: v_xor_b32_e32 v3, 0x80000000, v3
272
+ ; GFX9-NEXT: v_cndmask_b32_e32 v0, v4, v2, vcc
273
+ ; GFX9-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
274
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
275
+ ;
157
276
; GFX11-LABEL: fneg_select_i64:
158
277
; GFX11: ; %bb.0:
159
278
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -178,6 +297,24 @@ define i64 @fabs_select_i64(i64 %cond, i64 %a, i64 %b) {
178
297
; GCN-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
179
298
; GCN-NEXT: s_setpc_b64 s[30:31]
180
299
;
300
+ ; GFX7-LABEL: fabs_select_i64:
301
+ ; GFX7: ; %bb.0:
302
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
303
+ ; GFX7-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]
304
+ ; GFX7-NEXT: v_and_b32_e32 v3, 0x7fffffff, v3
305
+ ; GFX7-NEXT: v_cndmask_b32_e32 v0, v4, v2, vcc
306
+ ; GFX7-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
307
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
308
+ ;
309
+ ; GFX9-LABEL: fabs_select_i64:
310
+ ; GFX9: ; %bb.0:
311
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
312
+ ; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]
313
+ ; GFX9-NEXT: v_and_b32_e32 v3, 0x7fffffff, v3
314
+ ; GFX9-NEXT: v_cndmask_b32_e32 v0, v4, v2, vcc
315
+ ; GFX9-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
316
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
317
+ ;
181
318
; GFX11-LABEL: fabs_select_i64:
182
319
; GFX11: ; %bb.0:
183
320
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -202,6 +339,24 @@ define i64 @fneg_fabs_select_i64(i64 %cond, i64 %a, i64 %b) {
202
339
; GCN-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
203
340
; GCN-NEXT: s_setpc_b64 s[30:31]
204
341
;
342
+ ; GFX7-LABEL: fneg_fabs_select_i64:
343
+ ; GFX7: ; %bb.0:
344
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
345
+ ; GFX7-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]
346
+ ; GFX7-NEXT: v_or_b32_e32 v3, 0x80000000, v3
347
+ ; GFX7-NEXT: v_cndmask_b32_e32 v0, v4, v2, vcc
348
+ ; GFX7-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
349
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
350
+ ;
351
+ ; GFX9-LABEL: fneg_fabs_select_i64:
352
+ ; GFX9: ; %bb.0:
353
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
354
+ ; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]
355
+ ; GFX9-NEXT: v_or_b32_e32 v3, 0x80000000, v3
356
+ ; GFX9-NEXT: v_cndmask_b32_e32 v0, v4, v2, vcc
357
+ ; GFX9-NEXT: v_cndmask_b32_e32 v1, v5, v3, vcc
358
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
359
+ ;
205
360
; GFX11-LABEL: fneg_fabs_select_i64:
206
361
; GFX11: ; %bb.0:
207
362
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -215,8 +370,3 @@ define i64 @fneg_fabs_select_i64(i64 %cond, i64 %a, i64 %b) {
215
370
%select = select i1 %cmp , i64 %neg.a , i64 %b
216
371
ret i64 %select
217
372
}
218
- ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
219
- ; GFX11-FAKE16: {{.*}}
220
- ; GFX11-TRUE16: {{.*}}
221
- ; GFX7: {{.*}}
222
- ; GFX9: {{.*}}
0 commit comments