199 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42# RUN: llc -mtriple=riscv32 -mattr=+zcmp -x mir -start-before=prologepilog -stop-after=riscv-push-pop-opt -verify-machineinstrs -o - %s \3# RUN: | FileCheck -check-prefixes=CHECK-ZCMP32 %s4# RUN: llc -mtriple=riscv32 -mattr=+save-restore -x mir -start-before=prologepilog -stop-after=riscv-push-pop-opt -verify-machineinstrs -o - %s \5# RUN: | FileCheck -check-prefixes=CHECK-LIBCALL32 %s6# RUN: llc -mtriple=riscv64 -mattr=+zcmp -x mir -start-before=prologepilog -stop-after=riscv-push-pop-opt -verify-machineinstrs -o - %s \7# RUN: | FileCheck -check-prefixes=CHECK-ZCMP64 %s8# RUN: llc -mtriple=riscv64 -mattr=+save-restore -x mir -start-before=prologepilog -stop-after=riscv-push-pop-opt -verify-machineinstrs -o - %s \9# RUN: | FileCheck -check-prefixes=CHECK-LIBCALL64 %s10# RUN: llc -mtriple=riscv32 -x mir -start-before=prologepilog -stop-after=riscv-push-pop-opt -verify-machineinstrs -o - %s \11# RUN: | FileCheck -check-prefixes=CHECK-NO-ZCMP32 %s12# RUN: llc -mtriple=riscv64 -x mir -start-before=prologepilog -stop-after=riscv-push-pop-opt -verify-machineinstrs -o - %s \13# RUN: | FileCheck -check-prefixes=CHECK-NO-ZCMP64 %s14---15name: popret_rvlist516tracksRegLiveness: true17body: |18 bb.0:19 ; CHECK-ZCMP32-LABEL: name: popret_rvlist520 ; CHECK-ZCMP32: liveins: $x1, $x821 ; CHECK-ZCMP32-NEXT: {{ $}}22 ; CHECK-ZCMP32-NEXT: frame-setup CM_PUSH 5, 0, implicit-def $x2, implicit $x2, implicit $x1, implicit $x823 ; CHECK-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 1624 ; CHECK-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -825 ; CHECK-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -426 ; CHECK-ZCMP32-NEXT: $x1 = IMPLICIT_DEF27 ; CHECK-ZCMP32-NEXT: $x8 = IMPLICIT_DEF28 ; CHECK-ZCMP32-NEXT: frame-destroy CM_POPRET 5, 0, implicit-def $x2, implicit $x2, implicit-def $x1, implicit-def $x829 ;30 ; CHECK-LIBCALL32-LABEL: name: popret_rvlist531 ; CHECK-LIBCALL32: liveins: $x1, $x832 ; CHECK-LIBCALL32-NEXT: {{ $}}33 ; CHECK-LIBCALL32-NEXT: $x5 = frame-setup PseudoCALLReg target-flags(riscv-call) &__riscv_save_134 ; CHECK-LIBCALL32-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 1635 ; CHECK-LIBCALL32-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -436 ; CHECK-LIBCALL32-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -837 ; CHECK-LIBCALL32-NEXT: $x1 = IMPLICIT_DEF38 ; CHECK-LIBCALL32-NEXT: $x8 = IMPLICIT_DEF39 ; CHECK-LIBCALL32-NEXT: frame-destroy PseudoTAIL target-flags(riscv-call) &__riscv_restore_1, implicit $x240 ;41 ; CHECK-ZCMP64-LABEL: name: popret_rvlist542 ; CHECK-ZCMP64: liveins: $x1, $x843 ; CHECK-ZCMP64-NEXT: {{ $}}44 ; CHECK-ZCMP64-NEXT: frame-setup CM_PUSH 5, 0, implicit-def $x2, implicit $x2, implicit $x1, implicit $x845 ; CHECK-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 1646 ; CHECK-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -1647 ; CHECK-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -848 ; CHECK-ZCMP64-NEXT: $x1 = IMPLICIT_DEF49 ; CHECK-ZCMP64-NEXT: $x8 = IMPLICIT_DEF50 ; CHECK-ZCMP64-NEXT: frame-destroy CM_POPRET 5, 0, implicit-def $x2, implicit $x2, implicit-def $x1, implicit-def $x851 ;52 ; CHECK-LIBCALL64-LABEL: name: popret_rvlist553 ; CHECK-LIBCALL64: liveins: $x1, $x854 ; CHECK-LIBCALL64-NEXT: {{ $}}55 ; CHECK-LIBCALL64-NEXT: $x5 = frame-setup PseudoCALLReg target-flags(riscv-call) &__riscv_save_156 ; CHECK-LIBCALL64-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 1657 ; CHECK-LIBCALL64-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -858 ; CHECK-LIBCALL64-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -1659 ; CHECK-LIBCALL64-NEXT: $x1 = IMPLICIT_DEF60 ; CHECK-LIBCALL64-NEXT: $x8 = IMPLICIT_DEF61 ; CHECK-LIBCALL64-NEXT: frame-destroy PseudoTAIL target-flags(riscv-call) &__riscv_restore_1, implicit $x262 ;63 ; CHECK-NO-ZCMP32-LABEL: name: popret_rvlist564 ; CHECK-NO-ZCMP32: liveins: $x1, $x865 ; CHECK-NO-ZCMP32-NEXT: {{ $}}66 ; CHECK-NO-ZCMP32-NEXT: $x2 = frame-setup ADDI $x2, -1667 ; CHECK-NO-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 1668 ; CHECK-NO-ZCMP32-NEXT: frame-setup SW killed $x1, $x2, 12 :: (store (s32) into %stack.0)69 ; CHECK-NO-ZCMP32-NEXT: frame-setup SW killed $x8, $x2, 8 :: (store (s32) into %stack.1)70 ; CHECK-NO-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -471 ; CHECK-NO-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -872 ; CHECK-NO-ZCMP32-NEXT: $x1 = IMPLICIT_DEF73 ; CHECK-NO-ZCMP32-NEXT: $x8 = IMPLICIT_DEF74 ; CHECK-NO-ZCMP32-NEXT: $x1 = frame-destroy LW $x2, 12 :: (load (s32) from %stack.0)75 ; CHECK-NO-ZCMP32-NEXT: $x8 = frame-destroy LW $x2, 8 :: (load (s32) from %stack.1)76 ; CHECK-NO-ZCMP32-NEXT: frame-destroy CFI_INSTRUCTION restore $x177 ; CHECK-NO-ZCMP32-NEXT: frame-destroy CFI_INSTRUCTION restore $x878 ; CHECK-NO-ZCMP32-NEXT: $x2 = frame-destroy ADDI $x2, 1679 ; CHECK-NO-ZCMP32-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 080 ; CHECK-NO-ZCMP32-NEXT: PseudoRET81 ;82 ; CHECK-NO-ZCMP64-LABEL: name: popret_rvlist583 ; CHECK-NO-ZCMP64: liveins: $x1, $x884 ; CHECK-NO-ZCMP64-NEXT: {{ $}}85 ; CHECK-NO-ZCMP64-NEXT: $x2 = frame-setup ADDI $x2, -1686 ; CHECK-NO-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 1687 ; CHECK-NO-ZCMP64-NEXT: frame-setup SD killed $x1, $x2, 8 :: (store (s64) into %stack.0)88 ; CHECK-NO-ZCMP64-NEXT: frame-setup SD killed $x8, $x2, 0 :: (store (s64) into %stack.1)89 ; CHECK-NO-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -890 ; CHECK-NO-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -1691 ; CHECK-NO-ZCMP64-NEXT: $x1 = IMPLICIT_DEF92 ; CHECK-NO-ZCMP64-NEXT: $x8 = IMPLICIT_DEF93 ; CHECK-NO-ZCMP64-NEXT: $x1 = frame-destroy LD $x2, 8 :: (load (s64) from %stack.0)94 ; CHECK-NO-ZCMP64-NEXT: $x8 = frame-destroy LD $x2, 0 :: (load (s64) from %stack.1)95 ; CHECK-NO-ZCMP64-NEXT: frame-destroy CFI_INSTRUCTION restore $x196 ; CHECK-NO-ZCMP64-NEXT: frame-destroy CFI_INSTRUCTION restore $x897 ; CHECK-NO-ZCMP64-NEXT: $x2 = frame-destroy ADDI $x2, 1698 ; CHECK-NO-ZCMP64-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 099 ; CHECK-NO-ZCMP64-NEXT: PseudoRET100 $x1 = IMPLICIT_DEF101 $x8 = IMPLICIT_DEF102 PseudoRET103...104---105name: popretz_rvlist5106tracksRegLiveness: true107body: |108 bb.0:109 ; CHECK-ZCMP32-LABEL: name: popretz_rvlist5110 ; CHECK-ZCMP32: liveins: $x1, $x8111 ; CHECK-ZCMP32-NEXT: {{ $}}112 ; CHECK-ZCMP32-NEXT: frame-setup CM_PUSH 5, 0, implicit-def $x2, implicit $x2, implicit $x1, implicit $x8113 ; CHECK-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16114 ; CHECK-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8115 ; CHECK-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -4116 ; CHECK-ZCMP32-NEXT: $x1 = IMPLICIT_DEF117 ; CHECK-ZCMP32-NEXT: $x8 = IMPLICIT_DEF118 ; CHECK-ZCMP32-NEXT: frame-destroy CM_POPRETZ 5, 0, implicit-def $x2, implicit-def $x10, implicit $x2, implicit-def $x1, implicit-def $x8119 ;120 ; CHECK-LIBCALL32-LABEL: name: popretz_rvlist5121 ; CHECK-LIBCALL32: liveins: $x1, $x8122 ; CHECK-LIBCALL32-NEXT: {{ $}}123 ; CHECK-LIBCALL32-NEXT: $x5 = frame-setup PseudoCALLReg target-flags(riscv-call) &__riscv_save_1124 ; CHECK-LIBCALL32-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16125 ; CHECK-LIBCALL32-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4126 ; CHECK-LIBCALL32-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -8127 ; CHECK-LIBCALL32-NEXT: $x1 = IMPLICIT_DEF128 ; CHECK-LIBCALL32-NEXT: $x8 = IMPLICIT_DEF129 ; CHECK-LIBCALL32-NEXT: $x10 = ADDI $x0, 0130 ; CHECK-LIBCALL32-NEXT: frame-destroy PseudoTAIL target-flags(riscv-call) &__riscv_restore_1, implicit $x2, implicit $x10131 ;132 ; CHECK-ZCMP64-LABEL: name: popretz_rvlist5133 ; CHECK-ZCMP64: liveins: $x1, $x8134 ; CHECK-ZCMP64-NEXT: {{ $}}135 ; CHECK-ZCMP64-NEXT: frame-setup CM_PUSH 5, 0, implicit-def $x2, implicit $x2, implicit $x1, implicit $x8136 ; CHECK-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16137 ; CHECK-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -16138 ; CHECK-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -8139 ; CHECK-ZCMP64-NEXT: $x1 = IMPLICIT_DEF140 ; CHECK-ZCMP64-NEXT: $x8 = IMPLICIT_DEF141 ; CHECK-ZCMP64-NEXT: frame-destroy CM_POPRETZ 5, 0, implicit-def $x2, implicit-def $x10, implicit $x2, implicit-def $x1, implicit-def $x8142 ;143 ; CHECK-LIBCALL64-LABEL: name: popretz_rvlist5144 ; CHECK-LIBCALL64: liveins: $x1, $x8145 ; CHECK-LIBCALL64-NEXT: {{ $}}146 ; CHECK-LIBCALL64-NEXT: $x5 = frame-setup PseudoCALLReg target-flags(riscv-call) &__riscv_save_1147 ; CHECK-LIBCALL64-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16148 ; CHECK-LIBCALL64-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8149 ; CHECK-LIBCALL64-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -16150 ; CHECK-LIBCALL64-NEXT: $x1 = IMPLICIT_DEF151 ; CHECK-LIBCALL64-NEXT: $x8 = IMPLICIT_DEF152 ; CHECK-LIBCALL64-NEXT: $x10 = ADDI $x0, 0153 ; CHECK-LIBCALL64-NEXT: frame-destroy PseudoTAIL target-flags(riscv-call) &__riscv_restore_1, implicit $x2, implicit $x10154 ;155 ; CHECK-NO-ZCMP32-LABEL: name: popretz_rvlist5156 ; CHECK-NO-ZCMP32: liveins: $x1, $x8157 ; CHECK-NO-ZCMP32-NEXT: {{ $}}158 ; CHECK-NO-ZCMP32-NEXT: $x2 = frame-setup ADDI $x2, -16159 ; CHECK-NO-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16160 ; CHECK-NO-ZCMP32-NEXT: frame-setup SW killed $x1, $x2, 12 :: (store (s32) into %stack.0)161 ; CHECK-NO-ZCMP32-NEXT: frame-setup SW killed $x8, $x2, 8 :: (store (s32) into %stack.1)162 ; CHECK-NO-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4163 ; CHECK-NO-ZCMP32-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -8164 ; CHECK-NO-ZCMP32-NEXT: $x1 = IMPLICIT_DEF165 ; CHECK-NO-ZCMP32-NEXT: $x8 = IMPLICIT_DEF166 ; CHECK-NO-ZCMP32-NEXT: $x10 = ADDI $x0, 0167 ; CHECK-NO-ZCMP32-NEXT: $x1 = frame-destroy LW $x2, 12 :: (load (s32) from %stack.0)168 ; CHECK-NO-ZCMP32-NEXT: $x8 = frame-destroy LW $x2, 8 :: (load (s32) from %stack.1)169 ; CHECK-NO-ZCMP32-NEXT: frame-destroy CFI_INSTRUCTION restore $x1170 ; CHECK-NO-ZCMP32-NEXT: frame-destroy CFI_INSTRUCTION restore $x8171 ; CHECK-NO-ZCMP32-NEXT: $x2 = frame-destroy ADDI $x2, 16172 ; CHECK-NO-ZCMP32-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0173 ; CHECK-NO-ZCMP32-NEXT: PseudoRET implicit $x10174 ;175 ; CHECK-NO-ZCMP64-LABEL: name: popretz_rvlist5176 ; CHECK-NO-ZCMP64: liveins: $x1, $x8177 ; CHECK-NO-ZCMP64-NEXT: {{ $}}178 ; CHECK-NO-ZCMP64-NEXT: $x2 = frame-setup ADDI $x2, -16179 ; CHECK-NO-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16180 ; CHECK-NO-ZCMP64-NEXT: frame-setup SD killed $x1, $x2, 8 :: (store (s64) into %stack.0)181 ; CHECK-NO-ZCMP64-NEXT: frame-setup SD killed $x8, $x2, 0 :: (store (s64) into %stack.1)182 ; CHECK-NO-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8183 ; CHECK-NO-ZCMP64-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -16184 ; CHECK-NO-ZCMP64-NEXT: $x1 = IMPLICIT_DEF185 ; CHECK-NO-ZCMP64-NEXT: $x8 = IMPLICIT_DEF186 ; CHECK-NO-ZCMP64-NEXT: $x10 = ADDI $x0, 0187 ; CHECK-NO-ZCMP64-NEXT: $x1 = frame-destroy LD $x2, 8 :: (load (s64) from %stack.0)188 ; CHECK-NO-ZCMP64-NEXT: $x8 = frame-destroy LD $x2, 0 :: (load (s64) from %stack.1)189 ; CHECK-NO-ZCMP64-NEXT: frame-destroy CFI_INSTRUCTION restore $x1190 ; CHECK-NO-ZCMP64-NEXT: frame-destroy CFI_INSTRUCTION restore $x8191 ; CHECK-NO-ZCMP64-NEXT: $x2 = frame-destroy ADDI $x2, 16192 ; CHECK-NO-ZCMP64-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 0193 ; CHECK-NO-ZCMP64-NEXT: PseudoRET implicit $x10194 $x1 = IMPLICIT_DEF195 $x8 = IMPLICIT_DEF196 $x10 = COPY $x0197 PseudoRET implicit $x10198...199