[ARM] Generate 8.1-m CSINC, CSNEG and CSINV instructions.
[llvm-core.git] / test / CodeGen / Thumb2 / thumb2-branch.ll
blob332ed50ede6f2a898ef8c5a8aa46f531e3635470
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.
6 declare void @foo()
8 define i32 @f1(i32 %a, i32 %b, i32* %v) {
9 entry:
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
15 cond_true:              ; preds = %entry
16         call void @foo()
17         store i32 0, i32* %v
18         ret i32 0
20 return:         ; preds = %entry
21         call void @foo()
22         ret i32 1
25 define i32 @f2(i32 %a, i32 %b, i32* %v) {
26 entry:
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
32 cond_true:              ; preds = %entry
33         call void @foo()
34         store i32 0, i32* %v
35         ret i32 0
37 return:         ; preds = %entry
38         call void @foo()
39         ret i32 1
42 define i32 @f3(i32 %a, i32 %b, i32* %v) {
43 entry:
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
49 cond_true:              ; preds = %entry
50         call void @foo()
51         store i32 0, i32* %v
52         ret i32 0
54 return:         ; preds = %entry
55         call void @foo()
56         ret i32 1
59 define i32 @f4(i32 %a, i32 %b, i32* %v) {
60 entry:
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
66 cond_true:              ; preds = %entry
67         call void @foo()
68         store i32 0, i32* %v
69         ret i32 0
71 return:         ; preds = %entry
72         call void @foo()
73         ret i32 1