blob: 34e6669434f1b5b44661d048a9c97f112e2def8c [file] [log] [blame]
Vincent Lejeune4b8d9e32013-12-02 17:29:37 +00001; RUN: llc < %s -march=r600 -mcpu=cayman | FileCheck %s
2
Tom Stellard79243d92014-10-01 17:15:17 +00003; CHECK-LABEL: {{^}}main:
Vincent Lejeune4b8d9e32013-12-02 17:29:37 +00004; CHECK: LOOP_START_DX10
5; CHECK: ALU_PUSH_BEFORE
6; CHECK: LOOP_START_DX10
7; CHECK: PUSH
8; CHECK-NOT: ALU_PUSH_BEFORE
9; CHECK: END_LOOP
10; CHECK: END_LOOP
Nicolai Haehnledf3a20c2016-04-06 19:40:20 +000011define amdgpu_ps void @main (<4 x float> inreg %reg0) {
Vincent Lejeune4b8d9e32013-12-02 17:29:37 +000012entry:
13 br label %outer_loop
Matt Arsenault71fa1f32016-05-18 15:48:44 +000014
Vincent Lejeune4b8d9e32013-12-02 17:29:37 +000015outer_loop:
16 %cnt = phi i32 [0, %entry], [%cnt_incr, %inner_loop]
17 %cond = icmp eq i32 %cnt, 16
18 br i1 %cond, label %outer_loop_body, label %exit
Matt Arsenault71fa1f32016-05-18 15:48:44 +000019
Vincent Lejeune4b8d9e32013-12-02 17:29:37 +000020outer_loop_body:
21 %cnt_incr = add i32 %cnt, 1
22 br label %inner_loop
Matt Arsenault71fa1f32016-05-18 15:48:44 +000023
Vincent Lejeune4b8d9e32013-12-02 17:29:37 +000024inner_loop:
25 %cnt2 = phi i32 [0, %outer_loop_body], [%cnt2_incr, %inner_loop_body]
Matt Arsenault71fa1f32016-05-18 15:48:44 +000026 %n = load volatile i32, i32 addrspace(1)* undef
27 %cond2 = icmp slt i32 %cnt2, %n
28 br i1 %cond2, label %inner_loop_body, label %outer_loop
29
Vincent Lejeune4b8d9e32013-12-02 17:29:37 +000030inner_loop_body:
31 %cnt2_incr = add i32 %cnt2, 1
32 br label %inner_loop
Matt Arsenault71fa1f32016-05-18 15:48:44 +000033
Vincent Lejeune4b8d9e32013-12-02 17:29:37 +000034exit:
35 ret void
36}