| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 |
| # RUN: llc %s -o - -mtriple=riscv64 -mattr=+v -run-pass=riscv-vl-optimizer -verify-machineinstrs | FileCheck %s |
| |
| --- |
| name: vop_vi |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vi |
| ; CHECK: %x:vr = PseudoVADD_VI_M1 $noreg, $noreg, 9, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VI_M1 $noreg, $noreg, 9, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vi_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vi_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VI_M1 $noreg, $noreg, 9, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VI_M1 $noreg, $noreg, 9, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vi_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vi_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VI_M1 $noreg, $noreg, 9, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VI_M1 $noreg, $noreg, 9, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vv |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vv |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vv_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vv_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vv_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vv_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_vv_vd |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vd |
| ; CHECK: early-clobber %x:vr = PseudoVWADD_VV_MF2 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVWADD_VV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_vv_vd_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vd_incompatible_eew |
| ; CHECK: early-clobber %x:vr = PseudoVWADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVWADD_VV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_vv_vd_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vd_incompatible_emul |
| ; CHECK: early-clobber %x:vr = PseudoVWADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVWADD_VV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 4 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_vv_vd_passthru_use |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vd_passthru_use |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVWADD_VV_MF2 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWADD_VV_MF2 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vwop_vv_vd_passthru_use_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vd_passthru_use_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVWADD_VV_MF2 %x, $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWADD_VV_MF2 %x, $noreg, $noreg, 1, 4 /* e16 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vwop_vv_vd_passthru_use_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vd_passthru_use_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVWADD_VV_MF4 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWADD_VV_MF4 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vwop_vv_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vs2 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrm2 = PseudoVWADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vwop_vv_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vs2_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrm2 = PseudoVWADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vwop_vv_vs2_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vs2_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVWADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVWADD_VV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_vv_vs1 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vs1 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrm2 = PseudoVWADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vwop_vv_vs1_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vs1_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_VV_M1 $noreg, $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrm2 = PseudoVWADD_VV_M1 $noreg, $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vwop_vv_vs1_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_vv_vs1_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVWADD_VV_MF2 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVWADD_VV_MF2 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_wv_vd |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vd |
| ; CHECK: early-clobber %x:vr = PseudoVWADD_WV_MF2 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVWADD_WV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_wv_vd_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vd_incompatible_eew |
| ; CHECK: early-clobber %x:vr = PseudoVWADD_WV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVWADD_WV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_wv_vd_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vd_incompatible_emul |
| ; CHECK: early-clobber %x:vr = PseudoVWADD_WV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVWADD_WV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 4 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_wv_vd_passthru_use |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vd_passthru_use |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVWADD_WV_MF2 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWADD_WV_MF2 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vwop_wv_vd_passthru_use_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vd_passthru_use_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVWADD_WV_MF2 %x, $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWADD_WV_MF2 %x, $noreg, $noreg, 1, 4 /* e16 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vwop_wv_vd_passthru_use_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vd_passthru_use_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVWADD_WV_MF4 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWADD_WV_MF4 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vwop_wv_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vs2 |
| ; CHECK: %x:vrm2 = PseudoVADD_VV_M2 $noreg, $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_WV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vrm2 = PseudoVADD_VV_M2 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vrm2 = PseudoVWADD_WV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vwop_wv_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vs2_incompatible_eew |
| ; CHECK: %x:vrm2 = PseudoVADD_VV_M2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_WV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vrm2 = PseudoVADD_VV_M2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrm2 = PseudoVWADD_WV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vwop_wv_vs2_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vs2_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVWADD_WV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWADD_WV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwop_wv_vs1 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vs1 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_WV_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrm2 = PseudoVWADD_WV_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vwop_wv_vs1_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vs1_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_WV_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vrm2 = PseudoVWADD_WV_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vwop_wv_vs1_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwop_wv_vs1_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_WV_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrm2 = PseudoVWADD_WV_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: tied_vwop_wv_vs1 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: tied_vwop_wv_vs1 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_WV_M1_TIED $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrm2 = PseudoVWADD_WV_M1_TIED $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: tied_vwop_wv_vs1_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: tied_vwop_wv_vs1_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_WV_M1_TIED $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vrm2 = PseudoVWADD_WV_M1_TIED $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: tied_vwop_wv_vs1_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: tied_vwop_wv_vs1_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vrm2 = PseudoVWADD_WV_M1_TIED $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrm2 = PseudoVWADD_WV_M1_TIED $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vop_vf2_vd |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf2_vd |
| ; CHECK: early-clobber %x:vr = PseudoVZEXT_VF2_M1 $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVZEXT_VF2_M1 $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf2_vd_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf2_vd_incompatible_eew |
| ; CHECK: early-clobber %x:vr = PseudoVZEXT_VF2_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVZEXT_VF2_M1 $noreg, $noreg, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf2_vd_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf2_vd_incompatible_emul |
| ; CHECK: early-clobber %x:vr = PseudoVZEXT_VF2_MF2 $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVZEXT_VF2_MF2 $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf2_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf2_vs2 |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVZEXT_VF2_M1 $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVZEXT_VF2_M1 $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf2_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf2_vs2_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVZEXT_VF2_M1 $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVZEXT_VF2_M1 $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf2_vs2_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf2_vs2_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVZEXT_VF2_M1 $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVZEXT_VF2_M1 $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf4_vd |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf4_vd |
| ; CHECK: early-clobber %x:vr = PseudoVZEXT_VF4_M1 $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVZEXT_VF4_M1 $noreg, $noreg, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf4_vd_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf4_vd_incompatible_eew |
| ; CHECK: early-clobber %x:vr = PseudoVZEXT_VF4_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVZEXT_VF4_M1 $noreg, $noreg, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf4_vd_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf4_vd_incompatible_emul |
| ; CHECK: early-clobber %x:vr = PseudoVZEXT_VF4_MF2 $noreg, $noreg, -1 /* vl=VLMAX */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVZEXT_VF4_MF2 $noreg, $noreg, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf4_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf4_vs2 |
| ; CHECK: %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVZEXT_VF4_M1 $noreg, %x, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVZEXT_VF4_M1 $noreg, %x, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf4_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf4_vs2_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVZEXT_VF4_M1 $noreg, %x, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVZEXT_VF4_M1 $noreg, %x, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf4_vs2_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf4_vs2_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVZEXT_VF4_M1 $noreg, %x, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVZEXT_VF4_M1 $noreg, %x, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf8_vd |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf8_vd |
| ; CHECK: early-clobber %x:vr = PseudoVZEXT_VF8_M1 $noreg, $noreg, 1 /* vl */, 6 /* e64 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 6 /* e64 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVZEXT_VF8_M1 $noreg, $noreg, -1, 6 /* e64 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 6 /* e64 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf8_vd_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf8_vd_incompatible_eew |
| ; CHECK: early-clobber %x:vr = PseudoVZEXT_VF8_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 6 /* e64 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVZEXT_VF8_M1 $noreg, $noreg, -1, 6 /* e64 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf8_vd_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf8_vd_incompatible_emul |
| ; CHECK: early-clobber %x:vr = PseudoVZEXT_VF8_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 6 /* e64 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 6 /* e64 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVZEXT_VF8_M1 $noreg, $noreg, -1, 6 /* e64 */, 0 |
| %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 6 /* e64 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf8_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf8_vs2 |
| ; CHECK: %x:vr = PseudoVADD_VV_MF8 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVZEXT_VF8_M1 $noreg, %x, 1 /* vl */, 6 /* e64 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF8 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVZEXT_VF8_M1 $noreg, %x, 1, 6 /* e64 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf8_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf8_vs2_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_MF8 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVZEXT_VF8_M1 $noreg, %x, 1 /* vl */, 6 /* e64 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF8 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVZEXT_VF8_M1 $noreg, %x, 1, 6 /* e64 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vop_vf8_vs2_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vop_vf8_vs2_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVZEXT_VF8_M1 $noreg, %x, 1 /* vl */, 6 /* e64 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVZEXT_VF8_M1 $noreg, %x, 1, 6 /* e64 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vnop_wv_vd |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vd |
| ; CHECK: early-clobber %x:vr = PseudoVNSRL_WV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVNSRL_WV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vnop_wv_vd_unsupported_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vd_unsupported_eew |
| ; CHECK: early-clobber %x:vr = PseudoVNSRL_WV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVNSRL_WV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vnop_wv_vd_unsupported_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vd_unsupported_emul |
| ; CHECK: %x:vr = PseudoVNSRL_WV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVNSRL_WV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vnop_wv_vd_passthru_use |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vd_passthru_use |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVNSRL_WV_M1 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVNSRL_WV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vnop_wv_vd_passthru_use_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vd_passthru_use_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVNSRL_WV_M1 %x, $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVNSRL_WV_M1 %x, $noreg, $noreg, 1, 4 /* e16 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vnop_wv_vd_passthru_use_unsupported_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vd_passthru_use_unsupported_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVNSRL_WV_MF2 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVNSRL_WV_MF2 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vnop_wv_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vs2 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVNSRL_WV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVNSRL_WV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vnop_wv_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vs2_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVNSRL_WV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVNSRL_WV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vnop_wv_vs2_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vs2_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVNSRL_WV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVNSRL_WV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vnop_wv_vs1 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vs1 |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVNSRL_WV_MF2 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVNSRL_WV_MF2 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vnop_wv_vs1_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vs1_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVNSRL_WV_MF2 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVNSRL_WV_MF2 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vnop_wv_vs1_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vnop_wv_vs1_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVNSRL_WV_MF2 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF4 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVNSRL_WV_MF2 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vfnop_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfnop_vs2 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVFNCVT_X_F_W_MF2 $noreg, %x, 0 /* frm=rne */, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| early-clobber %y:vr = PseudoVFNCVT_X_F_W_MF2 $noreg, %x, 0, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vfnop_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfnop_vs2_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVFNCVT_X_F_W_MF2 $noreg, %x, 0 /* frm=rne */, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| early-clobber %y:vr = PseudoVFNCVT_X_F_W_MF2 $noreg, %x, 0, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vfnop_vs2_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfnop_vs2_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVFNCVT_X_F_W_MF2 $noreg, %x, 0 /* frm=rne */, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| early-clobber %y:vr = PseudoVFNCVT_X_F_W_MF2 $noreg, %x, 0, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vseN_v |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vseN_v |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSE8_V_M1 %x, $noreg, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| PseudoVSE8_V_M1 %x, $noreg, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vseN_v_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vseN_v_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSE8_V_M1 %x, $noreg, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| PseudoVSE8_V_M1 %x, $noreg, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vseN_v_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vseN_v_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSE8_V_MF2 %x, $noreg, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| PseudoVSE8_V_MF2 %x, $noreg, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vsm_v |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsm_v |
| ; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: PseudoVSM_V_B8 %x, $noreg, 1 /* vl */, 0 /* e8 */ |
| %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| PseudoVSM_V_B8 %x, $noreg, 1, 0 |
| ... |
| --- |
| name: vsm_v_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsm_v_incompatible_emul |
| ; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: PseudoVSM_V_B16 %x, $noreg, 1 /* vl */, 0 /* e8 */ |
| %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| PseudoVSM_V_B16 %x, $noreg, 1, 0 |
| ... |
| --- |
| name: vleN_v |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vleN_v |
| ; CHECK: %x:vr = PseudoVLE8_V_M1 $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVLE8_V_M1 $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vleN_v_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vleN_v_incompatible_eew |
| ; CHECK: %x:vr = PseudoVLE8_V_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVLE8_V_M1 $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vleN_v_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vleN_v_incompatible_emul |
| ; CHECK: %x:vr = PseudoVLE8_V_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVLE8_V_M1 $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vlm_v |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vlm_v |
| ; CHECK: %x:vr = PseudoVLM_V_B8 $noreg, $noreg, 1 /* vl */, 0 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0, 0 |
| %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vlm_v_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vlm_v_incompatible_eew |
| ; CHECK: %x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vlm_v_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vlm_v_incompatible_emul |
| ; CHECK: %x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0, 0 |
| %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vsseN_v |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsseN_v |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSSE8_V_M1 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| PseudoVSSE8_V_M1 %x, $noreg, $noreg, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vsseN_v_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsseN_v_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSSE8_V_M1 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| PseudoVSSE8_V_M1 %x, $noreg, $noreg, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vsseN_v_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsseN_v_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSSE8_V_MF2 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| PseudoVSSE8_V_MF2 %x, $noreg, $noreg, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vsuxeiN_v_data |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsuxeiN_v_data |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSUXEI8_V_M1_M1 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| PseudoVSUXEI8_V_M1_M1 %x, $noreg, $noreg, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vsuxeiN_v_data_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsuxeiN_v_data_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSUXEI8_V_M1_M1 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| PseudoVSUXEI8_V_M1_M1 %x, $noreg, $noreg, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vsuxeiN_v_data_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsuxeiN_v_data_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSUXEI8_V_MF2_MF2 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| PseudoVSUXEI8_V_MF2_MF2 %x, $noreg, $noreg, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vsuxeiN_v_idx |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsuxeiN_v_idx |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSUXEI8_V_M1_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| PseudoVSUXEI8_V_M1_M1 $noreg, $noreg, %x, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vsuxeiN_v_idx_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsuxeiN_v_idx_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSUXEI8_V_M1_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| PseudoVSUXEI8_V_M1_M1 $noreg, $noreg, %x, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vsuxeiN_v_idx_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vsuxeiN_v_idx_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: PseudoVSUXEI8_V_MF2_MF2 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| PseudoVSUXEI8_V_MF2_MF2 $noreg, $noreg, %x, 1, 3 /* e8 */ |
| ... |
| --- |
| name: vluxeiN_v_data |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vluxeiN_v_data |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vluxeiN_v_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vluxeiN_v_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vluxeiN_v_data_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vluxeiN_v_data_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVLUXEI8_V_MF2_MF2 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVLUXEI8_V_MF2_MF2 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vluxeiN_v_idx |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vluxeiN_v_idx |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVLUXEI8_V_MF2_M1 $noreg, $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVLUXEI8_V_MF2_M1 $noreg, $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vluxeiN_v_idx_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vluxeiN_v_idx_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vluxeiN_v_idx_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vluxeiN_v_idx_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVLUXEI8_V_MF2_MF2 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVLUXEI8_V_MF2_MF2 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vluxeiN_v_vd |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vluxeiN_v_vd |
| ; CHECK: %x:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vluxeiN_v_vd_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vluxeiN_v_vd_incompatible_eew |
| ; CHECK: %x:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vluxeiN_vd_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vluxeiN_vd_incompatible_emul |
| ; CHECK: %x:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_mm |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_mm |
| ; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_mm_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_mm_incompatible_eew |
| ; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_mm_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_mm_incompatible_emul |
| ; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_mm_mask |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_mm_mask |
| ; CHECK: %x:vmv0 = PseudoVMAND_MM_B8 $noreg, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVADD_VV_M1_MASK $noreg, $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vmv0 = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:vrnov0 = PseudoVADD_VV_M1_MASK $noreg, $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_mm_mask_larger_emul_user |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_mm_mask_larger_emul_user |
| ; CHECK: %x:vmv0 = PseudoVMAND_MM_B8 $noreg, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vrm2nov0 = PseudoVADD_VV_M2_MASK $noreg, $noreg, $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vmv0 = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:vrm2nov0 = PseudoVADD_VV_M2_MASK $noreg, $noreg, $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vmop_mm_mask_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_mm_mask_incompatible_emul |
| ; CHECK: %x:vmv0 = PseudoVMAND_MM_B8 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVADD_VV_MF2_MASK $noreg, $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vmv0 = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:vrnov0 = PseudoVADD_VV_MF2_MASK $noreg, $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_vv |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv |
| ; CHECK: %x:vr = PseudoVMSEQ_VV_M1 $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1, 3 /* e8 */ |
| %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_vv_maskuser |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_maskuser |
| ; CHECK: %x:vmv0 = PseudoVMSEQ_VV_M1 $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVADD_VV_M1_MASK $noreg, $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vmv0 = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1, 3 /* e8 */ |
| %y:vrnov0 = PseudoVADD_VV_M1_MASK $noreg, $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_vv_maskuser_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_maskuser_incompatible_eew |
| ; CHECK: %x:vmv0 = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVADD_VV_M1_MASK $noreg, $noreg, $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vmv0 = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1, 3 /* e8 */ |
| %y:vrnov0 = PseudoVADD_VV_M1_MASK $noreg, $noreg, $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_vv_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_incompatible_emul |
| ; CHECK: %x:vr = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1, 3 /* e8 */ |
| %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_vv_maskuser_incompaible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_maskuser_incompaible_emul |
| ; CHECK: %x:vmv0 = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVADD_VV_MF2_MASK $noreg, $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vmv0 = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1, 3 /* e8 */ |
| %y:vrnov0 = PseudoVADD_VV_MF2_MASK $noreg, $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_vv_maskuser_larger_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_maskuser_larger_emul |
| ; CHECK: %x:vmv0 = PseudoVMSEQ_VV_M1 $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: %y:vrm2nov0 = PseudoVADD_VV_M2_MASK $noreg, $noreg, $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8m2 = COPY %y |
| %x:vmv0 = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1, 3 /* e8 */ |
| %y:vrm2nov0 = PseudoVADD_VV_M2_MASK $noreg, $noreg, $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8m2 = COPY %y |
| ... |
| --- |
| name: vmop_vv_consumer_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_consumer_incompatible_eew |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMSEQ_VV_M1 $noreg, %x, 1 /* vl */, 4 /* e16 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVMSEQ_VV_M1 $noreg, %x, 1, 4 /* e16 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_vv_consumer_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_consumer_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMSEQ_VV_MF2 $noreg, %x, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVMSEQ_VV_MF2 $noreg, %x, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmop_vv_passthru_use |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_passthru_use |
| ; CHECK: %x:vrnov0 = PseudoVMAND_MM_B8 $noreg, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMSEQ_VV_M1_MASK %x, $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 1 /* ta, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVMAND_MM_B8 %y, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vrnov0 = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 /* e1 */ |
| %y:vrnov0 = PseudoVMSEQ_VV_M1_MASK %x, $noreg, $noreg, $noreg, 1, 3 /* e8 */, 1 |
| %z:vr = PseudoVMAND_MM_B8 %y, $noreg, 1, 0 /* e1 */ |
| $v8 = COPY %z |
| ... |
| --- |
| name: vmop_vv_passthru_use_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_passthru_use_incompatible_eew |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMSEQ_VV_M1_MASK %x, $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 1 /* ta, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVMAND_MM_B8 %y, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrnov0 = PseudoVMSEQ_VV_M1_MASK %x, $noreg, $noreg, $noreg, 1, 3 /* e8 */, 1 |
| %z:vr = PseudoVMAND_MM_B8 %y, $noreg, 1, 0 /* e1 */ |
| $v8 = COPY %z |
| ... |
| --- |
| name: vmop_vv_passthru_use_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmop_vv_passthru_use_incompatible_emul |
| ; CHECK: %x:vrnov0 = PseudoVMAND_MM_B16 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMSEQ_VV_M1_MASK %x, $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 1 /* ta, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVMAND_MM_B8 %y, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vrnov0 = PseudoVMAND_MM_B16 $noreg, $noreg, -1, 0 /* e1 */ |
| %y:vrnov0 = PseudoVMSEQ_VV_M1_MASK %x, $noreg, $noreg, $noreg, 1, 3 /* e8 */, 1 |
| %z:vr = PseudoVMAND_MM_B8 %y, $noreg, 1, 0 /* e1 */ |
| $v8 = COPY %z |
| ... |
| --- |
| name: vmerge_vim |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmerge_vim |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMERGE_VIM_M1 $noreg, %x, 9, $v0, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrnov0 = PseudoVMERGE_VIM_M1 $noreg, %x, 9, $v0, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmerge_vim_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmerge_vim_incompatible_eew |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMERGE_VIM_M1 $noreg, %x, 9, $v0, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vrnov0 = PseudoVMERGE_VIM_M1 $noreg, %x, 9, $v0, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmerge_vim_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmerge_vim_incompatible_emul |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMERGE_VIM_MF2 $noreg, %x, 9, $v0, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrnov0 = PseudoVMERGE_VIM_MF2 $noreg, %x, 9, $v0, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmerge_vxm |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmerge_vxm |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMERGE_VXM_M1 $noreg, %x, $noreg, $v0, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrnov0 = PseudoVMERGE_VXM_M1 $noreg, %x, $noreg, $v0, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmerge_vxm_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmerge_vxm_incompatible_eew |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMERGE_VXM_M1 $noreg, %x, $noreg, $v0, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vrnov0 = PseudoVMERGE_VXM_M1 $noreg, %x, $noreg, $v0, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmerge_vxm_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmerge_vxm_incompatible_emul |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMERGE_VXM_MF2 $noreg, %x, $noreg, $v0, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrnov0 = PseudoVMERGE_VXM_MF2 $noreg, %x, $noreg, $v0, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmerge_vvm |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmerge_vvm |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMERGE_VVM_M1 $noreg, $noreg, %x, $v0, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrnov0 = PseudoVMERGE_VVM_M1 $noreg, $noreg, %x, $v0, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmerge_vvm_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmerge_vvm_incompatible_eew |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMERGE_VVM_M1 $noreg, $noreg, %x, $v0, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vrnov0 = PseudoVMERGE_VVM_M1 $noreg, $noreg, %x, $v0, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmerge_vvm_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmerge_vvm_incompatible_emul |
| ; CHECK: %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vrnov0 = PseudoVMERGE_VVM_MF2 $noreg, $noreg, %x, $v0, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vrnov0 = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vrnov0 = PseudoVMERGE_VVM_MF2 $noreg, $noreg, %x, $v0, 1, 3 /* e8 */ |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmv_v_i |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmv_v_i |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMV_V_I_M1 %x, 9, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVMV_V_I_M1 %x, 9, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmv_v_i_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmv_v_i_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMV_V_I_M1 %x, 9, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVMV_V_I_M1 %x, 9, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmv_v_i_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmv_v_i_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMV_V_I_MF2 %x, 9, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVMV_V_I_MF2 %x, 9, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmv_v_x |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmv_v_x |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMV_V_X_M1 %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVMV_V_X_M1 %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmv_v_x_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmv_v_x_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMV_V_X_M1 %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVMV_V_X_M1 %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmv_v_x_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmv_v_x_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMV_V_X_MF2 %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVMV_V_X_MF2 %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmv_v_v |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmv_v_v |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMV_V_V_M1 $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVMV_V_V_M1 $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmv_v_v_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmv_v_v_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMV_V_V_M1 $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVMV_V_V_M1 $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmv_v_v_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmv_v_v_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVMV_V_V_MF2 $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVMV_V_V_MF2 $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: viota_m_dest |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_dest |
| ; CHECK: early-clobber %x:vr = PseudoVIOTA_M_M1 $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVIOTA_M_M1 $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: viota_m_dest_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_dest_incompatible_eew |
| ; CHECK: early-clobber %x:vr = PseudoVIOTA_M_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVIOTA_M_M1 $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: viota_m_dest_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_dest_incompatible_emul |
| ; CHECK: early-clobber %x:vr = PseudoVIOTA_M_M1 $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVIOTA_M_M1 $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: viota_m_dest_passthru_use |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_dest_passthru_use |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVIOTA_M_M1 %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVIOTA_M_M1 %x, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: viota_m_dest_passthru_use_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_dest_passthru_use_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVIOTA_M_M1 %x, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVIOTA_M_M1 %x, $noreg, 1, 4 /* e16 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: viota_m_dest_passthru_use_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_dest_passthru_use_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVIOTA_M_MF2 %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVIOTA_M_MF2 %x, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: viota_m_mask |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_mask |
| ; CHECK: %x:vr = PseudoVMSEQ_VV_M1 $noreg, $noreg, 1 /* vl */, 3 /* e8 */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVIOTA_M_M1 $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMSEQ_VV_M1 $noreg, $noreg, -1, 3 /* e8 */ |
| %y:vr = PseudoVIOTA_M_M1 $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: viota_m_mask_scale_mask |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_mask_scale_mask |
| ; CHECK: early-clobber %x:vr = PseudoVMSEQ_VV_M2 $noreg, $noreg, 1 /* vl */, 4 /* e16 */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVIOTA_M_M1 $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMSEQ_VV_M2 $noreg, $noreg, -1, 4 /* e16 */ |
| %y:vr = PseudoVIOTA_M_M1 $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: viota_m_mask_incompatible_emul_from_sew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_mask_incompatible_emul_from_sew |
| ; CHECK: %x:vr = PseudoVMAND_MM_B1 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVIOTA_M_M1 $noreg, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMAND_MM_B1 $noreg, $noreg, -1, 0 |
| %y:vr = PseudoVIOTA_M_M1 $noreg, %x, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: viota_m_mask_incompatible_emul_from_lmul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: viota_m_mask_incompatible_emul_from_lmul |
| ; CHECK: %x:vr = PseudoVMAND_MM_B1 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVIOTA_M_MF2 $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMAND_MM_B1 $noreg, $noreg, -1, 0 |
| %y:vr = PseudoVIOTA_M_MF2 $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vred_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_vs2 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDAND_VS_M1_E8 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDAND_VS_M1_E8 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vred_vs1 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_vs1 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDAND_VS_M1_E8 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDAND_VS_M1_E8 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vred_vs1_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_vs1_vs2 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDAND_VS_M1_E8 $noreg, %x, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDAND_VS_M1_E8 $noreg, %x, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vred_vs1_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_vs1_vs2_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDAND_VS_M1_E8 $noreg, %x, %x, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDAND_VS_M1_E8 $noreg, %x, %x, 1, 4 /* e16 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vred_vs1_vs2_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_vs1_vs2_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDAND_VS_MF2_E8 $noreg, %x, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDAND_VS_MF2_E8 $noreg, %x, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vred_other_user_is_vl0 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_other_user_is_vl0 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 0 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| ; CHECK-NEXT: $v9 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 0, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| $v9 = COPY %z |
| ... |
| --- |
| name: vred_both_vl0 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_both_vl0 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, 0 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 0 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| ; CHECK-NEXT: $v9 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, 0, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 0, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| $v9 = COPY %z |
| ... |
| --- |
| name: vred_vl0_and_vlreg |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_vl0_and_vlreg |
| ; CHECK: %vl:gprnox0 = COPY $x1 |
| ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, %vl /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 0 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| ; CHECK-NEXT: $v9 = COPY %z |
| %vl:gprnox0 = COPY $x1 |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, %vl, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 0, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| $v9 = COPY %z |
| ... |
| --- |
| name: vred_vlreg_and_vl0 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_vlreg_and_vl0 |
| ; CHECK: %vl:gprnox0 = COPY $x1 |
| ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, 0 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| ; CHECK-NEXT: $v9 = COPY %z |
| %vl:gprnox0 = COPY $x1 |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, 0, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, %vl, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| $v9 = COPY %z |
| ... |
| --- |
| name: vred_other_user_is_vl2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vred_other_user_is_vl2 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 2 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 2 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| ; CHECK-NEXT: $v9 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 2, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| $v9 = COPY %z |
| ... |
| --- |
| name: vwred_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwred_vs2 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwred_vs1 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwred_vs1 |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwred_vs1_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwred_vs1_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwred_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwred_vs2_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwred_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwred_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_MF2_E8 $noreg, %x, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVWREDSUM_VS_MF2_E8 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vfred_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfred_vs2 |
| ; CHECK: %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0 /* frm=rne */, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVFREDMAX_VS_M1_E32 $noreg, %x, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVFREDMAX_VS_M1_E32 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vfred_vs1 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfred_vs1 |
| ; CHECK: %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0 /* frm=rne */, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVFREDMAX_VS_M1_E32 $noreg, $noreg, %x, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVFREDMAX_VS_M1_E32 $noreg, $noreg, %x, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vfred_vs1_vs2 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfred_vs1_vs2 |
| ; CHECK: %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0 /* frm=rne */, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVFREDMAX_VS_M1_E32 $noreg, %x, %x, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVFREDMAX_VS_M1_E32 $noreg, %x, %x, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vfred_vs1_vs2_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfred_vs1_vs2_incompatible_eew |
| ; CHECK: %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0 /* frm=rne */, -1 /* vl=VLMAX */, 6 /* e64 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVFREDMAX_VS_M1_E32 $noreg, %x, %x, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0, -1, 6 /* e64 */, 0 |
| %y:vr = PseudoVFREDMAX_VS_M1_E32 $noreg, %x, %x, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vfred_vs1_vs2_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfred_vs1_vs2_incompatible_emul |
| ; CHECK: %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0 /* frm=rne */, -1 /* vl=VLMAX */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVFREDMAX_VS_MF2_E32 $noreg, %x, %x, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = nofpexcept PseudoVFCVT_X_F_V_M1 $noreg, $noreg, 0, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVFREDMAX_VS_MF2_E32 $noreg, %x, %x, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vwred_passthru_use |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwred_passthru_use |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_MF2_E8 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWREDSUM_VS_MF2_E8 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vwred_passthru_use_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwred_passthru_use_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_MF2_E8 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:vr = PseudoVWREDSUM_VS_MF2_E8 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vwred_passthru_use_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vwred_passthru_use_incompatible_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_MF4_E8 %x, $noreg, $noreg, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1 /* vl */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %z |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVWREDSUM_VS_MF4_E8 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 |
| %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 |
| $v8 = COPY %z |
| ... |
| --- |
| name: vfirst_v |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfirst_v |
| ; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:gpr = PseudoVFIRST_M_B8 %x, 1 /* vl */, 0 /* e8 */ |
| %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:gpr = PseudoVFIRST_M_B8 %x, 1, 0 |
| ... |
| --- |
| name: vfirst_v_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfirst_v_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:gpr = PseudoVFIRST_M_B8 %x, 1 /* vl */, 0 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:gpr = PseudoVFIRST_M_B8 %x, 1, 0 |
| ... |
| --- |
| name: vfirst_v_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vfirst_v_incompatible_emul |
| ; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:gpr = PseudoVFIRST_M_B16 %x, 1 /* vl */, 0 /* e8 */ |
| %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:gpr = PseudoVFIRST_M_B16 %x, 1, 0 |
| ... |
| --- |
| name: vcpop_v |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vcpop_v |
| ; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:gpr = PseudoVCPOP_M_B8 %x, 1 /* vl */, 0 /* e8 */ |
| %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:gpr = PseudoVCPOP_M_B8 %x, 1, 0 |
| ... |
| --- |
| name: vcopop_v_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vcopop_v_incompatible_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:gpr = PseudoVCPOP_M_B8 %x, 1 /* vl */, 0 /* e8 */ |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 |
| %y:gpr = PseudoVCPOP_M_B8 %x, 1, 0 |
| ... |
| --- |
| name: vcpop_v_incompaitble_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vcpop_v_incompaitble_emul |
| ; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:gpr = PseudoVCPOP_M_B16 %x, 1 /* vl */, 0 /* e8 */ |
| %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 |
| %y:gpr = PseudoVCPOP_M_B16 %x, 1, 0 |
| ... |
| --- |
| name: vmclr_m |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmclr_m |
| ; CHECK: %x:vr = PseudoVMCLR_M_B8 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMCLR_M_B8 -1, 0 |
| %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmclr_m_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmclr_m_incompatible_eew |
| ; CHECK: %x:vr = PseudoVMCLR_M_B8 -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMCLR_M_B8 -1, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmclr_m_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmclr_m_incompatible_emul |
| ; CHECK: %x:vr = PseudoVMCLR_M_B8 -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMCLR_M_B8 -1, 0 |
| %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmset_m |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmset_m |
| ; CHECK: %x:vr = PseudoVMSET_M_B8 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMSET_M_B8 -1, 0 |
| %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmset_m_incompatible_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmset_m_incompatible_eew |
| ; CHECK: %x:vr = PseudoVMSET_M_B8 -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1 /* vl */, 3 /* e8 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMSET_M_B8 -1, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vmset_m_incompatible_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vmset_m_incompatible_emul |
| ; CHECK: %x:vr = PseudoVMSET_M_B8 -1 /* vl=VLMAX */, 0 /* e8 */ |
| ; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1 /* vl */, 0 /* e8 */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVMSET_M_B8 -1, 0 |
| %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vrgatherei16_vv |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vrgatherei16_vv |
| ; CHECK: early-clobber %x:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vrgatherei16_vv_incompatible_data_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vrgatherei16_vv_incompatible_data_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, %x, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vrgatherei16_vv_incompatible_index_eew |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vrgatherei16_vv_incompatible_index_eew |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, $noreg, %x, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, $noreg, %x, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vrgatherei16_vv_incompatible_dest_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vrgatherei16_vv_incompatible_dest_emul |
| ; CHECK: early-clobber %x:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vrgatherei16_vv_incompatible_source_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vrgatherei16_vv_incompatible_source_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, %x, $noreg, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_MF2 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 |
| %y:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, %x, $noreg, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vrgatherei16_vv_incompatible_index_emul |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: vrgatherei16_vv_incompatible_index_emul |
| ; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 4 /* e16 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: early-clobber %y:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, $noreg, %x, 1 /* vl */, 5 /* e32 */, 0 /* tu, mu */ |
| ; CHECK-NEXT: $v8 = COPY %y |
| %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 |
| %y:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, $noreg, %x, 1, 5 /* e32 */, 0 |
| $v8 = COPY %y |
| ... |
| --- |
| name: vsseg3e32_v |
| body: | |
| bb.0: |
| liveins: $v8 |
| |
| ; CHECK-LABEL: name: vsseg3e32_v |
| ; CHECK: liveins: $v8 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8 |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_1:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn3m1 = IMPLICIT_DEF |
| ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub_vrm1_0 |
| ; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG]], [[PseudoVADD_VV_M1_]], %subreg.sub_vrm1_1 |
| ; CHECK-NEXT: [[INSERT_SUBREG2:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG1]], [[PseudoVADD_VV_M1_1]], %subreg.sub_vrm1_2 |
| ; CHECK-NEXT: PseudoVSSEG3E32_V_M1 killed [[INSERT_SUBREG2]], $noreg, 1 /* vl */, 5 /* e32 */ |
| %0:vr = COPY $v8 |
| %1:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10, 5 /* e32 */, 3 /* ta, ma */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */ |
| %6:vrn3m1 = IMPLICIT_DEF |
| %5:vrn3m1 = INSERT_SUBREG %6, %0, %subreg.sub_vrm1_0 |
| %7:vrn3m1 = INSERT_SUBREG %5, %1, %subreg.sub_vrm1_1 |
| %8:vrn3m1 = INSERT_SUBREG %7, %2, %subreg.sub_vrm1_2 |
| PseudoVSSEG3E32_V_M1 killed %8, $noreg, 1, 5 /* e32 */ |
| ... |
| --- |
| name: vsseg3e64_v_incompatible_eew |
| body: | |
| bb.0: |
| liveins: $v8 |
| |
| ; CHECK-LABEL: name: vsseg3e64_v_incompatible_eew |
| ; CHECK: liveins: $v8 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8 |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_1:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn3m1 = IMPLICIT_DEF |
| ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub_vrm1_0 |
| ; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG]], [[PseudoVADD_VV_M1_]], %subreg.sub_vrm1_1 |
| ; CHECK-NEXT: [[INSERT_SUBREG2:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG1]], [[PseudoVADD_VV_M1_1]], %subreg.sub_vrm1_2 |
| ; CHECK-NEXT: PseudoVSSEG3E64_V_M1 killed [[INSERT_SUBREG2]], $noreg, 1 /* vl */, 6 /* e64 */ |
| %0:vr = COPY $v8 |
| %1:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10, 5 /* e32 */, 3 /* ta, ma */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */ |
| %6:vrn3m1 = IMPLICIT_DEF |
| %5:vrn3m1 = INSERT_SUBREG %6, %0, %subreg.sub_vrm1_0 |
| %7:vrn3m1 = INSERT_SUBREG %5, %1, %subreg.sub_vrm1_1 |
| %8:vrn3m1 = INSERT_SUBREG %7, %2, %subreg.sub_vrm1_2 |
| PseudoVSSEG3E64_V_M1 killed %8, $noreg, 1, 6 /* e64 */ |
| ... |
| --- |
| name: vsseg3e32_v_incompatible_emul |
| body: | |
| bb.0: |
| liveins: $v8 |
| |
| ; CHECK-LABEL: name: vsseg3e32_v_incompatible_emul |
| ; CHECK: liveins: $v8 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8 |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_1:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn3m1 = IMPLICIT_DEF |
| ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub_vrm1_0 |
| ; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG]], [[PseudoVADD_VV_M1_]], %subreg.sub_vrm1_1 |
| ; CHECK-NEXT: [[INSERT_SUBREG2:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG1]], [[PseudoVADD_VV_M1_1]], %subreg.sub_vrm1_2 |
| ; CHECK-NEXT: PseudoVSSEG3E32_V_M1 killed [[INSERT_SUBREG2]], $noreg, 1 /* vl */, 6 /* e64 */ |
| %0:vr = COPY $v8 |
| %1:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10, 5 /* e32 */, 3 /* ta, ma */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */ |
| %6:vrn3m1 = IMPLICIT_DEF |
| %5:vrn3m1 = INSERT_SUBREG %6, %0, %subreg.sub_vrm1_0 |
| %7:vrn3m1 = INSERT_SUBREG %5, %1, %subreg.sub_vrm1_1 |
| %8:vrn3m1 = INSERT_SUBREG %7, %2, %subreg.sub_vrm1_2 |
| PseudoVSSEG3E32_V_M1 killed %8, $noreg, 1, 6 /* e64 */ |
| ... |
| --- |
| name: vsseg3e32_v_incompatible_insert_subreg |
| body: | |
| bb.0: |
| |
| ; CHECK-LABEL: name: vsseg3e32_v_incompatible_insert_subreg |
| ; CHECK: [[PseudoVADD_VV_M2_:%[0-9]+]]:vrm2 = PseudoVADD_VV_M2 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn3m1 = IMPLICIT_DEF |
| ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[DEF]], [[PseudoVADD_VV_M2_]], %subreg.sub_vrm2_0 |
| ; CHECK-NEXT: PseudoVSSEG3E32_V_M1 killed [[INSERT_SUBREG]], $noreg, 1 /* vl */, 5 /* e32 */ |
| %2:vrm2 = PseudoVADD_VV_M2 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */ |
| %6:vrn3m1 = IMPLICIT_DEF |
| %5:vrn3m1 = INSERT_SUBREG %6, %2, %subreg.sub_vrm2_0 |
| PseudoVSSEG3E32_V_M1 killed %5, $noreg, 1, 5 /* e32 */ |
| ... |
| --- |
| name: vssseg3e32_v |
| body: | |
| bb.0: |
| liveins: $v8 |
| |
| ; CHECK-LABEL: name: vssseg3e32_v |
| ; CHECK: liveins: $v8 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8 |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_1:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn3m1 = IMPLICIT_DEF |
| ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub_vrm1_0 |
| ; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG]], [[PseudoVADD_VV_M1_]], %subreg.sub_vrm1_1 |
| ; CHECK-NEXT: [[INSERT_SUBREG2:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG1]], [[PseudoVADD_VV_M1_1]], %subreg.sub_vrm1_2 |
| ; CHECK-NEXT: PseudoVSSSEG3E32_V_M1 killed [[INSERT_SUBREG2]], $noreg, $noreg, 1 /* vl */, 5 /* e32 */ |
| %0:vr = COPY $v8 |
| %1:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10, 5 /* e32 */, 3 /* ta, ma */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */ |
| %6:vrn3m1 = IMPLICIT_DEF |
| %5:vrn3m1 = INSERT_SUBREG %6, %0, %subreg.sub_vrm1_0 |
| %7:vrn3m1 = INSERT_SUBREG %5, %1, %subreg.sub_vrm1_1 |
| %8:vrn3m1 = INSERT_SUBREG %7, %2, %subreg.sub_vrm1_2 |
| PseudoVSSSEG3E32_V_M1 killed %8, $noreg, $noreg, 1, 5 /* e32 */ |
| ... |
| --- |
| name: vsuxseg3ei64_v |
| body: | |
| bb.0: |
| liveins: $v8 |
| |
| ; CHECK-LABEL: name: vsuxseg3ei64_v |
| ; CHECK: liveins: $v8 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8 |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_1:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn3m1 = IMPLICIT_DEF |
| ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub_vrm1_0 |
| ; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG]], [[PseudoVADD_VV_M1_]], %subreg.sub_vrm1_1 |
| ; CHECK-NEXT: [[INSERT_SUBREG2:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG1]], [[PseudoVADD_VV_M1_1]], %subreg.sub_vrm1_2 |
| ; CHECK-NEXT: PseudoVSUXSEG3EI64_V_M2_M1 killed [[INSERT_SUBREG2]], $noreg, $noreg, 1 /* vl */, 5 /* e32 */ |
| %0:vr = COPY $v8 |
| %1:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10, 5 /* e32 */, 3 /* ta, ma */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */ |
| %6:vrn3m1 = IMPLICIT_DEF |
| %5:vrn3m1 = INSERT_SUBREG %6, %0, %subreg.sub_vrm1_0 |
| %7:vrn3m1 = INSERT_SUBREG %5, %1, %subreg.sub_vrm1_1 |
| %8:vrn3m1 = INSERT_SUBREG %7, %2, %subreg.sub_vrm1_2 |
| PseudoVSUXSEG3EI64_V_M2_M1 killed %8, $noreg, $noreg, 1, 5 /* e32 */ |
| ... |
| --- |
| name: vsuxseg3ei64_v_incompatible_data_eew |
| body: | |
| bb.0: |
| liveins: $v8 |
| |
| ; CHECK-LABEL: name: vsuxseg3ei64_v_incompatible_data_eew |
| ; CHECK: liveins: $v8 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8 |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10 /* vl */, 6 /* e64 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_1:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 6 /* e64 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn3m1 = IMPLICIT_DEF |
| ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub_vrm1_0 |
| ; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG]], [[PseudoVADD_VV_M1_]], %subreg.sub_vrm1_1 |
| ; CHECK-NEXT: [[INSERT_SUBREG2:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG1]], [[PseudoVADD_VV_M1_1]], %subreg.sub_vrm1_2 |
| ; CHECK-NEXT: PseudoVSUXSEG3EI64_V_M2_M1 killed [[INSERT_SUBREG2]], $noreg, $noreg, 1 /* vl */, 5 /* e32 */ |
| %0:vr = COPY $v8 |
| %1:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10, 6 /* e64 */, 3 /* ta, ma */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 6 /* e64 */, 3 /* ta, ma */ |
| %6:vrn3m1 = IMPLICIT_DEF |
| %5:vrn3m1 = INSERT_SUBREG %6, %0, %subreg.sub_vrm1_0 |
| %7:vrn3m1 = INSERT_SUBREG %5, %1, %subreg.sub_vrm1_1 |
| %8:vrn3m1 = INSERT_SUBREG %7, %2, %subreg.sub_vrm1_2 |
| PseudoVSUXSEG3EI64_V_M2_M1 killed %8, $noreg, $noreg, 1, 5 /* e32 */ |
| ... |
| --- |
| name: vsuxseg3ei32_v_index |
| body: | |
| bb.0: |
| |
| ; CHECK-LABEL: name: vsuxseg3ei32_v_index |
| ; CHECK: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: PseudoVSUXSEG3EI32_V_M1_M2 $noreg, $noreg, [[PseudoVADD_VV_M1_]], 1 /* vl */, 6 /* e64 */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */ |
| PseudoVSUXSEG3EI32_V_M1_M2 $noreg, $noreg, %2, 1, 6 /* e64 */ |
| ... |
| --- |
| name: vsuxseg3ei32_v_incompatible_index_eew |
| body: | |
| bb.0: |
| |
| ; CHECK-LABEL: name: vsuxseg3ei32_v_incompatible_index_eew |
| ; CHECK: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1 /* vl=VLMAX */, 6 /* e64 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: PseudoVSUXSEG3EI32_V_M1_M2 $noreg, $noreg, [[PseudoVADD_VV_M1_]], 1 /* vl */, 6 /* e64 */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 6 /* e64 */, 3 /* ta, ma */ |
| PseudoVSUXSEG3EI32_V_M1_M2 $noreg, $noreg, %2, 1, 6 /* e64 */ |
| ... |
| --- |
| name: vsoxseg3ei64_v |
| body: | |
| bb.0: |
| liveins: $v8 |
| |
| ; CHECK-LABEL: name: vsoxseg3ei64_v |
| ; CHECK: liveins: $v8 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8 |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[PseudoVADD_VV_M1_1:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn3m1 = IMPLICIT_DEF |
| ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub_vrm1_0 |
| ; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG]], [[PseudoVADD_VV_M1_]], %subreg.sub_vrm1_1 |
| ; CHECK-NEXT: [[INSERT_SUBREG2:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG1]], [[PseudoVADD_VV_M1_1]], %subreg.sub_vrm1_2 |
| ; CHECK-NEXT: PseudoVSOXSEG3EI64_V_M2_M1 killed [[INSERT_SUBREG2]], $noreg, $noreg, 1 /* vl */, 5 /* e32 */ |
| %0:vr = COPY $v8 |
| %1:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10, 5 /* e32 */, 3 /* ta, ma */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */ |
| %6:vrn3m1 = IMPLICIT_DEF |
| %5:vrn3m1 = INSERT_SUBREG %6, %0, %subreg.sub_vrm1_0 |
| %7:vrn3m1 = INSERT_SUBREG %5, %1, %subreg.sub_vrm1_1 |
| %8:vrn3m1 = INSERT_SUBREG %7, %2, %subreg.sub_vrm1_2 |
| PseudoVSOXSEG3EI64_V_M2_M1 killed %8, $noreg, $noreg, 1, 5 /* e32 */ |
| ... |
| --- |
| name: vsoxseg3ei32_v_index |
| body: | |
| bb.0: |
| |
| ; CHECK-LABEL: name: vsoxseg3ei32_v_index |
| ; CHECK: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1 /* vl */, 5 /* e32 */, 3 /* ta, ma */ |
| ; CHECK-NEXT: PseudoVSOXSEG3EI32_V_M1_M2 $noreg, $noreg, [[PseudoVADD_VV_M1_]], 1 /* vl */, 6 /* e64 */ |
| %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */ |
| PseudoVSOXSEG3EI32_V_M1_M2 $noreg, $noreg, %2, 1, 6 /* e64 */ |
| ... |