blob: 0f7605402cf00c44ceed378cf1e6550796e4f18d [file] [log] [blame]
Jim Grosbach92bf81d2011-07-12 16:06:01 +00001; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s
Jim Grosbach25e6d482011-07-08 21:50:04 +00002; If-conversion defeats the purpose of this test, which is to check CBZ
Jim Grosbach92bf81d2011-07-12 16:06:01 +00003; generation, so use memory barrier instruction to make sure it doesn't
4; happen and we get actual branches.
Evan Chenged338e82009-07-11 07:26:20 +00005
6define i32 @t1(i32 %a, i32 %b, i32 %c) {
Evan Cheng1107f032009-11-01 18:13:29 +00007; CHECK: t1:
8; CHECK: cbz
Evan Chenged338e82009-07-11 07:26:20 +00009 %tmp2 = icmp eq i32 %a, 0
10 br i1 %tmp2, label %cond_false, label %cond_true
11
12cond_true:
Jim Grosbach92bf81d2011-07-12 16:06:01 +000013 call void @llvm.memory.barrier(i1 true, i1 true, i1 true, i1 true, i1 false)
Evan Chenged338e82009-07-11 07:26:20 +000014 %tmp5 = add i32 %b, 1
15 %tmp6 = and i32 %tmp5, %c
16 ret i32 %tmp6
17
18cond_false:
Jim Grosbach92bf81d2011-07-12 16:06:01 +000019 call void @llvm.memory.barrier(i1 true, i1 true, i1 true, i1 true, i1 false)
Evan Chenged338e82009-07-11 07:26:20 +000020 %tmp7 = add i32 %b, -1
21 %tmp8 = xor i32 %tmp7, %c
22 ret i32 %tmp8
23}
Jim Grosbach92bf81d2011-07-12 16:06:01 +000024
25declare void @llvm.memory.barrier(i1, i1, i1, i1, i1) nounwind