1; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mattr=+thumb2 -arm-atomic-cfg-tidy=0 | FileCheck %s
2; If-conversion defeats the purpose of this test, which is to check
3; conditional branch generation, so a call to make sure it doesn't
4; happen and we get actual branches.
5
6declare void @foo()
7
8define i32 @f1(i32 %a, i32 %b, i32* %v) {
9entry:
10; CHECK-LABEL: f1:
11; CHECK: bne LBB
12        %tmp = icmp eq i32 %a, %b               ; <i1> [#uses=1]
13        br i1 %tmp, label %cond_true, label %return
14
15cond_true:              ; preds = %entry
16        call void @foo()
17        store i32 0, i32* %v
18        ret i32 0
19
20return:         ; preds = %entry
21        call void @foo()
22        ret i32 1
23}
24
25define i32 @f2(i32 %a, i32 %b, i32* %v) {
26entry:
27; CHECK-LABEL: f2:
28; CHECK: bge LBB
29        %tmp = icmp slt i32 %a, %b              ; <i1> [#uses=1]
30        br i1 %tmp, label %cond_true, label %return
31
32cond_true:              ; preds = %entry
33        call void @foo()
34        store i32 0, i32* %v
35        ret i32 0
36
37return:         ; preds = %entry
38        call void @foo()
39        ret i32 1
40}
41
42define i32 @f3(i32 %a, i32 %b, i32* %v) {
43entry:
44; CHECK-LABEL: f3:
45; CHECK: bhs LBB
46        %tmp = icmp ult i32 %a, %b              ; <i1> [#uses=1]
47        br i1 %tmp, label %cond_true, label %return
48
49cond_true:              ; preds = %entry
50        call void @foo()
51        store i32 0, i32* %v
52        ret i32 0
53
54return:         ; preds = %entry
55        call void @foo()
56        ret i32 1
57}
58
59define i32 @f4(i32 %a, i32 %b, i32* %v) {
60entry:
61; CHECK-LABEL: f4:
62; CHECK: blo LBB
63        %tmp = icmp uge i32 %a, %b              ; <i1> [#uses=1]
64        br i1 %tmp, label %cond_true, label %return
65
66cond_true:              ; preds = %entry
67        call void @foo()
68        store i32 0, i32* %v
69        ret i32 0
70
71return:         ; preds = %entry
72        call void @foo()
73        ret i32 1
74}
75