brintos

brintos / llvm-project-archived public Read only

0
0
Text · 34.1 KiB · 2eeddad Raw
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