|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
1 | 2 | ; RUN: llc -O3 -mtriple arm64-linux -filetype asm -o - %s | FileCheck %s -check-prefix CHECK-ASM
|
2 | 3 | ; This test checks that nomerge correctly prevents the traps from being merged
|
3 | 4 | ; in the compiled code.
|
|
9 | 10 |
|
10 | 11 | ; Function Attrs: noinline nounwind uwtable
|
11 | 12 | define dso_local void @f8(i32 noundef %i, i32 noundef %k) #0 {
|
| 13 | +; CHECK-ASM-LABEL: f8: |
| 14 | +; CHECK-ASM: // %bb.0: // %entry |
| 15 | +; CHECK-ASM-NEXT: sub sp, sp, #16 |
| 16 | +; CHECK-ASM-NEXT: .cfi_def_cfa_offset 16 |
| 17 | +; CHECK-ASM-NEXT: .cfi_remember_state |
| 18 | +; CHECK-ASM-NEXT: // kill: def $w0 killed $w0 def $x0 |
| 19 | +; CHECK-ASM-NEXT: sxtw x8, w0 |
| 20 | +; CHECK-ASM-NEXT: stp w1, w0, [sp, #8] |
| 21 | +; CHECK-ASM-NEXT: cmp x8, #10 |
| 22 | +; CHECK-ASM-NEXT: b.hi .LBB0_5 |
| 23 | +; CHECK-ASM-NEXT: // %bb.1: // %entry |
| 24 | +; CHECK-ASM-NEXT: mov w9, #10 // =0xa |
| 25 | +; CHECK-ASM-NEXT: sub x9, x9, x8 |
| 26 | +; CHECK-ASM-NEXT: cbz x9, .LBB0_5 |
| 27 | +; CHECK-ASM-NEXT: // %bb.2: |
| 28 | +; CHECK-ASM-NEXT: ldrsw x9, [sp, #8] |
| 29 | +; CHECK-ASM-NEXT: adrp x10, B |
| 30 | +; CHECK-ASM-NEXT: add x10, x10, :lo12:B |
| 31 | +; CHECK-ASM-NEXT: strb wzr, [x10, x8] |
| 32 | +; CHECK-ASM-NEXT: cmp x9, #10 |
| 33 | +; CHECK-ASM-NEXT: b.hi .LBB0_6 |
| 34 | +; CHECK-ASM-NEXT: // %bb.3: |
| 35 | +; CHECK-ASM-NEXT: mov w8, #10 // =0xa |
| 36 | +; CHECK-ASM-NEXT: sub x8, x8, x9 |
| 37 | +; CHECK-ASM-NEXT: cbz x8, .LBB0_6 |
| 38 | +; CHECK-ASM-NEXT: // %bb.4: |
| 39 | +; CHECK-ASM-NEXT: adrp x8, B2 |
| 40 | +; CHECK-ASM-NEXT: add x8, x8, :lo12:B2 |
| 41 | +; CHECK-ASM-NEXT: strb wzr, [x8, x9] |
| 42 | +; CHECK-ASM-NEXT: add sp, sp, #16 |
| 43 | +; CHECK-ASM-NEXT: .cfi_def_cfa_offset 0 |
| 44 | +; CHECK-ASM-NEXT: ret |
| 45 | +; CHECK-ASM-NEXT: .LBB0_5: // %trap |
| 46 | +; CHECK-ASM-NEXT: .cfi_restore_state |
| 47 | +; CHECK-ASM-NEXT: brk #0x1 |
| 48 | +; CHECK-ASM-NEXT: .LBB0_6: // %trap3 |
| 49 | +; CHECK-ASM-NEXT: brk #0x1 |
12 | 50 | entry:
|
13 |
| -; CHECK-ASM: cmp x8, #10 |
14 |
| -; CHECK-ASM: b.hi .LBB0_5 |
15 |
| -; CHECK-ASM: // %bb.1: // %entry |
16 |
| -; CHECK-ASM: mov w9, #10 // =0xa |
17 |
| -; CHECK-ASM: sub x9, x9, x8 |
18 |
| -; CHECK-ASM: cbz x9, .LBB0_5 |
19 |
| -; CHECK-ASM: // %bb.2: |
20 |
| -; CHECK-ASM: ldrsw x9, [sp, #8] |
21 |
| -; CHECK-ASM: adrp x10, B |
22 |
| -; CHECK-ASM: add x10, x10, :lo12:B |
23 |
| -; CHECK-ASM: strb wzr, [x10, x8] |
24 |
| -; CHECK-ASM: cmp x9, #10 |
25 |
| -; CHECK-ASM: b.hi .LBB0_6 |
26 |
| -; CHECK-ASM: // %bb.3: |
27 |
| -; CHECK-ASM: mov w8, #10 // =0xa |
28 |
| -; CHECK-ASM: sub x8, x8, x9 |
29 |
| -; CHECK-ASM: cbz x8, .LBB0_6 |
30 |
| -; CHECK-ASM: // %bb.4: |
31 |
| -; CHECK-ASM: adrp x8, B2 |
32 |
| -; CHECK-ASM: add x8, x8, :lo12:B2 |
33 |
| -; CHECK-ASM: strb wzr, [x8, x9] |
34 |
| -; CHECK-ASM: add sp, sp, #16 |
35 |
| -; CHECK-ASM: .cfi_def_cfa_offset 0 |
36 |
| -; CHECK-ASM: ret |
37 |
| -; CHECK-ASM: .LBB0_5: // %trap |
38 |
| -; CHECK-ASM: .cfi_restore_state |
39 |
| -; CHECK-ASM: brk #0x1 |
40 |
| -; CHECK-ASM: .LBB0_6: // %trap3 |
41 |
| -; CHECK-ASM: brk #0x1 |
42 | 51 | %i.addr = alloca i32, align 4
|
43 | 52 | %k.addr = alloca i32, align 4
|
44 | 53 | store i32 %i, ptr %i.addr, align 4
|
|
0 commit comments