| ; RUN: llc < %s -march=r600 -mcpu=cayman | FileCheck %s |
| |
| ; CHECK-LABEL: {{^}}main: |
| ; CHECK: LOOP_START_DX10 |
| ; CHECK: ALU_PUSH_BEFORE |
| ; CHECK: LOOP_START_DX10 |
| ; CHECK: PUSH |
| ; CHECK-NOT: ALU_PUSH_BEFORE |
| ; CHECK: END_LOOP |
| ; CHECK: END_LOOP |
| define amdgpu_ps void @main (<4 x float> inreg %reg0) { |
| entry: |
| br label %outer_loop |
| |
| outer_loop: |
| %cnt = phi i32 [0, %entry], [%cnt_incr, %inner_loop] |
| %cond = icmp eq i32 %cnt, 16 |
| br i1 %cond, label %outer_loop_body, label %exit |
| |
| outer_loop_body: |
| %cnt_incr = add i32 %cnt, 1 |
| br label %inner_loop |
| |
| inner_loop: |
| %cnt2 = phi i32 [0, %outer_loop_body], [%cnt2_incr, %inner_loop_body] |
| %n = load volatile i32, i32 addrspace(1)* undef |
| %cond2 = icmp slt i32 %cnt2, %n |
| br i1 %cond2, label %inner_loop_body, label %outer_loop |
| |
| inner_loop_body: |
| %cnt2_incr = add i32 %cnt2, 1 |
| br label %inner_loop |
| |
| exit: |
| ret void |
| } |