; RUN: llc < %s -march=r600 -mcpu=redwood -r600-ir-structurize=0 | FileCheck %s
; Test case for a crash in the AMDILCFGStructurizer from a CFG like this:
;
;                            entry
;                           /     \
;               diamond_head       branch_from
;                 /      \           |
;    diamond_false        diamond_true
;                 \      /
;                   done
;
; When the diamond_true branch had more than 100 instructions.
;
;

; CHECK-LABEL: {{^}}branch_into_diamond:
; === entry block:
; CHECK: ALU_PUSH_BEFORE
; === Branch instruction (IF):
; CHECK: JUMP
  ; === branch_from block
  ; CHECK: ALU
  ; === Duplicated diamond_true block (There can be more than one ALU clause):
  ; === XXX: We should be able to optimize this so the basic block is not
  ; === duplicated.  See comments in
  ; === AMDGPUCFGStructurizer::improveSimpleJumpintoIf()
  ; CHECK: ALU
; === Branch instruction (ELSE):
; CHECK: ELSE
  ; === diamond_head block:
  ; CHECK: ALU_PUSH_BEFORE
  ; === Branch instruction (IF):
  ; CHECK: JUMP
    ; === diamond_true block (There can be more than one ALU clause):
    ; ALU
  ; === Branch instruction (ELSE):
  ; CHECK: ELSE
    ; === diamond_false block plus implicit ENDIF
    ; CHECK: ALU_POP_AFTER
; === Branch instruction (ENDIF):
; CHECK: POP
; === done block:
; CHECK: ALU
; CHECK: MEM_RAT_CACHELESS
; CHECK: CF_END


define amdgpu_kernel void @branch_into_diamond(i32 addrspace(1)* %out, i32 %a, i32 %b, i32 %c) {
entry:
%0 = icmp ne i32 %a, 0
  br i1 %0, label %diamond_head, label %branch_from

diamond_head:
  %1 = icmp ne i32 %a, 1
  br i1 %1, label %diamond_true, label %diamond_false

branch_from:
  %2 = add i32 %a, 1
  br label %diamond_true

diamond_false:
  %3 = add i32 %a, 2
  br label %done

diamond_true:
  %4 = phi i32 [%2, %branch_from], [%a, %diamond_head]
  ; This block needs to be > 100 ISA instructions to hit the bug,
  ; so we'll use udiv instructions.
  %div0 = udiv i32 %a, %b
  %div1 = udiv i32 %div0, %4
  %div2 = udiv i32 %div1, 11
  %div3 = udiv i32 %div2, %a
  %div4 = udiv i32 %div3, %b
  %div5 = udiv i32 %div4, %c
  %div6 = udiv i32 %div5, %div0
  %div7 = udiv i32 %div6, %div1
  br label %done

done:
  %5 = phi i32 [%3, %diamond_false], [%div7, %diamond_true]
  store i32 %5, i32 addrspace(1)* %out
  ret void
}
