; RUN: llc < %s -march=arm -mattr=+v4t | FileCheck %s

define i32 @t1(i32 %a, i32 %b, i32 %c, i32 %d) {
; CHECK: t1:
; CHECK: bxlt lr
	%tmp2 = icmp sgt i32 %c, 10
	%tmp5 = icmp slt i32 %d, 4
	%tmp8 = or i1 %tmp5, %tmp2
	%tmp13 = add i32 %b, %a
	br i1 %tmp8, label %cond_true, label %UnifiedReturnBlock

cond_true:
	%tmp15 = add i32 %tmp13, %c
	%tmp1821 = sub i32 %tmp15, %d
	ret i32 %tmp1821

UnifiedReturnBlock:
	ret i32 %tmp13
}

define i32 @t2(i32 %a, i32 %b, i32 %c, i32 %d) {
; CHECK: t2:
; CHECK: bxgt lr
; CHECK: cmp
; CHECK: addge
; CHECK: subge
; CHECK-NOT: bxge lr
; CHECK: bx lr
	%tmp2 = icmp sgt i32 %c, 10
	%tmp5 = icmp slt i32 %d, 4
	%tmp8 = and i1 %tmp5, %tmp2
	%tmp13 = add i32 %b, %a
	br i1 %tmp8, label %cond_true, label %UnifiedReturnBlock

cond_true:
	%tmp15 = add i32 %tmp13, %c
	%tmp1821 = sub i32 %tmp15, %d
	ret i32 %tmp1821

UnifiedReturnBlock:
	ret i32 %tmp13
}
