; RUN: llc < %s -mtriple=thumbv7m -mattr=-no-branch-predictor | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-BP
; RUN: llc < %s -mtriple=thumbv7m -mcpu=cortex-m3 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NOBP

declare void @otherfn()

; CHECK-LABEL: triangle1:
; CHECK: itt ne
; CHECK: movne
; CHECK: strne
define i32 @triangle1(i32 %n, ptr %p) {
entry:
  %tobool = icmp eq i32 %n, 0
  br i1 %tobool, label %if.end, label %if.then

if.then:
  store i32 1, ptr %p, align 4
  br label %if.end

if.end:
  tail call void @otherfn()
  ret i32 0
}

; CHECK-LABEL: triangle2:
; CHECK-BP: itttt ne
; CHECK-BP: movne
; CHECK-BP: strne
; CHECK-BP: movne
; CHECK-BP: strne
; CHECK-NOBP: cbz
; CHECK-NOBP: movs
; CHECK-NOBP: str
; CHECK-NOBP: movs
; CHECK-NOBP: str
define i32 @triangle2(i32 %n, ptr %p, ptr %q) {
entry:
  %tobool = icmp eq i32 %n, 0
  br i1 %tobool, label %if.end, label %if.then

if.then:
  store i32 1, ptr %p, align 4
  store i32 2, ptr %q, align 4
  br label %if.end

if.end:
  tail call void @otherfn()
  ret i32 0
}

; CHECK-LABEL: triangle3:
; CHECK: cbz
; CHECK: movs
; CHECK: str
; CHECK: movs
; CHECK: str
; CHECK: movs
; CHECK: str
define i32 @triangle3(i32 %n, ptr %p, ptr %q, ptr %r) {
entry:
  %tobool = icmp eq i32 %n, 0
  br i1 %tobool, label %if.end, label %if.then

if.then:
  store i32 1, ptr %p, align 4
  store i32 2, ptr %q, align 4
  store i32 3, ptr %r, align 4
  store i32 4, ptr %p, align 4
  br label %if.end

if.end:
  tail call void @otherfn()
  ret i32 0
}

; CHECK-LABEL: diamond1:
; CHECK: itee eq
; CHECK: ldreq
; CHECK: strne
define i32 @diamond1(i32 %n, ptr %p) {
entry:
  %tobool = icmp eq i32 %n, 0
  br i1 %tobool, label %if.else, label %if.then

if.then:
  store i32 %n, ptr %p, align 4
  br label %if.end

if.else:
  %0 = load i32, ptr %p, align 4
  br label %if.end

if.end:
  %n.addr.0 = phi i32 [ %n, %if.then ], [ %0, %if.else ]
  tail call void @otherfn()
  ret i32 %n.addr.0
}

; CHECK-LABEL: diamond2:
; CHECK-BP: cbz
; CHECK-BP: str
; CHECK-BP: str
; CHECK-BP: b
; CHECK-BP: str
; CHECK-BP: add
; CHECK-NOBP: ittee
; CHECK-NOBP: streq
; CHECK-NOBP: addeq
; CHECK-NOBP: strne
; CHECK-NOBP: strne
define i32 @diamond2(i32 %n, ptr %p, ptr %q) {
entry:
  %tobool = icmp eq i32 %n, 0
  br i1 %tobool, label %if.else, label %if.then

if.then:
  store i32 %n, ptr %p, align 4
  %arrayidx = getelementptr inbounds i32, ptr %p, i32 2
  store i32 %n, ptr %arrayidx, align 4
  br label %if.end

if.else:
  store i32 %n, ptr %q, align 4
  %0 = add i32 %n, 10
  br label %if.end

if.end:
  %n.addr.0 = phi i32 [ %n, %if.then ], [ %0, %if.else ]
  tail call void @otherfn()
  ret i32 %n.addr.0
}

; CHECK-LABEL: diamond3:
; CHECK: cbz
; CHECK: movs
; CHECK: str
; CHECK: b
; CHECK: ldr
; CHECK: ldr
; CHECK: adds
define i32 @diamond3(i32 %n, ptr %p, ptr %q) {
entry:
  %tobool = icmp eq i32 %n, 0
  br i1 %tobool, label %if.else, label %if.then

if.then:
  store i32 1, ptr %p, align 4
  br label %if.end

if.else:
  %0 = load i32, ptr %p, align 4
  %1 = load i32, ptr %q, align 4
  %add = add nsw i32 %1, %0
  br label %if.end

if.end:
  %n.addr.0 = phi i32 [ %n, %if.then ], [ %add, %if.else ]
  tail call void @otherfn()
  ret i32 %n.addr.0
}
