; Function Attrs: nounwind
; RUN: llc < %s -mtriple=r600 -mcpu=redwood  | FileCheck %s
;
; CFG flattening should use parallel-or to generate branch conditions and
; then merge if-regions with the same bodies.

; FIXME: For some reason having the allocas here allowed the flatten cfg pass
; to do its transformation, however now that we are using local memory for
; allocas, the transformation isn't happening.
; XFAIL: *
;
; CHECK: OR_INT
; CHECK-NEXT: OR_INT
; CHECK-NEXT: OR_INT
define amdgpu_kernel void @_Z9chk1D_512v() #0 {
entry:
  %a0 = alloca i32, align 4, addrspace(5)
  %b0 = alloca i32, align 4, addrspace(5)
  %c0 = alloca i32, align 4, addrspace(5)
  %d0 = alloca i32, align 4, addrspace(5)
  %a1 = alloca i32, align 4, addrspace(5)
  %b1 = alloca i32, align 4, addrspace(5)
  %c1 = alloca i32, align 4, addrspace(5)
  %d1 = alloca i32, align 4, addrspace(5)
  %data = alloca i32, align 4, addrspace(5)
  %0 = load i32, ptr addrspace(5) %a0, align 4
  %1 = load i32, ptr addrspace(5) %b0, align 4
  %cmp = icmp ne i32 %0, %1
  br i1 %cmp, label %land.lhs.true, label %if.else

land.lhs.true:                                    ; preds = %entry
  %2 = load i32, ptr addrspace(5) %c0, align 4
  %3 = load i32, ptr addrspace(5) %d0, align 4
  %cmp1 = icmp ne i32 %2, %3
  br i1 %cmp1, label %if.then, label %if.else

if.then:                                          ; preds = %land.lhs.true
  br label %if.end

if.else:                                          ; preds = %land.lhs.true, %entry
  store i32 1, ptr addrspace(5) %data, align 4
  br label %if.end

if.end:                                           ; preds = %if.else, %if.then
  %4 = load i32, ptr addrspace(5) %a1, align 4
  %5 = load i32, ptr addrspace(5) %b1, align 4
  %cmp2 = icmp ne i32 %4, %5
  br i1 %cmp2, label %land.lhs.true3, label %if.else6

land.lhs.true3:                                   ; preds = %if.end
  %6 = load i32, ptr addrspace(5) %c1, align 4
  %7 = load i32, ptr addrspace(5) %d1, align 4
  %cmp4 = icmp ne i32 %6, %7
  br i1 %cmp4, label %if.then5, label %if.else6

if.then5:                                         ; preds = %land.lhs.true3
  br label %if.end7

if.else6:                                         ; preds = %land.lhs.true3, %if.end
  store i32 1, ptr addrspace(5) %data, align 4
  br label %if.end7

if.end7:                                          ; preds = %if.else6, %if.then5
  ret void
}

