[ARM] Cortex-M4 schedule additions
[llvm-complete.git] / test / CodeGen / ARM / ifcvt2.ll
blobe445416f6e5d1b017dc6c5b7522009fd5f9e49e9
1 ; RUN: llc -mtriple=arm-eabi -mattr=+v4t %s -o - | FileCheck %s
3 define i32 @t1(i32 %a, i32 %b, i32 %c, i32 %d) {
4 ; CHECK-LABEL: t1:
5 ; CHECK: bxlt lr
6         %tmp2 = icmp sgt i32 %c, 10
7         %tmp5 = icmp slt i32 %d, 4
8         %tmp8 = or i1 %tmp5, %tmp2
9         %tmp13 = add i32 %b, %a
10         br i1 %tmp8, label %cond_true, label %UnifiedReturnBlock
12 cond_true:
13         %tmp15 = add i32 %tmp13, %c
14         %tmp1821 = sub i32 %tmp15, %d
15         ret i32 %tmp1821
17 UnifiedReturnBlock:
18         ret i32 %tmp13
21 define i32 @t2(i32 %a, i32 %b, i32 %c, i32 %d) {
22 ; CHECK-LABEL: t2:
23 ; CHECK: bxgt lr
24 ; CHECK: cmp
25 ; CHECK: addge
26 ; CHECK: subge
27 ; CHECK-NOT: bxge lr
28 ; CHECK: bx lr
29         %tmp2 = icmp sgt i32 %c, 10
30         %tmp5 = icmp slt i32 %d, 4
31         %tmp8 = and i1 %tmp5, %tmp2
32         %tmp13 = add i32 %b, %a
33         br i1 %tmp8, label %cond_true, label %UnifiedReturnBlock
35 cond_true:
36         %tmp15 = add i32 %tmp13, %c
37         %tmp1821 = sub i32 %tmp15, %d
38         ret i32 %tmp1821
40 UnifiedReturnBlock:
41         ret i32 %tmp13