xref: /llvm-project/llvm/test/CodeGen/ARM/nomerge.ll (revision 3977b77a6bb780b02559530a96597cdb1c0a5bf6)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2; RUN: llc < %s -mtriple=arm -o - | FileCheck %s
3
4define void @foo(i32 %i) nounwind {
5; CHECK-LABEL: foo:
6; CHECK:       @ %bb.0: @ %entry
7; CHECK-NEXT:    push {r11, lr}
8; CHECK-NEXT:    cmp r0, #7
9; CHECK-NEXT:    beq .LBB0_3
10; CHECK-NEXT:  @ %bb.1: @ %entry
11; CHECK-NEXT:    cmp r0, #5
12; CHECK-NEXT:    bne .LBB0_4
13; CHECK-NEXT:  @ %bb.2: @ %if.then
14; CHECK-NEXT:    bl bar
15; CHECK-NEXT:    pop {r11, lr}
16; CHECK-NEXT:    b bar
17; CHECK-NEXT:  .LBB0_3: @ %if.then2
18; CHECK-NEXT:    bl bar
19; CHECK-NEXT:  .LBB0_4: @ %if.end3
20; CHECK-NEXT:    pop {r11, lr}
21; CHECK-NEXT:    b bar
22entry:
23  switch i32 %i, label %if.end3 [
24    i32 5, label %if.then
25    i32 7, label %if.then2
26  ]
27
28if.then:
29  tail call void @bar() #0
30  br label %if.end3
31
32if.then2:
33  tail call void @bar() #0
34  br label %if.end3
35
36if.end3:
37  tail call void @bar() #0
38  ret void
39}
40
41define void @foo_tail(i1 %i) nounwind {
42; CHECK-LABEL: foo_tail:
43; CHECK:       @ %bb.0: @ %entry
44; CHECK-NEXT:    tst r0, #1
45; CHECK-NEXT:    beq .LBB1_2
46; CHECK-NEXT:  @ %bb.1: @ %if.then
47; CHECK-NEXT:    b bar
48; CHECK-NEXT:  .LBB1_2: @ %if.else
49; CHECK-NEXT:    b bar
50entry:
51  br i1 %i, label %if.then, label %if.else
52
53if.then:
54  tail call void @bar() #0
55  br label %if.end
56
57if.else:
58  tail call void @bar() #0
59  br label %if.end
60
61if.end:
62  ret void
63}
64
65declare void @bar()
66
67attributes #0 = { nomerge }
68