CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
2426 lines
103 KiB
YAML
2426 lines
103 KiB
YAML
# 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 */
|
|
...
|