| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | 
 | ; RUN: llc < %s -mtriple=aarch64 -o - | FileCheck %s | 
 |  | 
 | define void @foo(i32 %i) nounwind { | 
 | ; CHECK-LABEL: foo: | 
 | ; CHECK:       // %bb.0: // %entry | 
 | ; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill | 
 | ; CHECK-NEXT:    cmp w0, #7 | 
 | ; CHECK-NEXT:    b.eq .LBB0_3 | 
 | ; CHECK-NEXT:  // %bb.1: // %entry | 
 | ; CHECK-NEXT:    cmp w0, #5 | 
 | ; CHECK-NEXT:    b.ne .LBB0_4 | 
 | ; CHECK-NEXT:  // %bb.2: // %if.then | 
 | ; CHECK-NEXT:    bl bar | 
 | ; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload | 
 | ; CHECK-NEXT:    b bar | 
 | ; CHECK-NEXT:  .LBB0_3: // %if.then2 | 
 | ; CHECK-NEXT:    bl bar | 
 | ; CHECK-NEXT:  .LBB0_4: // %if.end3 | 
 | ; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload | 
 | ; CHECK-NEXT:    b bar | 
 | entry: | 
 |   switch i32 %i, label %if.end3 [ | 
 |     i32 5, label %if.then | 
 |     i32 7, label %if.then2 | 
 |   ] | 
 |  | 
 | if.then: | 
 |   tail call void @bar() #0 | 
 |   br label %if.end3 | 
 |  | 
 | if.then2: | 
 |   tail call void @bar() #0 | 
 |   br label %if.end3 | 
 |  | 
 | if.end3: | 
 |   tail call void @bar() #0 | 
 |   ret void | 
 | } | 
 |  | 
 | define void @foo_tail(i1 %i) nounwind { | 
 | ; CHECK-LABEL: foo_tail: | 
 | ; CHECK:       // %bb.0: // %entry | 
 | ; CHECK-NEXT:    tbz w0, #0, .LBB1_2 | 
 | ; CHECK-NEXT:  // %bb.1: // %if.then | 
 | ; CHECK-NEXT:    b bar | 
 | ; CHECK-NEXT:  .LBB1_2: // %if.else | 
 | ; CHECK-NEXT:    b bar | 
 | entry: | 
 |   br i1 %i, label %if.then, label %if.else | 
 |  | 
 | if.then: | 
 |   tail call void @bar() #0 | 
 |   br label %if.end | 
 |  | 
 | if.else: | 
 |   tail call void @bar() #0 | 
 |   br label %if.end | 
 |  | 
 | if.end: | 
 |   ret void | 
 | } | 
 |  | 
 | declare void @bar() | 
 |  | 
 | attributes #0 = { nomerge } |