blob: 5f821d8202eb40621d8fa71977a0f84940df0424 [file] [log] [blame]
Jim Stichnoth206833c2014-08-07 10:58:05 -07001; 1. Trivial smoke test of compare and branch, with multiple basic
Jim Stichnoth5bc2b1d2014-05-22 13:38:48 -07002; blocks.
Jim Stichnoth206833c2014-08-07 10:58:05 -07003; 2. For a conditional branch on a constant boolean value, make sure
4; we don't lower to a cmp instructions with an immediate as the first
5; source operand.
Jim Stichnoth5bc2b1d2014-05-22 13:38:48 -07006
Karl Schimpfb6c96af2014-11-17 10:58:39 -08007; REQUIRES: allow_dump
8
Jim Stichnothbbca7542015-02-11 16:08:31 -08009; RUN: %p2i -i %s --args -O2 --verbose inst -threads=0 | FileCheck %s
10; RUN: %p2i -i %s --args -Om1 --verbose inst -threads=0 | FileCheck %s
Jim Stichnothf7c9a142014-04-29 10:52:43 -070011
12define i32 @simple_cond_branch(i32 %foo, i32 %bar) {
13entry:
14 %r1 = icmp eq i32 %foo, %bar
15 br i1 %r1, label %Equal, label %Unequal
16Equal:
17 ret i32 %foo
18Unequal:
19 ret i32 %bar
Jim Stichnoth206833c2014-08-07 10:58:05 -070020; CHECK-LABEL: simple_cond_branch
Jim Stichnothf7c9a142014-04-29 10:52:43 -070021; CHECK: br i1 %r1, label %Equal, label %Unequal
22; CHECK: Equal:
23; CHECK: ret i32 %foo
24; CHECK: Unequal:
25; CHECK: ret i32 %bar
26}
27
Jim Stichnoth206833c2014-08-07 10:58:05 -070028define internal i32 @test_br_const() {
29__0:
Jim Stichnothcabfa302014-09-03 15:19:12 -070030 br i1 true, label %__1, label %__2
Jim Stichnoth206833c2014-08-07 10:58:05 -070031__1:
32 ret i32 21
33__2:
34 ret i32 43
35}
36; CHECK-LABEL: test_br_const
37; CHECK-NOT: cmp {{[0-9]*}},