@@ -50,8 +50,8 @@ if.end:
50
50
ret void
51
51
}
52
52
53
- define void @uniform_br_unprofitable (i32 noundef inreg %value , ptr addrspace (8 ) nocapture writeonly inreg %res , i32 noundef inreg %v_offset , i32 noundef inreg %0 , i32 noundef inreg %flag ) {
54
- ; GFX9-LABEL: uniform_br_unprofitable :
53
+ define void @uniform_br_same_weight (i32 noundef inreg %value , ptr addrspace (8 ) nocapture writeonly inreg %res , i32 noundef inreg %v_offset , i32 noundef inreg %0 , i32 noundef inreg %flag ) {
54
+ ; GFX9-LABEL: uniform_br_same_weight :
55
55
; GFX9: ; %bb.0: ; %entry
56
56
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57
57
; GFX9-NEXT: s_cmp_lt_i32 s11, 1
@@ -68,7 +68,7 @@ define void @uniform_br_unprofitable(i32 noundef inreg %value, ptr addrspace(8)
68
68
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69
69
; GFX9-NEXT: s_setpc_b64 s[30:31]
70
70
;
71
- ; GFX10-LABEL: uniform_br_unprofitable :
71
+ ; GFX10-LABEL: uniform_br_same_weight :
72
72
; GFX10: ; %bb.0: ; %entry
73
73
; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
74
74
; GFX10-NEXT: s_cmp_lt_i32 s11, 1
@@ -97,8 +97,8 @@ if.end:
97
97
ret void
98
98
}
99
99
100
- define void @uniform_br_profitable (i32 noundef inreg %value , ptr addrspace (8 ) nocapture writeonly inreg %res , i32 noundef inreg %v_offset , i32 noundef inreg %0 , i32 noundef inreg %flag ) {
101
- ; GFX9-LABEL: uniform_br_profitable :
100
+ define void @uniform_br_then_likely (i32 noundef inreg %value , ptr addrspace (8 ) nocapture writeonly inreg %res , i32 noundef inreg %v_offset , i32 noundef inreg %0 , i32 noundef inreg %flag ) {
101
+ ; GFX9-LABEL: uniform_br_then_likely :
102
102
; GFX9: ; %bb.0: ; %entry
103
103
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
104
104
; GFX9-NEXT: s_cmp_lt_i32 s11, 1
@@ -115,7 +115,7 @@ define void @uniform_br_profitable(i32 noundef inreg %value, ptr addrspace(8) no
115
115
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
116
116
; GFX9-NEXT: s_setpc_b64 s[30:31]
117
117
;
118
- ; GFX10-LABEL: uniform_br_profitable :
118
+ ; GFX10-LABEL: uniform_br_then_likely :
119
119
; GFX10: ; %bb.0: ; %entry
120
120
; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
121
121
; GFX10-NEXT: s_cmp_lt_i32 s11, 1
@@ -215,8 +215,8 @@ if.end:
215
215
ret void
216
216
}
217
217
218
- define void @divergent_br_unprofitable (i32 noundef inreg %value , ptr addrspace (8 ) nocapture writeonly inreg %res , i32 noundef inreg %v_offset , i32 noundef inreg %0 , i32 noundef %flag ) {
219
- ; GFX9-LABEL: divergent_br_unprofitable :
218
+ define void @divergent_br_same_weight (i32 noundef inreg %value , ptr addrspace (8 ) nocapture writeonly inreg %res , i32 noundef inreg %v_offset , i32 noundef inreg %0 , i32 noundef %flag ) {
219
+ ; GFX9-LABEL: divergent_br_same_weight :
220
220
; GFX9: ; %bb.0: ; %entry
221
221
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
222
222
; GFX9-NEXT: s_mov_b32 s14, s7
@@ -235,7 +235,7 @@ define void @divergent_br_unprofitable(i32 noundef inreg %value, ptr addrspace(8
235
235
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
236
236
; GFX9-NEXT: s_setpc_b64 s[30:31]
237
237
;
238
- ; GFX1010-LABEL: divergent_br_unprofitable :
238
+ ; GFX1010-LABEL: divergent_br_same_weight :
239
239
; GFX1010: ; %bb.0: ; %entry
240
240
; GFX1010-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
241
241
; GFX1010-NEXT: v_cmp_lt_i32_e32 vcc_lo, 0, v0
@@ -255,7 +255,7 @@ define void @divergent_br_unprofitable(i32 noundef inreg %value, ptr addrspace(8
255
255
; GFX1010-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
256
256
; GFX1010-NEXT: s_setpc_b64 s[30:31]
257
257
;
258
- ; GFX1030-LABEL: divergent_br_unprofitable :
258
+ ; GFX1030-LABEL: divergent_br_same_weight :
259
259
; GFX1030: ; %bb.0: ; %entry
260
260
; GFX1030-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
261
261
; GFX1030-NEXT: s_mov_b32 s12, s5
@@ -286,61 +286,58 @@ if.end:
286
286
ret void
287
287
}
288
288
289
- define void @divergent_br_profitable (i32 noundef inreg %value , ptr addrspace (8 ) nocapture writeonly inreg %res , i32 noundef inreg %v_offset , i32 noundef inreg %0 , i32 noundef %flag ) {
290
- ; GFX9-LABEL: divergent_br_profitable :
289
+ define void @divergent_br_then_likely (i32 noundef inreg %value , ptr addrspace (8 ) nocapture writeonly inreg %res , i32 noundef inreg %v_offset , i32 noundef inreg %0 , i32 noundef %flag ) {
290
+ ; GFX9-LABEL: divergent_br_then_likely :
291
291
; GFX9: ; %bb.0: ; %entry
292
292
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
293
293
; GFX9-NEXT: s_mov_b32 s14, s7
294
294
; GFX9-NEXT: s_mov_b32 s13, s6
295
295
; GFX9-NEXT: v_cmp_lt_i32_e32 vcc, 0, v0
296
296
; GFX9-NEXT: s_and_saveexec_b64 s[6:7], vcc
297
- ; GFX9-NEXT: s_cbranch_execz .LBB5_2
298
297
; GFX9-NEXT: ; %bb.1: ; %if.then
299
298
; GFX9-NEXT: s_mov_b32 s15, s8
300
299
; GFX9-NEXT: s_mov_b32 s12, s5
301
300
; GFX9-NEXT: v_mov_b32_e32 v0, s4
302
301
; GFX9-NEXT: v_mov_b32_e32 v1, s9
303
302
; GFX9-NEXT: buffer_store_dword v0, v1, s[12:15], 0 offen
304
- ; GFX9-NEXT: .LBB5_2 : ; %if.end
303
+ ; GFX9-NEXT: ; %bb.2 : ; %if.end
305
304
; GFX9-NEXT: s_or_b64 exec, exec, s[6:7]
306
305
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
307
306
; GFX9-NEXT: s_setpc_b64 s[30:31]
308
307
;
309
- ; GFX1010-LABEL: divergent_br_profitable :
308
+ ; GFX1010-LABEL: divergent_br_then_likely :
310
309
; GFX1010: ; %bb.0: ; %entry
311
310
; GFX1010-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
312
311
; GFX1010-NEXT: v_cmp_lt_i32_e32 vcc_lo, 0, v0
313
312
; GFX1010-NEXT: s_mov_b32 s12, s5
314
313
; GFX1010-NEXT: s_and_saveexec_b32 s5, vcc_lo
315
- ; GFX1010-NEXT: s_cbranch_execz .LBB5_2
316
314
; GFX1010-NEXT: ; %bb.1: ; %if.then
317
315
; GFX1010-NEXT: v_mov_b32_e32 v0, s4
318
316
; GFX1010-NEXT: v_mov_b32_e32 v1, s9
319
317
; GFX1010-NEXT: s_mov_b32 s15, s8
320
318
; GFX1010-NEXT: s_mov_b32 s14, s7
321
319
; GFX1010-NEXT: s_mov_b32 s13, s6
322
320
; GFX1010-NEXT: buffer_store_dword v0, v1, s[12:15], 0 offen
323
- ; GFX1010-NEXT: .LBB5_2 : ; %if.end
321
+ ; GFX1010-NEXT: ; %bb.2 : ; %if.end
324
322
; GFX1010-NEXT: s_waitcnt_depctr 0xffe3
325
323
; GFX1010-NEXT: s_or_b32 exec_lo, exec_lo, s5
326
324
; GFX1010-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
327
325
; GFX1010-NEXT: s_setpc_b64 s[30:31]
328
326
;
329
- ; GFX1030-LABEL: divergent_br_profitable :
327
+ ; GFX1030-LABEL: divergent_br_then_likely :
330
328
; GFX1030: ; %bb.0: ; %entry
331
329
; GFX1030-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
332
330
; GFX1030-NEXT: s_mov_b32 s12, s5
333
331
; GFX1030-NEXT: s_mov_b32 s5, exec_lo
334
332
; GFX1030-NEXT: v_cmpx_lt_i32_e32 0, v0
335
- ; GFX1030-NEXT: s_cbranch_execz .LBB5_2
336
333
; GFX1030-NEXT: ; %bb.1: ; %if.then
337
334
; GFX1030-NEXT: v_mov_b32_e32 v0, s4
338
335
; GFX1030-NEXT: v_mov_b32_e32 v1, s9
339
336
; GFX1030-NEXT: s_mov_b32 s15, s8
340
337
; GFX1030-NEXT: s_mov_b32 s14, s7
341
338
; GFX1030-NEXT: s_mov_b32 s13, s6
342
339
; GFX1030-NEXT: buffer_store_dword v0, v1, s[12:15], 0 offen
343
- ; GFX1030-NEXT: .LBB5_2 : ; %if.end
340
+ ; GFX1030-NEXT: ; %bb.2 : ; %if.end
344
341
; GFX1030-NEXT: s_or_b32 exec_lo, exec_lo, s5
345
342
; GFX1030-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
346
343
; GFX1030-NEXT: s_setpc_b64 s[30:31]
@@ -359,7 +356,6 @@ if.end:
359
356
360
357
declare void @llvm.amdgcn.raw.ptr.buffer.store.i32 (i32 , ptr addrspace (8 ) nocapture writeonly , i32 , i32 , i32 immarg)
361
358
declare void @llvm.amdgcn.s.waitcnt (i32 )
362
- declare i32 @llvm.amdgcn.workitem.id.x ()
363
359
364
360
!0 = !{!"branch_weights" , i32 1000 , i32 1000 }
365
361
!1 = !{!"branch_weights" , i32 2000 , i32 1 }
0 commit comments