[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / wineh-bti.ll
blobaa6a685fc365bca9508cf6dcdaf8381d87fcd4ea
1 ; RUN: llc < %s -mtriple=aarch64-windows | FileCheck %s
3 define dso_local i32 @func(i32 %in) {
4 entry:
5   call void asm sideeffect "", "~{x19}"()
6   switch i32 %in, label %def [
7     i32 0, label %lbl1
8     i32 1, label %lbl2
9     i32 2, label %lbl3
10     i32 4, label %lbl4
11   ]
13 def:
14   ret i32 0
16 lbl1:
17   call void asm sideeffect "", ""()
18   ret i32 1
20 lbl2:
21   ret i32 2
23 lbl3:
24   ret i32 4
26 lbl4:
27   ret i32 8
30 !llvm.module.flags = !{!0, !1}
32 !0 = !{i32 8, !"branch-target-enforcement", i32 1}
33 !1 = !{i32 8, !"sign-return-address", i32 1}
35 ; CHECK-LABEL: func:
36 ; CHECK-NEXT: .seh_proc func
37 ; CHECK-NEXT: // %bb.0:
38 ; CHECK-NEXT: hint #34
39 ; CHECK-NEXT: .seh_nop
40 ; CHECK-NEXT: str x19, [sp, #-16]!
41 ; CHECK-NEXT: .seh_save_reg_x x19, 16
42 ; CHECK-NEXT: .seh_endprologue
44 ; CHECK:      .LBB0_2:
45 ; CHECK-NEXT: hint #36
46 ; CHECK: mov w0, #1
48 ; CHECK:      .LBB0_3:
49 ; CHECK-NEXT: hint #36
50 ; CHECK-NEXT: mov w0, #2
52 ; CHECK:      .LBB0_4:
53 ; CHECK-NEXT: hint #36
54 ; CHECK-NEXT: mov w0, #4
56 ; CHECK:      .LBB0_5:
57 ; CHECK-NEXT: hint #36
58 ; CHECK-NEXT: mov w0, #8
60 ; CHECK:      .seh_startepilogue
61 ; CHECK-NEXT: ldr x19, [sp], #16
62 ; CHECK-NEXT: .seh_save_reg_x x19, 16
63 ; CHECK-NEXT: .seh_endepilogue
64 ; CHECK-NEXT: ret
65 ; CHECK-NEXT: .seh_endfunclet