270 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 32# RUN: llc -mtriple=riscv64 -mattr='+d,+zfa,+v,+xtheadmempair' -verify-machineinstrs -run-pass=riscv-opt-w-instrs %s -o - | FileCheck %s3 4---5name: fcvtmod_w_d6tracksRegLiveness: true7body: |8 bb.0.entry:9 liveins: $x1010 11 ; CHECK-LABEL: name: fcvtmod_w_d12 ; CHECK: liveins: $x1013 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $x1015 ; CHECK-NEXT: [[FCVTMOD_W_D:%[0-9]+]]:gpr = nofpexcept FCVTMOD_W_D [[COPY]], 116 ; CHECK-NEXT: $x10 = COPY [[FCVTMOD_W_D]]17 ; CHECK-NEXT: PseudoRET18 %0:fpr64 = COPY $x1019 20 %1:gpr = nofpexcept FCVTMOD_W_D %0, 121 %2:gpr = ADDIW %1, 022 $x10 = COPY %223 PseudoRET24...25 26---27name: physreg28tracksRegLiveness: true29body: |30 bb.0.entry:31 liveins: $x10, $x1132 33 ; CHECK-LABEL: name: physreg34 ; CHECK: liveins: $x10, $x1135 ; CHECK-NEXT: {{ $}}36 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1037 ; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[COPY]], 038 ; CHECK-NEXT: $x10 = COPY [[ADDIW]]39 ; CHECK-NEXT: PseudoRET40 %0:gpr = COPY $x1041 %1:gpr = ADDIW %0, 042 $x10 = COPY %143 PseudoRET44...45---46 name: vfirst47 tracksRegLiveness: true48 body: |49 bb.0.entry:50 liveins: $x10, $v851 52 ; CHECK-LABEL: name: vfirst53 ; CHECK: liveins: $x10, $v854 ; CHECK-NEXT: {{ $}}55 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v856 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprnox0 = COPY $x1057 ; CHECK-NEXT: [[PseudoVFIRST_M_B1_:%[0-9]+]]:gpr = PseudoVFIRST_M_B1 [[COPY]], [[COPY1]], 0 /* e8 */58 ; CHECK-NEXT: $x11 = COPY [[PseudoVFIRST_M_B1_]]59 ; CHECK-NEXT: PseudoRET60 %0:vr = COPY $v861 %1:gprnox0 = COPY $x1062 63 %2:gpr = PseudoVFIRST_M_B1 %0:vr, %1:gprnox0, 064 %3:gpr = ADDIW %2, 065 $x11 = COPY %366 PseudoRET67...68---69 name: vcpop70 tracksRegLiveness: true71 body: |72 bb.0.entry:73 liveins: $x10, $v874 75 ; CHECK-LABEL: name: vcpop76 ; CHECK: liveins: $x10, $v877 ; CHECK-NEXT: {{ $}}78 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v879 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprnox0 = COPY $x1080 ; CHECK-NEXT: [[PseudoVCPOP_M_B1_:%[0-9]+]]:gpr = PseudoVCPOP_M_B1 [[COPY]], [[COPY1]], 0 /* e8 */81 ; CHECK-NEXT: $x11 = COPY [[PseudoVCPOP_M_B1_]]82 ; CHECK-NEXT: PseudoRET83 %0:vr = COPY $v884 %1:gprnox0 = COPY $x1085 86 %2:gpr = PseudoVCPOP_M_B1 %0:vr, %1:gprnox0, 087 %3:gpr = ADDIW %2, 088 $x11 = COPY %389 PseudoRET90...91---92 name: th_lwd93 tracksRegLiveness: true94 body: |95 bb.0.entry:96 liveins: $x1097 ; CHECK-LABEL: name: th_lwd98 ; CHECK: liveins: $x1099 ; CHECK-NEXT: {{ $}}100 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10101 ; CHECK-NEXT: early-clobber %1:gpr, early-clobber %2:gpr = TH_LWD [[COPY]], 2, 3102 ; CHECK-NEXT: $x10 = COPY %1103 ; CHECK-NEXT: $x11 = COPY %2104 ; CHECK-NEXT: PseudoRET105 %0:gpr = COPY $x10106 early-clobber %1:gpr, early-clobber %2:gpr = TH_LWD %0, 2, 3107 %3:gpr = ADDIW %1, 0108 %4:gpr = ADDIW %2, 0109 $x10 = COPY %3110 $x11 = COPY %4111 PseudoRET112...113---114name: movgprnox0_1115tracksRegLiveness: true116body: |117 bb.0:118 liveins: $x10, $x11, $x12, $x13119 ; CHECK-LABEL: name: movgprnox0_1120 ; CHECK: liveins: $x10, $x11, $x12, $x13121 ; CHECK-NEXT: {{ $}}122 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10123 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11124 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gprnox0 = COPY $x12125 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gprnox0 = COPY $x13126 ; CHECK-NEXT: [[PseudoCCMOVGPRNoX0_:%[0-9]+]]:gprnox0 = PseudoCCMOVGPRNoX0 [[COPY]], [[COPY1]], 1, [[COPY2]], [[COPY3]]127 ; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[PseudoCCMOVGPRNoX0_]], 0128 ; CHECK-NEXT: $x10 = COPY [[ADDIW]]129 ; CHECK-NEXT: PseudoRET implicit $x10130 %0:gpr = COPY $x10131 %1:gpr = COPY $x11132 %2:gpr = COPY $x12133 %3:gpr = COPY $x13134 %4:gprnox0 = ADDIW %2, 0135 %5:gprnox0 = ADDIW %3, 0136 %6:gprnox0 = PseudoCCMOVGPRNoX0 %0, %1, 1, %4, %5137 %7:gpr = ADDIW %6, 0138 $x10 = COPY %7139 PseudoRET implicit $x10140 141...142---143name: movgprnox0_2144tracksRegLiveness: true145body: |146 bb.0:147 liveins: $x10, $x11, $x12, $x13148 ; CHECK-LABEL: name: movgprnox0_2149 ; CHECK: liveins: $x10, $x11, $x12, $x13150 ; CHECK-NEXT: {{ $}}151 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10152 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11153 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12154 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr = COPY $x13155 ; CHECK-NEXT: [[SRAIW:%[0-9]+]]:gprnox0 = SRAIW [[COPY2]], 0156 ; CHECK-NEXT: [[SRAIW1:%[0-9]+]]:gprnox0 = SRAIW [[COPY3]], 0157 ; CHECK-NEXT: [[PseudoCCMOVGPRNoX0_:%[0-9]+]]:gprnox0 = PseudoCCMOVGPRNoX0 [[COPY]], [[COPY1]], 1, [[SRAIW]], [[SRAIW1]]158 ; CHECK-NEXT: $x10 = COPY [[PseudoCCMOVGPRNoX0_]]159 ; CHECK-NEXT: PseudoRET implicit $x10160 %0:gpr = COPY $x10161 %1:gpr = COPY $x11162 %2:gpr = COPY $x12163 %3:gpr = COPY $x13164 %4:gprnox0 = SRAIW %2, 0165 %5:gprnox0 = SRAIW %3, 0166 %6:gprnox0 = PseudoCCMOVGPRNoX0 %0, %1, 1, %4, %5167 %7:gpr = ADDIW %6, 0168 $x10 = COPY %7169 PseudoRET implicit $x10170 171...172---173name: lui_addi_1174tracksRegLiveness: true175body: |176 ; CHECK-LABEL: name: lui_addi_1177 ; CHECK: bb.0:178 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)179 ; CHECK-NEXT: liveins: $x10180 ; CHECK-NEXT: {{ $}}181 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10182 ; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[COPY]], 0183 ; CHECK-NEXT: [[LUI:%[0-9]+]]:gpr = LUI 11184 ; CHECK-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI killed [[LUI]], -1756185 ; CHECK-NEXT: BEQ killed [[ADDIW]], [[ADDI]], %bb.2186 ; CHECK-NEXT: PseudoBR %bb.1187 ; CHECK-NEXT: {{ $}}188 ; CHECK-NEXT: bb.1:189 ; CHECK-NEXT: successors: %bb.2(0x80000000)190 ; CHECK-NEXT: {{ $}}191 ; CHECK-NEXT: [[LW:%[0-9]+]]:gpr = LW $x0, 0192 ; CHECK-NEXT: {{ $}}193 ; CHECK-NEXT: bb.2:194 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr = PHI [[ADDI]], %bb.0, [[LW]], %bb.1195 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gprtc = COPY $x0196 ; CHECK-NEXT: $x10 = COPY [[COPY1]]197 ; CHECK-NEXT: $x11 = COPY [[PHI]]198 ; CHECK-NEXT: PseudoTAILIndirect [[COPY1]], csr_ilp32_lp64, implicit $x2, implicit $x10, implicit $x11199 bb.0:200 liveins: $x10201 202 %2:gpr = COPY $x10203 %4:gpr = ADDIW %2, 0204 %5:gpr = LUI 11205 %3:gpr = ADDI killed %5, -1756206 BEQ killed %4, %3, %bb.2207 PseudoBR %bb.1208 209 bb.1:210 %0:gpr = LW $x0, 0211 212 bb.2:213 %1:gpr = PHI %3, %bb.0, %0, %bb.1214 %6:gpr = ADDIW %1, 0215 %7:gprtc = COPY $x0216 $x10 = COPY %7217 $x11 = COPY %6218 PseudoTAILIndirect %7, csr_ilp32_lp64, implicit $x2, implicit $x10, implicit $x11219...220---221# The sext.w was erroneously removed in an earlier broken version of the patch222# for RISCVOptWInstrs that added lui/addi handling.223name: lui_addi_2224tracksRegLiveness: true225body: |226 ; CHECK-LABEL: name: lui_addi_2227 ; CHECK: bb.0.entry:228 ; CHECK-NEXT: successors: %bb.1(0x80000000)229 ; CHECK-NEXT: {{ $}}230 ; CHECK-NEXT: [[LUI:%[0-9]+]]:gpr = LUI 524289231 ; CHECK-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[LUI]], -2048232 ; CHECK-NEXT: {{ $}}233 ; CHECK-NEXT: bb.1:234 ; CHECK-NEXT: [[LWU:%[0-9]+]]:gpr = LWU $x0, 0 :: (load (s32) from `ptr null`)235 ; CHECK-NEXT: [[AND:%[0-9]+]]:gpr = AND [[LWU]], [[ADDI]]236 ; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW killed [[AND]], 0237 ; CHECK-NEXT: $x10 = COPY [[ADDIW]]238 ; CHECK-NEXT: PseudoRET implicit $x10239 ; CHECK-NEXT: {{ $}}240 ; CHECK-NEXT: bb.2:241 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2242 ; CHECK-NEXT: $x10 = COPY [[ADDIW]]243 ; CHECK-NEXT: %call_target_dummy:gprjalr = COPY $x0244 ; CHECK-NEXT: PseudoCALLIndirect %call_target_dummy, csr_ilp32_lp64, implicit-def $x1, implicit $x10245 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2246 ; CHECK-NEXT: $x10 = COPY [[LWU]]247 ; CHECK-NEXT: PseudoRET implicit $x10248 bb.0.entry:249 %13:gpr = LUI 524289250 %14:gpr = ADDI %13, -2048251 252 bb.1:253 %1:gpr = LWU $x0, 0 :: (load (s32) from `ptr null`)254 %15:gpr = AND %1, %14255 %16:gpr = ADDIW killed %15, 0256 257 $x10 = COPY %16258 PseudoRET implicit $x10259 260 bb.2:261 ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2262 $x10 = COPY %16263 %call_target_dummy:gprjalr = COPY $x0264 PseudoCALLIndirect %call_target_dummy, csr_ilp32_lp64, implicit-def $x1, implicit $x10265 ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2266 267 $x10 = COPY %1268 PseudoRET implicit $x10269...270