blob: 70febc060e8d39e5ff05a8573b4244e0b547b2b5 [file] [log] [blame]
Jim Grosbach92bf81d2011-07-12 16:06:01 +00001; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s
2; RUN: llc < %s -march=thumb -mattr=+thumb2 | not grep it
Jim Grosbach25e6d482011-07-08 21:50:04 +00003; If-conversion defeats the purpose of this test, which is to check CBZ
Jim Grosbach92bf81d2011-07-12 16:06:01 +00004; generation, so use memory barrier instruction to make sure it doesn't
5; happen and we get actual branches.
Evan Chenged338e82009-07-11 07:26:20 +00006
7define i32 @t1(i32 %a, i32 %b, i32 %c) {
Evan Cheng1107f032009-11-01 18:13:29 +00008; CHECK: t1:
9; CHECK: cbz
Evan Chenged338e82009-07-11 07:26:20 +000010 %tmp2 = icmp eq i32 %a, 0
11 br i1 %tmp2, label %cond_false, label %cond_true
12
13cond_true:
Jim Grosbach92bf81d2011-07-12 16:06:01 +000014 call void @llvm.memory.barrier(i1 true, i1 true, i1 true, i1 true, i1 false)
Evan Chenged338e82009-07-11 07:26:20 +000015 %tmp5 = add i32 %b, 1
16 %tmp6 = and i32 %tmp5, %c
17 ret i32 %tmp6
18
19cond_false:
Jim Grosbach92bf81d2011-07-12 16:06:01 +000020 call void @llvm.memory.barrier(i1 true, i1 true, i1 true, i1 true, i1 false)
Evan Chenged338e82009-07-11 07:26:20 +000021 %tmp7 = add i32 %b, -1
22 %tmp8 = xor i32 %tmp7, %c
23 ret i32 %tmp8
24}
Jim Grosbach92bf81d2011-07-12 16:06:01 +000025
26declare void @llvm.memory.barrier(i1, i1, i1, i1, i1) nounwind