| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 |
| # RUN: llc -mtriple=riscv32 -run-pass=prologepilog -verify-machineinstrs %s -o - | FileCheck %s |
| |
| --- |
| name: main |
| alignment: 2 |
| tracksRegLiveness: true |
| frameInfo: |
| maxAlignment: 4 |
| adjustsStack: true |
| hasCalls: true |
| maxCallFrameSize: 2276 |
| stack: |
| - { id: 0, name: '', type: default, offset: 0, size: 2304, alignment: 4, |
| stack-id: default, callee-saved-register: '', callee-saved-restored: true, |
| local-offset: -2304, debug-info-variable: '', debug-info-expression: '', |
| debug-info-location: '' } |
| - { id: 1, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4, |
| stack-id: default, callee-saved-register: '', callee-saved-restored: true, |
| debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } |
| - { id: 2, name: '', type: spill-slot, offset: 0, size: 2204, alignment: 4, |
| stack-id: default, callee-saved-register: '', callee-saved-restored: true, |
| debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } |
| - { id: 3, name: '', type: spill-slot, offset: 0, size: 2204, alignment: 4, |
| stack-id: default, callee-saved-register: '', callee-saved-restored: true, |
| debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: main |
| ; CHECK: liveins: $x1, $x9, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: $x2 = frame-setup ADDI $x2, -2032 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032 |
| ; CHECK-NEXT: frame-setup SW killed $x1, $x2, 2028 :: (store (s32) into %stack.4) |
| ; CHECK-NEXT: frame-setup SW killed $x8, $x2, 2024 :: (store (s32) into %stack.5) |
| ; CHECK-NEXT: frame-setup SW killed $x9, $x2, 2020 :: (store (s32) into %stack.6) |
| ; CHECK-NEXT: frame-setup SW killed $x18, $x2, 2016 :: (store (s32) into %stack.7) |
| ; CHECK-NEXT: frame-setup SW killed $x19, $x2, 2012 :: (store (s32) into %stack.8) |
| ; CHECK-NEXT: frame-setup SW killed $x20, $x2, 2008 :: (store (s32) into %stack.9) |
| ; CHECK-NEXT: frame-setup SW killed $x21, $x2, 2004 :: (store (s32) into %stack.10) |
| ; CHECK-NEXT: frame-setup SW killed $x22, $x2, 2000 :: (store (s32) into %stack.11) |
| ; CHECK-NEXT: frame-setup SW killed $x23, $x2, 1996 :: (store (s32) into %stack.12) |
| ; CHECK-NEXT: frame-setup SW killed $x24, $x2, 1992 :: (store (s32) into %stack.13) |
| ; CHECK-NEXT: frame-setup SW killed $x25, $x2, 1988 :: (store (s32) into %stack.14) |
| ; CHECK-NEXT: frame-setup SW killed $x26, $x2, 1984 :: (store (s32) into %stack.15) |
| ; CHECK-NEXT: frame-setup SW killed $x27, $x2, 1980 :: (store (s32) into %stack.16) |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -8 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x9, -12 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x18, -16 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x19, -20 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x20, -24 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x21, -28 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x22, -32 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x23, -36 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x24, -40 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x25, -44 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x26, -48 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x27, -52 |
| ; CHECK-NEXT: $x8 = frame-setup ADDI $x2, 2032 |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa $x8, 0 |
| ; CHECK-NEXT: $x10 = frame-setup LUI 2 |
| ; CHECK-NEXT: $x10 = frame-setup ADDI killed $x10, -1168 |
| ; CHECK-NEXT: $x2 = frame-setup SUB $x2, killed $x10 |
| ; CHECK-NEXT: renamable $x10 = ADDI $x8, -440 |
| ; CHECK-NEXT: $x11 = LUI 2 |
| ; CHECK-NEXT: $x11 = SUB $x8, killed $x11 |
| ; CHECK-NEXT: $x11 = LW killed $x11, 1420 |
| ; CHECK-NEXT: renamable $x12 = LW undef renamable $x10, 1 |
| ; CHECK-NEXT: renamable $x13 = LW undef renamable $x10, 9 |
| ; CHECK-NEXT: renamable $x14 = LW undef renamable $x10, 13 |
| ; CHECK-NEXT: renamable $x15 = LW undef renamable $x10, 17 |
| ; CHECK-NEXT: renamable $x16 = LW undef renamable $x10, 21 |
| ; CHECK-NEXT: renamable $x17 = LW undef renamable $x10, 25 |
| ; CHECK-NEXT: renamable $x5 = LW undef renamable $x10, 29 |
| ; CHECK-NEXT: renamable $x6 = LW undef renamable $x10, 33 |
| ; CHECK-NEXT: renamable $x7 = LW undef renamable $x10, 37 |
| ; CHECK-NEXT: renamable $x28 = LW undef renamable $x10, 41 |
| ; CHECK-NEXT: renamable $x29 = LW undef renamable $x10, 45 |
| ; CHECK-NEXT: renamable $x30 = LW undef renamable $x10, 49 |
| ; CHECK-NEXT: renamable $x31 = LW undef renamable $x10, 53 |
| ; CHECK-NEXT: renamable $x9 = LW undef renamable $x10, 61 |
| ; CHECK-NEXT: renamable $x18 = LW undef renamable $x10, 65 |
| ; CHECK-NEXT: renamable $x19 = LW undef renamable $x10, 69 |
| ; CHECK-NEXT: renamable $x20 = LW undef renamable $x10, 73 |
| ; CHECK-NEXT: renamable $x21 = LW undef renamable $x10, 77 |
| ; CHECK-NEXT: renamable $x22 = LW undef renamable $x10, 81 |
| ; CHECK-NEXT: renamable $x23 = LW undef renamable $x10, 85 |
| ; CHECK-NEXT: renamable $x24 = LW undef renamable $x10, 89 |
| ; CHECK-NEXT: renamable $x25 = LW undef renamable $x10, 93 |
| ; CHECK-NEXT: renamable $x26 = LW undef renamable $x10, 97 |
| ; CHECK-NEXT: renamable $x27 = LW undef renamable $x10, 101 |
| ; CHECK-NEXT: renamable $x1 = LW undef renamable $x10, 105 |
| ; CHECK-NEXT: SW killed $x11, $x8, -56 :: (store (s32) into %stack.17) |
| ; CHECK-NEXT: $x11 = LUI 1 |
| ; CHECK-NEXT: $x11 = SUB $x8, killed $x11 |
| ; CHECK-NEXT: SW $x10, killed $x11, -472 |
| ; CHECK-NEXT: $x11 = LW $x8, -56 :: (load (s32) from %stack.17) |
| ; CHECK-NEXT: SW killed renamable $x1, undef renamable $x11, 105 |
| ; CHECK-NEXT: SW killed renamable $x27, undef renamable $x11, 101 |
| ; CHECK-NEXT: SW killed renamable $x26, renamable $x11, 97 |
| ; CHECK-NEXT: SW killed renamable $x25, undef renamable $x11, 93 |
| ; CHECK-NEXT: SW killed renamable $x24, undef renamable $x11, 89 |
| ; CHECK-NEXT: SW killed renamable $x23, undef renamable $x11, 85 |
| ; CHECK-NEXT: SW killed renamable $x22, undef renamable $x11, 81 |
| ; CHECK-NEXT: SW killed renamable $x21, undef renamable $x11, 77 |
| ; CHECK-NEXT: SW killed renamable $x20, undef renamable $x11, 73 |
| ; CHECK-NEXT: SW killed renamable $x19, undef renamable $x11, 69 |
| ; CHECK-NEXT: SW killed renamable $x18, undef renamable $x11, 65 |
| ; CHECK-NEXT: SW killed renamable $x9, undef renamable $x11, 61 |
| ; CHECK-NEXT: SW killed renamable $x31, undef renamable $x11, 53 |
| ; CHECK-NEXT: SW killed renamable $x30, undef renamable $x11, 49 |
| ; CHECK-NEXT: SW killed renamable $x29, undef renamable $x11, 45 |
| ; CHECK-NEXT: SW killed renamable $x28, undef renamable $x11, 41 |
| ; CHECK-NEXT: SW killed renamable $x7, undef renamable $x11, 37 |
| ; CHECK-NEXT: SW killed renamable $x6, undef renamable $x11, 33 |
| ; CHECK-NEXT: SW killed renamable $x5, undef renamable $x11, 29 |
| ; CHECK-NEXT: SW killed renamable $x17, undef renamable $x11, 25 |
| ; CHECK-NEXT: SW killed renamable $x16, undef renamable $x11, 21 |
| ; CHECK-NEXT: SW killed renamable $x15, undef renamable $x11, 17 |
| ; CHECK-NEXT: SW killed renamable $x14, undef renamable $x11, 13 |
| ; CHECK-NEXT: SW killed renamable $x13, undef renamable $x11, 9 |
| ; CHECK-NEXT: SW killed renamable $x12, undef renamable $x11, 5 |
| ; CHECK-NEXT: $x10 = frame-destroy LUI 2 |
| ; CHECK-NEXT: $x10 = frame-destroy ADDI killed $x10, -1168 |
| ; CHECK-NEXT: $x2 = frame-destroy ADD $x2, killed $x10 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION def_cfa $x2, 2032 |
| ; CHECK-NEXT: $x1 = frame-destroy LW $x2, 2028 :: (load (s32) from %stack.4) |
| ; CHECK-NEXT: $x8 = frame-destroy LW $x2, 2024 :: (load (s32) from %stack.5) |
| ; CHECK-NEXT: $x9 = frame-destroy LW $x2, 2020 :: (load (s32) from %stack.6) |
| ; CHECK-NEXT: $x18 = frame-destroy LW $x2, 2016 :: (load (s32) from %stack.7) |
| ; CHECK-NEXT: $x19 = frame-destroy LW $x2, 2012 :: (load (s32) from %stack.8) |
| ; CHECK-NEXT: $x20 = frame-destroy LW $x2, 2008 :: (load (s32) from %stack.9) |
| ; CHECK-NEXT: $x21 = frame-destroy LW $x2, 2004 :: (load (s32) from %stack.10) |
| ; CHECK-NEXT: $x22 = frame-destroy LW $x2, 2000 :: (load (s32) from %stack.11) |
| ; CHECK-NEXT: $x23 = frame-destroy LW $x2, 1996 :: (load (s32) from %stack.12) |
| ; CHECK-NEXT: $x24 = frame-destroy LW $x2, 1992 :: (load (s32) from %stack.13) |
| ; CHECK-NEXT: $x25 = frame-destroy LW $x2, 1988 :: (load (s32) from %stack.14) |
| ; CHECK-NEXT: $x26 = frame-destroy LW $x2, 1984 :: (load (s32) from %stack.15) |
| ; CHECK-NEXT: $x27 = frame-destroy LW $x2, 1980 :: (load (s32) from %stack.16) |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x1 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x8 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x9 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x18 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x19 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x20 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x21 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x22 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x23 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x24 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x25 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x26 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $x27 |
| ; CHECK-NEXT: $x2 = frame-destroy ADDI $x2, 2032 |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0 |
| ; CHECK-NEXT: PseudoRET |
| renamable $x10 = ADDI %stack.0, 1920 |
| ADJCALLSTACKDOWN 2276, 0, implicit-def dead $x2, implicit $x2 |
| $x11 = LW %stack.3, 0 |
| ADJCALLSTACKUP 2276, 0, implicit-def dead $x2, implicit $x2 |
| renamable $x12 = LW undef renamable $x10, 1 |
| renamable $x13 = LW undef renamable $x10, 9 |
| renamable $x14 = LW undef renamable $x10, 13 |
| renamable $x15 = LW undef renamable $x10, 17 |
| renamable $x16 = LW undef renamable $x10, 21 |
| renamable $x17 = LW undef renamable $x10, 25 |
| renamable $x5 = LW undef renamable $x10, 29 |
| renamable $x6 = LW undef renamable $x10, 33 |
| renamable $x7 = LW undef renamable $x10, 37 |
| renamable $x28 = LW undef renamable $x10, 41 |
| renamable $x29 = LW undef renamable $x10, 45 |
| renamable $x30 = LW undef renamable $x10, 49 |
| renamable $x31 = LW undef renamable $x10, 53 |
| renamable $x9 = LW undef renamable $x10, 61 |
| renamable $x18 = LW undef renamable $x10, 65 |
| renamable $x19 = LW undef renamable $x10, 69 |
| renamable $x20 = LW undef renamable $x10, 73 |
| renamable $x21 = LW undef renamable $x10, 77 |
| renamable $x22 = LW undef renamable $x10, 81 |
| renamable $x23 = LW undef renamable $x10, 85 |
| renamable $x24 = LW undef renamable $x10, 89 |
| renamable $x25 = LW undef renamable $x10, 93 |
| renamable $x26 = LW undef renamable $x10, 97 |
| renamable $x27 = LW undef renamable $x10, 101 |
| renamable $x1 = LW undef renamable $x10, 105 |
| SW $x10, %stack.2, 0 |
| SW killed renamable $x1, undef renamable $x11, 105 |
| SW killed renamable $x27, undef renamable $x11, 101 |
| SW killed renamable $x26, renamable $x11, 97 |
| SW killed renamable $x25, undef renamable $x11, 93 |
| SW killed renamable $x24, undef renamable $x11, 89 |
| SW killed renamable $x23, undef renamable $x11, 85 |
| SW killed renamable $x22, undef renamable $x11, 81 |
| SW killed renamable $x21, undef renamable $x11, 77 |
| SW killed renamable $x20, undef renamable $x11, 73 |
| SW killed renamable $x19, undef renamable $x11, 69 |
| SW killed renamable $x18, undef renamable $x11, 65 |
| SW killed renamable $x9, undef renamable $x11, 61 |
| SW killed renamable $x31, undef renamable $x11, 53 |
| SW killed renamable $x30, undef renamable $x11, 49 |
| SW killed renamable $x29, undef renamable $x11, 45 |
| SW killed renamable $x28, undef renamable $x11, 41 |
| SW killed renamable $x7, undef renamable $x11, 37 |
| SW killed renamable $x6, undef renamable $x11, 33 |
| SW killed renamable $x5, undef renamable $x11, 29 |
| SW killed renamable $x17, undef renamable $x11, 25 |
| SW killed renamable $x16, undef renamable $x11, 21 |
| SW killed renamable $x15, undef renamable $x11, 17 |
| SW killed renamable $x14, undef renamable $x11, 13 |
| SW killed renamable $x13, undef renamable $x11, 9 |
| SW killed renamable $x12, undef renamable $x11, 5 |
| PseudoRET |
| ... |