[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AMDGPU / fold-over-exec.mir
blob9cc6c257b029d18cb0efed683401e0eb639082df
1 # RUN: llc -mtriple=amdgcn -verify-machineinstrs -run-pass si-fold-operands %s -o - | FileCheck %s
3 # CHECK-LABEL: bb.2:
4 # CHECK: %I_out
5 # CHECK-NOT: %I
6 ---
7 name:            main
8 tracksRegLiveness: true
9 body:             |
10   bb.0:
11     successors: %bb.1(0x80000000)
12     liveins: $sgpr0, $vgpr0, $vgpr1
13     %0:sreg_32 = S_MOV_B32 0
14     %1:sreg_64 = S_MOV_B64 0
15     %tid_x:vgpr_32 = COPY $vgpr0
16     %tid_y:vgpr_32 = COPY $vgpr1
17     %arg:sgpr_32 = COPY $sgpr0
19   bb.1: ; loop
20     successors: %bb.2(0x40000000), %bb.1(0x40000000)
21     %I:sreg_32 = PHI %0, %bb.0, %I_inc, %bb.1
22     %break_inc:sreg_64 = PHI %1, %bb.0, %break, %bb.1
23     %cond:sreg_64 = V_CMP_LE_U32_e64 %arg, %tid_x, implicit $exec
24     %break:sreg_64 = SI_IF_BREAK %cond, %break_inc, implicit-def $scc
25     %I_out:vgpr_32 = COPY %I, implicit $exec
26     %I_inc:sreg_32 = S_ADD_I32 %I, 1, implicit-def $scc
27     SI_LOOP %break, %bb.1, implicit-def dead $exec, implicit $exec, implicit-def $scc
28     S_BRANCH %bb.2
30   bb.2: ; end loop
31     successors: %bb.3(0x40000000)
32     %2:sreg_64_xexec = V_CMP_EQ_U32_e64 %I_out, %tid_y, implicit $exec
33     %3:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed %2, implicit $exec
34     S_BRANCH %bb.3
36   bb.3: ; exit
37     S_ENDPGM 0
38 ...