828 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc %s -o - -mtriple=riscv64 -mattr=+v,+zvfbfmin -run-pass=riscv-vl-optimizer -verify-machineinstrs | FileCheck %s3 4---5name: vnsrl_wv_user6body: |7 bb.0:8 liveins: $x19 ; CHECK-LABEL: name: vnsrl_wv_user10 ; CHECK: liveins: $x111 ; CHECK-NEXT: {{ $}}12 ; CHECK-NEXT: %vl:gprnox0 = COPY $x113 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 /* tu, mu */14 ; CHECK-NEXT: %y:vr = PseudoVNSRL_WV_MF4 $noreg, %x, $noreg, %vl, 4 /* e16 */, 0 /* tu, mu */15 ; CHECK-NEXT: $v8 = COPY %y16 %vl:gprnox0 = COPY $x117 %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 /* tu, mu */18 %y:vr = PseudoVNSRL_WV_MF4 $noreg, %x, $noreg, %vl, 4 /* e16 */, 0 /* tu, mu */19 $v8 = COPY %y20...21---22name: vredsum_vv_user23body: |24 bb.0:25 liveins: $x126 ; CHECK-LABEL: name: vredsum_vv_user27 ; CHECK: liveins: $x128 ; CHECK-NEXT: {{ $}}29 ; CHECK-NEXT: %vl:gprnox0 = COPY $x130 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */31 ; CHECK-NEXT: %y:vr = PseudoVREDSUM_VS_M1_E64 $noreg, %x, $noreg, -1, 6 /* e64 */, 0 /* tu, mu */32 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 5 /* e32 */, 0 /* tu, mu */33 ; CHECK-NEXT: $v8 = COPY %y34 ; CHECK-NEXT: $v9 = COPY %z35 %vl:gprnox0 = COPY $x136 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */37 %y:vr = PseudoVREDSUM_VS_M1_E64 $noreg, %x, $noreg, -1, 6 /* e64 */, 0 /* tu, mu */38 %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 5 /* e32 */, 0 /* tu, mu */39 $v8 = COPY %y40 $v9 = COPY %z41...42---43name: use_largest_common_vl_imm_imm44body: |45 bb.0:46 ; CHECK-LABEL: name: use_largest_common_vl_imm_imm47 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */48 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */49 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */50 ; CHECK-NEXT: $v8 = COPY %y51 ; CHECK-NEXT: $v9 = COPY %z52 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 053 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 054 %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 2, 3 /* e8 */, 055 $v8 = COPY %y56 $v9 = COPY %z57...58---59name: use_largest_common_vl_same_reg60body: |61 bb.0:62 liveins: $x163 ; CHECK-LABEL: name: use_largest_common_vl_same_reg64 ; CHECK: liveins: $x165 ; CHECK-NEXT: {{ $}}66 ; CHECK-NEXT: %vl:gprnox0 = COPY $x167 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, %vl, 3 /* e8 */, 0 /* tu, mu */68 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0 /* tu, mu */69 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0 /* tu, mu */70 ; CHECK-NEXT: $v8 = COPY %y71 ; CHECK-NEXT: $v9 = COPY %z72 %vl:gprnox0 = COPY $x173 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 074 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 075 %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 076 $v8 = COPY %y77 $v9 = COPY %z78...79---80name: use_largest_common_vl_diff_regs81body: |82 bb.0:83 liveins: $x1, $x284 ; CHECK-LABEL: name: use_largest_common_vl_diff_regs85 ; CHECK: liveins: $x1, $x286 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: %vl0:gprnox0 = COPY $x188 ; CHECK-NEXT: %vl1:gprnox0 = COPY $x289 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */90 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl0, 3 /* e8 */, 0 /* tu, mu */91 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl1, 3 /* e8 */, 0 /* tu, mu */92 ; CHECK-NEXT: $v8 = COPY %y93 ; CHECK-NEXT: $v9 = COPY %z94 %vl0:gprnox0 = COPY $x195 %vl1:gprnox0 = COPY $x296 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 097 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl0, 3 /* e8 */, 098 %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl1, 3 /* e8 */, 099 $v8 = COPY %y100 $v9 = COPY %z101...102---103name: use_largest_common_vl_imm_reg104body: |105 bb.0:106 liveins: $x1107 ; CHECK-LABEL: name: use_largest_common_vl_imm_reg108 ; CHECK: liveins: $x1109 ; CHECK-NEXT: {{ $}}110 ; CHECK-NEXT: %vl:gprnox0 = COPY $x1111 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */112 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0 /* tu, mu */113 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */114 ; CHECK-NEXT: $v8 = COPY %y115 ; CHECK-NEXT: $v9 = COPY %z116 %vl:gprnox0 = COPY $x1117 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0118 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0119 %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0120 $v8 = COPY %y121 $v9 = COPY %z122...123---124name: use_largest_common_vl_imm_vlmax125body: |126 bb.0:127 ; CHECK-LABEL: name: use_largest_common_vl_imm_vlmax128 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */129 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */130 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */131 ; CHECK-NEXT: $v8 = COPY %y132 ; CHECK-NEXT: $v9 = COPY %z133 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0134 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0135 %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, -1, 3 /* e8 */, 0136 $v8 = COPY %y137 $v9 = COPY %z138...139---140name: vfcvt_x_f_v_nofpexcept141body: |142 bb.0:143 ; CHECK-LABEL: name: vfcvt_x_f_v_nofpexcept144 ; CHECK: %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0, 1, 3 /* e8 */, 0 /* tu, mu */145 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */146 ; CHECK-NEXT: $v8 = COPY %y147 %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0, -1, 3 /* e32 */, 0148 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0149 $v8 = COPY %y150...151---152name: vfcvt_x_f_v_fpexcept153body: |154 bb.0:155 ; CHECK-LABEL: name: vfcvt_x_f_v_fpexcept156 ; CHECK: %x:vr = PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0, -1, 3 /* e8 */, 0 /* tu, mu */157 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */158 ; CHECK-NEXT: $v8 = COPY %y159 %x:vr = PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0, -1, 3 /* e32 */, 0160 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0161 $v8 = COPY %y162...163---164name: vfncvtbf16_f_f_w_nofpexcept165body: |166 bb.0:167 ; CHECK-LABEL: name: vfncvtbf16_f_f_w_nofpexcept168 ; CHECK: early-clobber %x:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, $noreg, 7, 1, 4 /* e16 */, 0 /* tu, mu */, implicit $frm169 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */170 ; CHECK-NEXT: $v8 = COPY %y171 %x:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, $noreg, 7, -1, 4 /* e16 */, 0 /* tu, mu */, implicit $frm172 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0173 $v8 = COPY %y174...175---176name: vfsqrt_nofpexcept177body: |178 bb.0:179 ; CHECK-LABEL: name: vfsqrt_nofpexcept180 ; CHECK: %x:vrm2 = nofpexcept PseudoVFSQRT_V_M2_E32 $noreg, $noreg, 7, 6, 5 /* e32 */, 3 /* ta, ma */, implicit $frm181 ; CHECK-NEXT: early-clobber %y:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, %x, 7, 6, 4 /* e16 */, 3 /* ta, ma */, implicit $frm182 ; CHECK-NEXT: $v8 = COPY %y183 %x:vrm2 = nofpexcept PseudoVFSQRT_V_M2_E32 $noreg, $noreg, 7, 8, 5, 3, implicit $frm184 early-clobber %y:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, %x, 7, 6, 4, 3, implicit $frm185 $v8 = COPY %y186...187---188name: vfsqrt_fpexcept189body: |190 bb.0:191 ; CHECK-LABEL: name: vfsqrt_fpexcept192 ; CHECK: %x:vrm2 = PseudoVFSQRT_V_M2_E32 $noreg, $noreg, 7, 8, 5 /* e32 */, 3 /* ta, ma */, implicit $frm193 ; CHECK-NEXT: early-clobber %y:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, %x, 7, 6, 4 /* e16 */, 3 /* ta, ma */, implicit $frm194 ; CHECK-NEXT: $v8 = COPY %y195 %x:vrm2 = PseudoVFSQRT_V_M2_E32 $noreg, $noreg, 7, 8, 5, 3, implicit $frm196 early-clobber %y:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, %x, 7, 6, 4, 3, implicit $frm197 $v8 = COPY %y198...199---200name: vfrsqrt7_nofpexcept201body: |202 bb.0:203 ; CHECK-LABEL: name: vfrsqrt7_nofpexcept204 ; CHECK: %x:vrm2 = nofpexcept PseudoVFRSQRT7_V_M2_E32 $noreg, $noreg, 1, 5 /* e32 */, 0 /* tu, mu */205 ; CHECK-NEXT: %y:vrm2 = PseudoVADD_VV_M2 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 /* tu, mu */206 ; CHECK-NEXT: $v8m2 = COPY %y207 %x:vrm2 = nofpexcept PseudoVFRSQRT7_V_M2_E32 $noreg, $noreg, 7, 5, 0208 %y:vrm2 = PseudoVADD_VV_M2 $noreg, %x, $noreg, 1, 5 /* e32 */, 0209 $v8m2 = COPY %y210...211---212name: vfrsqrt7_fpexcept213body: |214 bb.0:215 ; CHECK-LABEL: name: vfrsqrt7_fpexcept216 ; CHECK: %x:vrm2 = PseudoVFRSQRT7_V_M2_E32 $noreg, $noreg, 7, 5 /* e32 */, 0 /* tu, mu */217 ; CHECK-NEXT: %y:vrm2 = PseudoVADD_VV_M2 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 /* tu, mu */218 ; CHECK-NEXT: $v8m2 = COPY %y219 %x:vrm2 = PseudoVFRSQRT7_V_M2_E32 $noreg, $noreg, 7, 5, 0220 %y:vrm2 = PseudoVADD_VV_M2 $noreg, %x, $noreg, 1, 5 /* e32 */, 0221 $v8m2 = COPY %y222...223---224name: vwadd_tied_vs1225body: |226 bb.0:227 ; CHECK-LABEL: name: vwadd_tied_vs1228 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */229 ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_WV_M1_TIED $noreg, %x, 1, 3 /* e8 */, 0 /* tu, mu */230 ; CHECK-NEXT: $v8m2 = COPY %y231 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */232 %y:vrm2 = PseudoVWADD_WV_M1_TIED $noreg, %x, 1, 3 /* e8 */, 0 /* tu, mu */233 $v8m2 = COPY %y234...235---236name: crossbb237body: |238 ; CHECK-LABEL: name: crossbb239 ; CHECK: bb.0:240 ; CHECK-NEXT: successors: %bb.3(0x80000000)241 ; CHECK-NEXT: {{ $}}242 ; CHECK-NEXT: PseudoBR %bb.3243 ; CHECK-NEXT: {{ $}}244 ; CHECK-NEXT: bb.1:245 ; CHECK-NEXT: %a1:vr = PseudoVADD_VV_M1 $noreg, %c, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */246 ; CHECK-NEXT: %a2:vr = PseudoVADD_VV_M1 $noreg, %a1, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */247 ; CHECK-NEXT: $v8 = COPY %a2248 ; CHECK-NEXT: PseudoRET249 ; CHECK-NEXT: {{ $}}250 ; CHECK-NEXT: bb.2:251 ; CHECK-NEXT: %b1:vr = PseudoVADD_VV_M1 $noreg, %c, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */252 ; CHECK-NEXT: %b2:vr = PseudoVADD_VV_M1 $noreg, %b1, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */253 ; CHECK-NEXT: $v8 = COPY %b2254 ; CHECK-NEXT: PseudoRET255 ; CHECK-NEXT: {{ $}}256 ; CHECK-NEXT: bb.3:257 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)258 ; CHECK-NEXT: liveins: $x1259 ; CHECK-NEXT: {{ $}}260 ; CHECK-NEXT: %c:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */261 ; CHECK-NEXT: BEQ $x1, $x0, %bb.1262 ; CHECK-NEXT: PseudoBR %bb.2263 bb.0:264 PseudoBR %bb.3265 bb.1:266 %a1:vr = PseudoVADD_VV_M1 $noreg, %c, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */267 %a2:vr = PseudoVADD_VV_M1 $noreg, %a1, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */268 $v8 = COPY %a2269 PseudoRET270 bb.2:271 %b1:vr = PseudoVADD_VV_M1 $noreg, %c, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */272 %b2:vr = PseudoVADD_VV_M1 $noreg, %b1, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */273 $v8 = COPY %b2274 PseudoRET275 bb.3:276 liveins: $x1277 %c:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */278 BEQ $x1, $x0, %bb.1279 PseudoBR %bb.2280...281---282name: unreachable283body: |284 ; CHECK-LABEL: name: unreachable285 ; CHECK: bb.0:286 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */287 ; CHECK-NEXT: $v8 = COPY %x288 ; CHECK-NEXT: PseudoRET289 ; CHECK-NEXT: {{ $}}290 ; CHECK-NEXT: bb.1:291 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */292 ; CHECK-NEXT: $v8 = COPY %y293 ; CHECK-NEXT: PseudoRET294 bb.0:295 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */296 $v8 = COPY %x297 PseudoRET298 bb.1:299 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */300 $v8 = COPY %y301 PseudoRET302...303---304# Can reduce %x even though %y uses it as a passthru, because %y's inactive elements aren't demanded305name: passthru_not_demanded306body: |307 bb.0:308 ; CHECK-LABEL: name: passthru_not_demanded309 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */310 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */311 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */312 ; CHECK-NEXT: $v8 = COPY %z313 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */314 %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */315 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */316 $v8 = COPY %z317...318---319# Can't reduce %x because %y uses it as a passthru, and %y's inactive elements are demanded by %z320name: passthru_demanded321body: |322 bb.0:323 ; CHECK-LABEL: name: passthru_demanded324 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */325 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */326 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */327 ; CHECK-NEXT: $v8 = COPY %z328 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */329 %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */330 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */331 $v8 = COPY %z332...333---334# Can reduce %x even though %y uses it as a passthru, because %y's inactive elements aren't demanded335name: passthru_not_demanded_passthru_chain336body: |337 bb.0:338 ; CHECK-LABEL: name: passthru_not_demanded_passthru_chain339 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */340 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */341 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 %y, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */342 ; CHECK-NEXT: %a:vr = PseudoVADD_VV_M1 %z, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */343 ; CHECK-NEXT: %b:vr = PseudoVADD_VV_M1 $noreg, %a, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */344 ; CHECK-NEXT: $v8 = COPY %b345 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */346 %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */347 %z:vr = PseudoVADD_VV_M1 %y, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */348 %a:vr = PseudoVADD_VV_M1 %z, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */349 %b:vr = PseudoVADD_VV_M1 $noreg, %a, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */350 $v8 = COPY %b351...352---353# Can't reduce %x because %y uses it as a passthru, and %y's inactive elements are ultimately demanded in %b354name: passthru_demanded_passthru_chain355body: |356 bb.0:357 ; CHECK-LABEL: name: passthru_demanded_passthru_chain358 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */359 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */360 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 %y, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */361 ; CHECK-NEXT: %a:vr = PseudoVADD_VV_M1 %z, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */362 ; CHECK-NEXT: %b:vr = PseudoVADD_VV_M1 $noreg, %a, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */363 ; CHECK-NEXT: $v8 = COPY %b364 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */365 %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */366 %z:vr = PseudoVADD_VV_M1 %y, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */367 %a:vr = PseudoVADD_VV_M1 %z, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */368 %b:vr = PseudoVADD_VV_M1 $noreg, %a, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */369 $v8 = COPY %b370...371---372name: vxsat_dead373body: |374 bb.0:375 ; CHECK-LABEL: name: vxsat_dead376 ; CHECK: %x:vr = PseudoVSADDU_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */, implicit-def dead $vxsat377 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */378 ; CHECK-NEXT: $v8 = COPY %y379 %x:vr = PseudoVSADDU_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */, implicit-def dead $vxsat380 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */381 $v8 = COPY %y382...383---384name: vxsat_not_dead385body: |386 bb.0:387 ; CHECK-LABEL: name: vxsat_not_dead388 ; CHECK: %x:vr = PseudoVSADDU_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */, implicit-def $vxsat389 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */390 ; CHECK-NEXT: $v8 = COPY %y391 %x:vr = PseudoVSADDU_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */, implicit-def $vxsat392 %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */393 $v8 = COPY %y394...395---396name: vxsat_instr_dead397body: |398 bb.0:399 ; CHECK-LABEL: name: vxsat_instr_dead400 ; CHECK: %x:vr = PseudoVSADDU_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */, implicit-def dead $vxsat401 ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */402 ; CHECK-NEXT: $v8 = COPY %y403 %x:vr = PseudoVSADDU_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */, implicit-def dead $vxsat404 %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */405 $v8 = COPY %y406...407---408name: copy409body: |410 bb.0:411 ; CHECK-LABEL: name: copy412 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */413 ; CHECK-NEXT: %y:vr = COPY %x414 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */415 ; CHECK-NEXT: $v8 = COPY %z416 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */417 %y:vr = COPY %x418 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */419 $v8 = COPY %z420...421---422name: copy_multiple_users423body: |424 bb.0:425 ; CHECK-LABEL: name: copy_multiple_users426 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 3, 3 /* e8 */, 0 /* tu, mu */427 ; CHECK-NEXT: %y:vr = COPY %x428 ; CHECK-NEXT: %z0:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */429 ; CHECK-NEXT: %z1:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 3, 3 /* e8 */, 0 /* tu, mu */430 ; CHECK-NEXT: $v8 = COPY %z0431 ; CHECK-NEXT: $v9 = COPY %z1432 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */433 %y:vr = COPY %x434 %z0:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */435 %z1:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 3, 3 /* e8 */, 0 /* tu, mu */436 $v8 = COPY %z0437 $v9 = COPY %z1438...439---440name: copy_user_invalid_sew441body: |442 bb.0:443 ; CHECK-LABEL: name: copy_user_invalid_sew444 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */445 ; CHECK-NEXT: %y:vr = COPY %x446 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */447 ; CHECK-NEXT: $v8 = COPY %z448 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */449 %y:vr = COPY %x450 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */451 $v8 = COPY %z452...453---454name: phi455tracksRegLiveness: true456body: |457 ; CHECK-LABEL: name: phi458 ; CHECK: bb.0:459 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)460 ; CHECK-NEXT: {{ $}}461 ; CHECK-NEXT: %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */462 ; CHECK-NEXT: BNE $noreg, $noreg, %bb.2463 ; CHECK-NEXT: {{ $}}464 ; CHECK-NEXT: bb.1:465 ; CHECK-NEXT: successors: %bb.2(0x80000000)466 ; CHECK-NEXT: {{ $}}467 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */468 ; CHECK-NEXT: {{ $}}469 ; CHECK-NEXT: bb.2:470 ; CHECK-NEXT: %y:vr = PHI %w, %bb.0, %x, %bb.1471 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */472 ; CHECK-NEXT: $v8 = COPY %z473 bb.0:474 %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */475 BNE $noreg, $noreg, %bb.2476 bb.1:477 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */478 bb.2:479 %y:vr = PHI %w, %bb.0, %x, %bb.1480 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */481 $v8 = COPY %z482...483---484name: phi_user_invalid_sew485tracksRegLiveness: true486body: |487 ; CHECK-LABEL: name: phi_user_invalid_sew488 ; CHECK: bb.0:489 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)490 ; CHECK-NEXT: {{ $}}491 ; CHECK-NEXT: %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */492 ; CHECK-NEXT: BNE $noreg, $noreg, %bb.2493 ; CHECK-NEXT: {{ $}}494 ; CHECK-NEXT: bb.1:495 ; CHECK-NEXT: successors: %bb.2(0x80000000)496 ; CHECK-NEXT: {{ $}}497 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */498 ; CHECK-NEXT: {{ $}}499 ; CHECK-NEXT: bb.2:500 ; CHECK-NEXT: %y:vr = PHI %w, %bb.0, %x, %bb.1501 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */502 ; CHECK-NEXT: $v8 = COPY %z503 bb.0:504 %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */505 BNE $noreg, $noreg, %bb.2506 bb.1:507 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */508 bb.2:509 %y:vr = PHI %w, %bb.0, %x, %bb.1510 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */511 $v8 = COPY %z512...513---514name: phi_different_incoming_sew515tracksRegLiveness: true516body: |517 ; CHECK-LABEL: name: phi_different_incoming_sew518 ; CHECK: bb.0:519 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)520 ; CHECK-NEXT: {{ $}}521 ; CHECK-NEXT: %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */522 ; CHECK-NEXT: BNE $noreg, $noreg, %bb.2523 ; CHECK-NEXT: {{ $}}524 ; CHECK-NEXT: bb.1:525 ; CHECK-NEXT: successors: %bb.2(0x80000000)526 ; CHECK-NEXT: {{ $}}527 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 /* tu, mu */528 ; CHECK-NEXT: {{ $}}529 ; CHECK-NEXT: bb.2:530 ; CHECK-NEXT: %y:vr = PHI %w, %bb.0, %x, %bb.1531 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */532 ; CHECK-NEXT: $v8 = COPY %z533 bb.0:534 %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */535 BNE $noreg, $noreg, %bb.2536 bb.1:537 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 /* tu, mu */538 bb.2:539 %y:vr = PHI %w, %bb.0, %x, %bb.1540 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */541 $v8 = COPY %z542...543---544name: phi_cycle_direct545tracksRegLiveness: true546body: |547 ; CHECK-LABEL: name: phi_cycle_direct548 ; CHECK: bb.0:549 ; CHECK-NEXT: successors: %bb.1(0x80000000)550 ; CHECK-NEXT: {{ $}}551 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */552 ; CHECK-NEXT: {{ $}}553 ; CHECK-NEXT: bb.1:554 ; CHECK-NEXT: successors: %bb.1(0x80000000)555 ; CHECK-NEXT: {{ $}}556 ; CHECK-NEXT: %y:vr = PHI %x, %bb.0, %y, %bb.1557 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */558 ; CHECK-NEXT: $v8 = COPY %z559 ; CHECK-NEXT: PseudoBR %bb.1560 bb.0:561 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */562 bb.1:563 %y:vr = PHI %x, %bb.0, %y, %bb.1564 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */565 $v8 = COPY %z566 PseudoBR %bb.1567...568---569name: phi_cycle_indirect570tracksRegLiveness: true571body: |572 ; CHECK-LABEL: name: phi_cycle_indirect573 ; CHECK: bb.0:574 ; CHECK-NEXT: successors: %bb.1(0x80000000)575 ; CHECK-NEXT: {{ $}}576 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */577 ; CHECK-NEXT: {{ $}}578 ; CHECK-NEXT: bb.1:579 ; CHECK-NEXT: successors: %bb.1(0x80000000)580 ; CHECK-NEXT: {{ $}}581 ; CHECK-NEXT: %y:vr = PHI %x, %bb.0, %z, %bb.1582 ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */583 ; CHECK-NEXT: $v8 = COPY %z584 ; CHECK-NEXT: PseudoBR %bb.1585 bb.0:586 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */587 bb.1:588 %y:vr = PHI %x, %bb.0, %z, %bb.1589 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */590 $v8 = COPY %z591 PseudoBR %bb.1592...593---594name: EMUL_is_unknown595tracksRegLiveness: true596body: |597 bb.0.entry:598 ; CHECK-LABEL: name: EMUL_is_unknown599 ; CHECK: [[PseudoVMCLR_M_B4_:%[0-9]+]]:vr = PseudoVMCLR_M_B4 1, 0 /* e8 */600 ; CHECK-NEXT: [[PseudoVMOR_MM_B4_:%[0-9]+]]:vmv0 = PseudoVMOR_MM_B4 [[PseudoVMCLR_M_B4_]], [[PseudoVMCLR_M_B4_]], 1, 0 /* e8 */601 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x0602 ; CHECK-NEXT: [[PseudoVMV_S_X:%[0-9]+]]:vr = PseudoVMV_S_X $noreg, [[COPY]], 1, 5 /* e32 */603 ; CHECK-NEXT: [[PseudoVMV_V_I_M8_:%[0-9]+]]:vrm8 = PseudoVMV_V_I_M8 $noreg, 0, 1, 5 /* e32 */, 0 /* tu, mu */604 ; CHECK-NEXT: [[PseudoVREDMAX_VS_M8_E32_MASK:%[0-9]+]]:vrnov0 = PseudoVREDMAX_VS_M8_E32_MASK $noreg, killed [[PseudoVMV_V_I_M8_]], killed [[PseudoVMV_S_X]], [[PseudoVMOR_MM_B4_]], 1, 5 /* e32 */, 1 /* ta, mu */605 ; CHECK-NEXT: [[PseudoVMV_X_S:%[0-9]+]]:gpr = PseudoVMV_X_S killed [[PseudoVREDMAX_VS_M8_E32_MASK]], 5 /* e32 */606 ; CHECK-NEXT: $x10 = COPY [[PseudoVMV_X_S]]607 ; CHECK-NEXT: PseudoRET implicit $x10608 %2:vr = PseudoVMCLR_M_B4 -1, 0 /* e8 */609 %3:vmv0 = PseudoVMOR_MM_B4 %2, %2, 1, 0 /* e8 */610 %4:gpr = COPY $x0611 %5:vr = PseudoVMV_S_X $noreg, %4, 1, 5 /* e32 */612 %6:vrm8 = PseudoVMV_V_I_M8 $noreg, 0, 1, 5 /* e32 */, 0 /* tu, mu */613 %7:vrnov0 = PseudoVREDMAX_VS_M8_E32_MASK $noreg, killed %6, killed %5, %3, 1, 5 /* e32 */, 1 /* ta, mu */614 %9:gpr = PseudoVMV_X_S killed %7, 5 /* e32 */615 $x10 = COPY %9616 PseudoRET implicit $x10617...618---619name: vleff_imm620body: |621 bb.0:622 ; CHECK-LABEL: name: vleff_imm623 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 3 /* ta, ma */624 ; CHECK-NEXT: %y:vr, %vl:gprnox0 = PseudoVLE8FF_V_M1 $noreg, $noreg, 1, 3 /* e8 */, 3 /* ta, ma */625 ; CHECK-NEXT: PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */626 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 3 /* ta, ma */627 %y:vr, %vl:gprnox0 = PseudoVLE8FF_V_M1 $noreg, $noreg, 1, 3 /* e8 */, 3 /* ta, ma */628 PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */629...630---631name: vleff_reg_dominates632body: |633 bb.0:634 liveins: $x8635 ; CHECK-LABEL: name: vleff_reg_dominates636 ; CHECK: liveins: $x8637 ; CHECK-NEXT: {{ $}}638 ; CHECK-NEXT: %avl:gprnox0 = COPY $x8639 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, %avl, 3 /* e8 */, 3 /* ta, ma */640 ; CHECK-NEXT: %y:vr, %vl:gprnox0 = PseudoVLE8FF_V_M1 $noreg, $noreg, %avl, 3 /* e8 */, 3 /* ta, ma */641 ; CHECK-NEXT: PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */642 %avl:gprnox0 = COPY $x8643 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 3 /* ta, ma */644 %y:vr, %vl:gprnox0 = PseudoVLE8FF_V_M1 $noreg, $noreg, %avl, 3 /* e8 */, 3 /* ta, ma */645 PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */646...647---648name: vleff_reg_doesnt_dominate649body: |650 bb.0:651 liveins: $x8652 ; CHECK-LABEL: name: vleff_reg_doesnt_dominate653 ; CHECK: liveins: $x8654 ; CHECK-NEXT: {{ $}}655 ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 3 /* ta, ma */656 ; CHECK-NEXT: %avl:gprnox0 = COPY $x8657 ; CHECK-NEXT: %y:vr, %vl:gprnox0 = PseudoVLE8FF_V_M1 $noreg, $noreg, %avl, 3 /* e8 */, 3 /* ta, ma */658 ; CHECK-NEXT: PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */659 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 3 /* ta, ma */660 %avl:gprnox0 = COPY $x8661 %y:vr, %vl:gprnox0 = PseudoVLE8FF_V_M1 $noreg, $noreg, %avl, 3 /* e8 */, 3 /* ta, ma */662 PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */663...664---665name: vleff_mask_imm666body: |667 bb.0:668 ; CHECK-LABEL: name: vleff_mask_imm669 ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 3 /* ta, ma */670 ; CHECK-NEXT: %y:vrnov0, %vl:gprnox0 = PseudoVLE8FF_V_M1_MASK $noreg, $noreg, $noreg, 1, 3 /* e8 */, 3 /* ta, ma */671 ; CHECK-NEXT: PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */672 %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 3 /* ta, ma */673 %y:vrnov0, %vl:gprnox0 = PseudoVLE8FF_V_M1_MASK $noreg, $noreg, $noreg, 1, 3 /* e8 */, 3 /* ta, ma */674 PseudoVSE8_V_M1 %x, $noreg, %vl, 3 /* e8 */675...676---677name: insert_subreg_bitcast_no_peekthru678body: |679 bb.0:680 liveins: $v8, $v9, $v10681 682 ; We should not peekthrough an INSERT_SUBREG if any of its users is not a segmented store or another INSERT_SUBREG.683 ; CHECK-LABEL: name: insert_subreg_bitcast_no_peekthru684 ; CHECK: liveins: $v8, $v9, $v10685 ; CHECK-NEXT: {{ $}}686 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8687 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vr = COPY $v9688 ; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */689 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vr = COPY $v10690 ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn4m1 = IMPLICIT_DEF691 ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn4m1 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub_vrm1_0692 ; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vrn4m1 = INSERT_SUBREG [[INSERT_SUBREG]], [[COPY1]], %subreg.sub_vrm1_1693 ; CHECK-NEXT: [[INSERT_SUBREG2:%[0-9]+]]:vrn4m1 = INSERT_SUBREG [[INSERT_SUBREG1]], [[PseudoVADD_VV_M1_]], %subreg.sub_vrm1_2694 ; CHECK-NEXT: [[INSERT_SUBREG3:%[0-9]+]]:vrn4m1 = INSERT_SUBREG [[INSERT_SUBREG2]], [[COPY2]], %subreg.sub_vrm1_3695 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vrm4 = COPY [[INSERT_SUBREG3]]696 ; CHECK-NEXT: PseudoVSE32_V_M4 [[COPY3]], $noreg, 1, 5 /* e32 */697 ; CHECK-NEXT: [[PseudoVADD_VV_M1_1:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, [[PseudoVADD_VV_M1_]], $noreg, 10, 5 /* e32 */, 3 /* ta, ma */698 ; CHECK-NEXT: $v10 = COPY [[PseudoVADD_VV_M1_1]]699 ; CHECK-NEXT: PseudoRET implicit $v10700 %0:vr = COPY $v8701 %1:vr = COPY $v9702 %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */703 %3:vr = COPY $v10704 %6:vrn4m1 = IMPLICIT_DEF705 %5:vrn4m1 = INSERT_SUBREG %6, %0, %subreg.sub_vrm1_0706 %7:vrn4m1 = INSERT_SUBREG %5, %1, %subreg.sub_vrm1_1707 %8:vrn4m1 = INSERT_SUBREG %7, %2, %subreg.sub_vrm1_2708 %9:vrn4m1 = INSERT_SUBREG %8, %3, %subreg.sub_vrm1_3709 %10:vrm4 = COPY %9710 PseudoVSE32_V_M4 %10:vrm4, $noreg, 1, 5 /* e32 */711 %11:vr = PseudoVADD_VV_M1 $noreg, %2, $noreg, 10, 5 /* e32 */, 3 /* ta, ma */712 $v10 = COPY %11713 PseudoRET implicit $v10714...715---716name: recurrence717tracksRegLiveness: true718body: |719 ; CHECK-LABEL: name: recurrence720 ; CHECK: bb.0:721 ; CHECK-NEXT: successors: %bb.1(0x80000000)722 ; CHECK-NEXT: liveins: $x8723 ; CHECK-NEXT: {{ $}}724 ; CHECK-NEXT: %avl:gprnox0 = COPY $x8725 ; CHECK-NEXT: %start:vr = PseudoVMV_V_I_M1 $noreg, 0, %avl, 3 /* e8 */, 3 /* ta, ma */726 ; CHECK-NEXT: PseudoBR %bb.1727 ; CHECK-NEXT: {{ $}}728 ; CHECK-NEXT: bb.1:729 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)730 ; CHECK-NEXT: {{ $}}731 ; CHECK-NEXT: %phi:vr = PHI %start, %bb.0, %inc, %bb.1732 ; CHECK-NEXT: %inc:vr = PseudoVADD_VI_M1 $noreg, %phi, 1, %avl, 3 /* e8 */, 3 /* ta, ma */733 ; CHECK-NEXT: BNE $noreg, $noreg, %bb.1734 ; CHECK-NEXT: {{ $}}735 ; CHECK-NEXT: bb.2:736 ; CHECK-NEXT: PseudoVSE8_V_M1 %inc, $noreg, %avl, 3 /* e8 */737 bb.0:738 liveins: $x8739 %avl:gprnox0 = COPY $x8740 %start:vr = PseudoVMV_V_I_M1 $noreg, 0, -1, 3 /* e8 */, 3, /* ta, ma */741 PseudoBR %bb.1742 bb.1:743 %phi:vr = PHI %start, %bb.0, %inc, %bb.1744 %inc:vr = PseudoVADD_VI_M1 $noreg, %phi, 1, -1, 3 /* e8 */, 3 /* ta, ma */745 BNE $noreg, $noreg, %bb.1746 bb.2:747 PseudoVSE8_V_M1 %inc, $noreg, %avl, 3 /* e8 */748...749---750name: recurrence_cant_reduce751tracksRegLiveness: true752body: |753 ; CHECK-LABEL: name: recurrence_cant_reduce754 ; CHECK: bb.0:755 ; CHECK-NEXT: successors: %bb.1(0x80000000)756 ; CHECK-NEXT: liveins: $x8, $x9757 ; CHECK-NEXT: {{ $}}758 ; CHECK-NEXT: %avl1:gprnox0 = COPY $x8759 ; CHECK-NEXT: %avl2:gprnox0 = COPY $x8760 ; CHECK-NEXT: %start:vr = PseudoVMV_V_I_M1 $noreg, 0, %avl1, 3 /* e8 */, 3 /* ta, ma */761 ; CHECK-NEXT: PseudoBR %bb.1762 ; CHECK-NEXT: {{ $}}763 ; CHECK-NEXT: bb.1:764 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)765 ; CHECK-NEXT: {{ $}}766 ; CHECK-NEXT: %phi:vr = PHI %start, %bb.0, %inc, %bb.1767 ; CHECK-NEXT: %inc:vr = PseudoVADD_VI_M1 $noreg, %phi, 1, %avl1, 3 /* e8 */, 3 /* ta, ma */768 ; CHECK-NEXT: BNE $noreg, $noreg, %bb.1769 ; CHECK-NEXT: {{ $}}770 ; CHECK-NEXT: bb.2:771 ; CHECK-NEXT: PseudoVSE8_V_M1 %inc, $noreg, %avl2, 3 /* e8 */772 bb.0:773 liveins: $x8, $x9774 %avl1:gprnox0 = COPY $x8775 %avl2:gprnox0 = COPY $x8776 %start:vr = PseudoVMV_V_I_M1 $noreg, 0, -1, 3 /* e8 */, 3, /* ta, ma */777 PseudoBR %bb.1778 bb.1:779 %phi:vr = PHI %start, %bb.0, %inc, %bb.1780 %inc:vr = PseudoVADD_VI_M1 $noreg, %phi, 1, %avl1, 3 /* e8 */, 3 /* ta, ma */781 BNE $noreg, $noreg, %bb.1782 bb.2:783 PseudoVSE8_V_M1 %inc, $noreg, %avl2, 3 /* e8 */784...785---786name: dbg_value787body: |788 bb.0:789 ; CHECK-LABEL: name: dbg_value790 ; CHECK: DBG_VALUE %0:vr791 DBG_VALUE %0:vr792...793---794name: vslidedown_vx795tracksRegLiveness: true796body: |797 bb.0:798 liveins: $x8799 ; CHECK-LABEL: name: vslidedown_vx800 ; CHECK: liveins: $x8801 ; CHECK-NEXT: {{ $}}802 ; CHECK-NEXT: %x:gprnox0 = COPY $x8803 ; CHECK-NEXT: %y:gprnox0 = ADDI %x, -1804 ; CHECK-NEXT: %v:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, %x, 5 /* e32 */, 0 /* tu, mu */805 ; CHECK-NEXT: %w:vr = PseudoVSLIDEDOWN_VX_M1 $noreg, %v, %y, 1, 5 /* e32 */, 0 /* tu, mu */806 %x:gpr = COPY $x8807 %y:gprnox0 = ADDI %x, -1808 %v:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */809 %w:vr = PseudoVSLIDEDOWN_VX_M1 $noreg, %v, %y, 1, 5 /* e32 */, 0 /* tu, mu */810...811---812# Make sure we ignore LIs (ADDI $x0, -1)813name: vslidedown_vx_li814tracksRegLiveness: true815body: |816 bb.0:817 liveins: $x8818 ; CHECK-LABEL: name: vslidedown_vx_li819 ; CHECK: liveins: $x8820 ; CHECK-NEXT: {{ $}}821 ; CHECK-NEXT: %y:gprnox0 = ADDI $x0, -1822 ; CHECK-NEXT: %v:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */823 ; CHECK-NEXT: %w:vr = PseudoVSLIDEDOWN_VX_M1 $noreg, %v, %y, 1, 5 /* e32 */, 0 /* tu, mu */824 %y:gprnox0 = ADDI $x0, -1825 %v:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */826 %w:vr = PseudoVSLIDEDOWN_VX_M1 $noreg, %v, %y, 1, 5 /* e32 */, 0 /* tu, mu */827...828