| ; 1. Trivial smoke test of compare and branch, with multiple basic | |
| ; blocks. | |
| ; 2. For a conditional branch on a constant boolean value, make sure | |
| ; we don't lower to a cmp instructions with an immediate as the first | |
| ; source operand. | |
| ; REQUIRES: allow_dump | |
| ; RUN: %p2i -i %s --args -O2 --verbose inst -threads=0 | FileCheck %s | |
| ; RUN: %p2i -i %s --args -Om1 --verbose inst -threads=0 | FileCheck %s | |
| define internal i32 @simple_cond_branch(i32 %foo, i32 %bar) { | |
| entry: | |
| %r1 = icmp eq i32 %foo, %bar | |
| br i1 %r1, label %Equal, label %Unequal | |
| Equal: | |
| ret i32 %foo | |
| Unequal: | |
| ret i32 %bar | |
| ; CHECK-LABEL: simple_cond_branch | |
| ; CHECK: br i1 %r1, label %Equal, label %Unequal | |
| ; CHECK: Equal: | |
| ; CHECK: ret i32 %foo | |
| ; CHECK: Unequal: | |
| ; CHECK: ret i32 %bar | |
| } | |
| define internal i32 @test_br_const() { | |
| __0: | |
| br i1 true, label %__1, label %__2 | |
| __1: | |
| ret i32 21 | |
| __2: | |
| ret i32 43 | |
| } | |
| ; CHECK-LABEL: test_br_const | |
| ; CHECK-NOT: cmp {{[0-9]*}}, |