[llvm] [RISCV] Update some of the RVV memory ops in SiFive P400 & P600 sched models (PR #129575)
Min-Yih Hsu via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 17 14:16:38 PDT 2025
https://github.com/mshockwave updated https://github.com/llvm/llvm-project/pull/129575
>From 43a5cbbb0cf7f4f2244dac25ba63e385e3125769 Mon Sep 17 00:00:00 2001
From: Min-Yih Hsu <min.hsu at sifive.com>
Date: Mon, 3 Mar 2025 11:11:19 -0800
Subject: [PATCH 1/4] [RISCV] Update some of the RVV memory ops in P400 & P600
sched models
---
llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td | 99 ++-
llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td | 99 ++-
.../llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s | 542 ++++++++++++++++
.../llvm-mca/RISCV/SiFiveP400/vlse-vsse.s | 316 ++++++++++
.../llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s | 588 +++++++++++++++++
.../llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s | 545 ++++++++++++++++
.../llvm-mca/RISCV/SiFiveP600/vlse-vsse.s | 319 ++++++++++
.../llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s | 591 ++++++++++++++++++
8 files changed, 2981 insertions(+), 118 deletions(-)
create mode 100644 llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s
create mode 100644 llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s
create mode 100644 llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s
create mode 100644 llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s
create mode 100644 llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s
create mode 100644 llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s
diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td
index e7f8f88e3909f..00edb32d954c0 100644
--- a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td
+++ b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td
@@ -22,6 +22,8 @@ class SiFiveP400IsWorstCaseMXSEW<string mx, int sew, list<string> MxList, bit is
bit c = !and(!eq(mx, LLMUL), !eq(sew, SSEW));
}
+defvar SiFiveP400VLEN = 128;
+
// 1 Micro-Op per cycle.
class SiFiveP400GetLMulCycles<string mx> {
int c = !cond(
@@ -35,19 +37,19 @@ class SiFiveP400GetLMulCycles<string mx> {
);
}
-// Latency for segmented loads and stores are calculated as vl * nf.
-class SiFiveP400GetCyclesSegmented<string mx, int sew, int nf> {
- defvar VLEN = 128;
- defvar VLUpperBound = !cond(
- !eq(mx, "M1") : !div(VLEN, sew),
- !eq(mx, "M2") : !div(!mul(VLEN, 2), sew),
- !eq(mx, "M4") : !div(!mul(VLEN, 4), sew),
- !eq(mx, "M8") : !div(!mul(VLEN, 8), sew),
- !eq(mx, "MF2") : !div(!div(VLEN, 2), sew),
- !eq(mx, "MF4") : !div(!div(VLEN, 4), sew),
- !eq(mx, "MF8") : !div(!div(VLEN, 8), sew),
+class SiFiveP400GetVLMAX<string mx, int sew> {
+ defvar LMUL = SiFiveP400GetLMulCycles<mx>.c;
+ int val = !cond(
+ !eq(mx, "MF2") : !div(!div(SiFiveP400VLEN, 2), sew),
+ !eq(mx, "MF4") : !div(!div(SiFiveP400VLEN, 4), sew),
+ !eq(mx, "MF8") : !div(!div(SiFiveP400VLEN, 8), sew),
+ true: !div(!mul(SiFiveP400VLEN, LMUL), sew)
);
- int c = !mul(VLUpperBound, nf);
+}
+
+// Latency for segmented loads and stores are calculated as vl * nf.
+class SiFiveP400SegmentedLdStCycles<string mx, int sew, int nf> {
+ int c = !mul(SiFiveP400GetVLMAX<mx, sew>.val, nf);
}
// Both variants of floating point vector reductions are based on numbers collected
@@ -368,57 +370,36 @@ def : WriteRes<WriteVSETIVLI, [SiFiveP400SYS]>;
def : WriteRes<WriteVSETVL, [SiFiveP400SYS]>;
// 7. Vector Loads and Stores
-// FIXME: This unit is still being improved, currently
-// it is based on stage numbers. Estimates are optimistic,
-// latency may be longer.
-foreach mx = SchedMxList in {
- defvar LMulLat = SiFiveP400GetLMulCycles<mx>.c;
- defvar IsWorstCase = SiFiveP400IsWorstCaseMX<mx, SchedMxList>.c;
- let Latency = 8, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVLDE", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDM", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDFF", [SiFiveP400VLD], mx, IsWorstCase>;
- }
- let Latency = 12, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVLDS8", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDS16", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDS32", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDS64", [SiFiveP400VLD], mx, IsWorstCase>;
- }
- let Latency = 12, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVLDUX8", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDUX16", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDUX32", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDUX64", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDOX8", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDOX16", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDOX32", [SiFiveP400VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDOX64", [SiFiveP400VLD], mx, IsWorstCase>;
- }
-}
+// Note that the latency of vector loads are measured by consuming the loaded
+// value with vmv.x.s before subtracting the latency of vmv.x.s from the number.
foreach mx = SchedMxList in {
defvar LMulLat = SiFiveP400GetLMulCycles<mx>.c;
defvar IsWorstCase = SiFiveP400IsWorstCaseMX<mx, SchedMxList>.c;
- let Latency = 8, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVSTE", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTM", [SiFiveP400VST], mx, IsWorstCase>;
- }
- let Latency = 12, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVSTS8", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTS16", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTS32", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTS64", [SiFiveP400VST], mx, IsWorstCase>;
+ let Latency = 8 in {
+ let ReleaseAtCycles = [LMulLat] in {
+ defm "" : LMULWriteResMX<"WriteVLDE", [SiFiveP400VLD], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVLDFF", [SiFiveP400VLD], mx, IsWorstCase>;
+
+ defm "" : LMULWriteResMX<"WriteVSTE", [SiFiveP400VST], mx, IsWorstCase>;
+ }
+
+ // Mask load and store always have EMUL=1.
+ let ReleaseAtCycles = [SiFiveP400GetLMulCycles<"M1">.c] in {
+ defm "" : LMULWriteResMX<"WriteVLDM", [SiFiveP400VLD], mx, IsWorstCase=!eq(mx, "M1")>;
+ defm "" : LMULWriteResMX<"WriteVSTM", [SiFiveP400VST], mx, IsWorstCase=!eq(mx, "M1")>;
+ }
}
- let Latency = 12, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVSTUX8", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTUX16", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTUX32", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTUX64", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTOX8", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTOX16", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTOX32", [SiFiveP400VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTOX64", [SiFiveP400VST], mx, IsWorstCase>;
+ foreach eew = [8, 16, 32, 64] in {
+ let Latency = 13, ReleaseAtCycles = [SiFiveP400GetVLMAX<mx, eew>.val] in {
+ defm "" : LMULWriteResMX<"WriteVLDS" # eew, [SiFiveP400VLD], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVLDUX" # eew, [SiFiveP400VLD], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVLDOX" # eew, [SiFiveP400VLD], mx, IsWorstCase>;
+
+ defm "" : LMULWriteResMX<"WriteVSTS" # eew, [SiFiveP400VST], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVSTUX" # eew, [SiFiveP400VST], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVSTOX" # eew, [SiFiveP400VST], mx, IsWorstCase>;
+ }
}
}
@@ -426,7 +407,7 @@ foreach mx = SchedMxList in {
foreach nf=2-8 in {
foreach eew = [8, 16, 32, 64] in {
defvar IsWorstCase = SiFiveP400IsWorstCaseMX<mx, SchedMxList>.c;
- defvar LMulLat = SiFiveP400GetCyclesSegmented<mx, eew, nf>.c;
+ defvar LMulLat = SiFiveP400SegmentedLdStCycles<mx, eew, nf>.c;
let Latency = !add(12, LMulLat), ReleaseAtCycles = [!add(12, LMulLat)] in {
defm "" : LMULWriteResMX<"WriteVLSEG" # nf # "e" #eew, [SiFiveP400VLD], mx, IsWorstCase>;
defm "" : LMULWriteResMX<"WriteVLSEGFF" # nf # "e" #eew, [SiFiveP400VLD], mx, IsWorstCase>;
diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
index 60d41b02f0e8a..a66ca3dcd9790 100644
--- a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
+++ b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
@@ -22,6 +22,8 @@ class SiFiveP600IsWorstCaseMXSEW<string mx, int sew, list<string> MxList, bit is
bit c = !and(!eq(mx, LLMUL), !eq(sew, SSEW));
}
+defvar SiFiveP600VLEN = 128;
+
// 1 Micro-Op per cycle.
class SiFiveP600GetLMulCycles<string mx> {
int c = !cond(
@@ -35,19 +37,19 @@ class SiFiveP600GetLMulCycles<string mx> {
);
}
-// Latency for segmented loads and stores are calculated as vl * nf.
-class SiFiveP600GetCyclesSegmented<string mx, int sew, int nf> {
- defvar VLEN = 128;
- defvar VLUpperBound = !cond(
- !eq(mx, "M1") : !div(VLEN, sew),
- !eq(mx, "M2") : !div(!mul(VLEN, 2), sew),
- !eq(mx, "M4") : !div(!mul(VLEN, 4), sew),
- !eq(mx, "M8") : !div(!mul(VLEN, 8), sew),
- !eq(mx, "MF2") : !div(!div(VLEN, 2), sew),
- !eq(mx, "MF4") : !div(!div(VLEN, 4), sew),
- !eq(mx, "MF8") : !div(!div(VLEN, 8), sew),
+class SiFiveP600GetVLMAX<string mx, int sew> {
+ defvar LMUL = SiFiveP600GetLMulCycles<mx>.c;
+ int val = !cond(
+ !eq(mx, "MF2") : !div(!div(SiFiveP600VLEN, 2), sew),
+ !eq(mx, "MF4") : !div(!div(SiFiveP600VLEN, 4), sew),
+ !eq(mx, "MF8") : !div(!div(SiFiveP600VLEN, 8), sew),
+ true: !div(!mul(SiFiveP600VLEN, LMUL), sew)
);
- int c = !mul(VLUpperBound, nf);
+}
+
+// Latency for segmented loads and stores are calculated as vl * nf.
+class SiFiveP600SegmentedLdStCycles<string mx, int sew, int nf> {
+ int c = !mul(SiFiveP600GetVLMAX<mx, sew>.val, nf);
}
class SiFiveP600VSM3CCycles<string mx> {
@@ -544,64 +546,43 @@ def : WriteRes<WriteVSETIVLI, [SiFiveP600SYS]>;
def : WriteRes<WriteVSETVL, [SiFiveP600SYS]>;
// 7. Vector Loads and Stores
-// FIXME: This unit is still being improved, currently
-// it is based on stage numbers. Estimates are optimistic,
-// latency may be longer.
-foreach mx = SchedMxList in {
- defvar LMulLat = SiFiveP600GetLMulCycles<mx>.c;
- defvar IsWorstCase = SiFiveP600IsWorstCaseMX<mx, SchedMxList>.c;
- let Latency = 8, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVLDE", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDM", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDFF", [SiFiveP600VLD], mx, IsWorstCase>;
- }
- let Latency = 12, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVLDS8", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDS16", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDS32", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDS64", [SiFiveP600VLD], mx, IsWorstCase>;
- }
- let Latency = 12, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVLDUX8", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDUX16", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDUX32", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDUX64", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDOX8", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDOX16", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDOX32", [SiFiveP600VLD], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVLDOX64", [SiFiveP600VLD], mx, IsWorstCase>;
- }
-}
+// Note that the latency of vector loads are measured by consuming the loaded
+// value with vmv.x.s before subtracting the latency of vmv.x.s from the number.
foreach mx = SchedMxList in {
defvar LMulLat = SiFiveP600GetLMulCycles<mx>.c;
defvar IsWorstCase = SiFiveP600IsWorstCaseMX<mx, SchedMxList>.c;
- let Latency = 8, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVSTE", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTM", [SiFiveP600VST], mx, IsWorstCase>;
- }
- let Latency = 12, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVSTS8", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTS16", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTS32", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTS64", [SiFiveP600VST], mx, IsWorstCase>;
+ let Latency = 8 in {
+ let ReleaseAtCycles = [LMulLat] in {
+ defm "" : LMULWriteResMX<"WriteVLDE", [SiFiveP600VLD], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVLDFF", [SiFiveP600VLD], mx, IsWorstCase>;
+
+ defm "" : LMULWriteResMX<"WriteVSTE", [SiFiveP600VST], mx, IsWorstCase>;
+ }
+
+ // Mask load and store always have EMUL=1.
+ let ReleaseAtCycles = [SiFiveP600GetLMulCycles<"M1">.c] in {
+ defm "" : LMULWriteResMX<"WriteVLDM", [SiFiveP600VLD], mx, IsWorstCase=!eq(mx,"M1")>;
+ defm "" : LMULWriteResMX<"WriteVSTM", [SiFiveP600VST], mx, IsWorstCase=!eq(mx,"M1")>;
+ }
}
- let Latency = 12, ReleaseAtCycles = [LMulLat] in {
- defm "" : LMULWriteResMX<"WriteVSTUX8", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTUX16", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTUX32", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTUX64", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTOX8", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTOX16", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTOX32", [SiFiveP600VST], mx, IsWorstCase>;
- defm "" : LMULWriteResMX<"WriteVSTOX64", [SiFiveP600VST], mx, IsWorstCase>;
+ foreach eew = [8, 16, 32, 64] in {
+ let Latency = 13, ReleaseAtCycles = [SiFiveP600GetVLMAX<mx, eew>.val] in {
+ defm "" : LMULWriteResMX<"WriteVLDS" # eew, [SiFiveP600VLD], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVLDUX" # eew, [SiFiveP600VLD], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVLDOX" # eew, [SiFiveP600VLD], mx, IsWorstCase>;
+
+ defm "" : LMULWriteResMX<"WriteVSTS" # eew, [SiFiveP600VST], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVSTUX" # eew, [SiFiveP600VST], mx, IsWorstCase>;
+ defm "" : LMULWriteResMX<"WriteVSTOX" # eew, [SiFiveP600VST], mx, IsWorstCase>;
+ }
}
}
foreach mx = SchedMxList in {
foreach nf=2-8 in {
foreach eew = [8, 16, 32, 64] in {
- defvar LMulLat = SiFiveP600GetCyclesSegmented<mx, eew, nf>.c;
+ defvar LMulLat = SiFiveP600SegmentedLdStCycles<mx, eew, nf>.c;
defvar IsWorstCase = SiFiveP600IsWorstCaseMX<mx, SchedMxList>.c;
let Latency = !add(12, LMulLat), ReleaseAtCycles = [!add(12, LMulLat)] in {
defm "" : LMULWriteResMX<"WriteVLSEG" # nf # "e" # eew, [SiFiveP600VLD], mx, IsWorstCase>;
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s
new file mode 100644
index 0000000000000..0f6802a17e0c5
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s
@@ -0,0 +1,542 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p470 -iterations=1 < %s | FileCheck %s
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vle8.v v8, (a0)
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, mf4, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, m1, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, m2, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, m4, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, m8, ta, ma
+vle16.v v8, (a0)
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vle32.v v8, (a0)
+vsetvli zero, zero, e32, m1, ta, ma
+vle32.v v8, (a0)
+vsetvli zero, zero, e32, m2, ta, ma
+vle32.v v8, (a0)
+vsetvli zero, zero, e32, m4, ta, ma
+vle32.v v8, (a0)
+vsetvli zero, zero, e32, m8, ta, ma
+vle32.v v8, (a0)
+
+vsetvli zero, zero, e64, m1, ta, ma
+vle64.v v8, (a0)
+vsetvli zero, zero, e64, m2, ta, ma
+vle64.v v8, (a0)
+vsetvli zero, zero, e64, m4, ta, ma
+vle64.v v8, (a0)
+vsetvli zero, zero, e64, m8, ta, ma
+vle64.v v8, (a0)
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vse8.v v8, (a0)
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, mf4, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, m1, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, m2, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, m4, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, m8, ta, ma
+vse16.v v8, (a0)
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vse32.v v8, (a0)
+vsetvli zero, zero, e32, m1, ta, ma
+vse32.v v8, (a0)
+vsetvli zero, zero, e32, m2, ta, ma
+vse32.v v8, (a0)
+vsetvli zero, zero, e32, m4, ta, ma
+vse32.v v8, (a0)
+vsetvli zero, zero, e32, m8, ta, ma
+vse32.v v8, (a0)
+
+vsetvli zero, zero, e64, m1, ta, ma
+vse64.v v8, (a0)
+vsetvli zero, zero, e64, m2, ta, ma
+vse64.v v8, (a0)
+vsetvli zero, zero, e64, m4, ta, ma
+vse64.v v8, (a0)
+vsetvli zero, zero, e64, m8, ta, ma
+vse64.v v8, (a0)
+
+# Unit-stride mask load/store
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vlm.v v8, (a0)
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vsm.v v8, (a0)
+
+# Fault-only-first
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vle8ff.v v8, (a0)
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, mf4, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, m1, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, m2, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, m4, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, m8, ta, ma
+vle16ff.v v8, (a0)
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vle32ff.v v8, (a0)
+vsetvli zero, zero, e32, m1, ta, ma
+vle32ff.v v8, (a0)
+vsetvli zero, zero, e32, m2, ta, ma
+vle32ff.v v8, (a0)
+vsetvli zero, zero, e32, m4, ta, ma
+vle32ff.v v8, (a0)
+vsetvli zero, zero, e32, m8, ta, ma
+vle32ff.v v8, (a0)
+
+vsetvli zero, zero, e64, m1, ta, ma
+vle64ff.v v8, (a0)
+vsetvli zero, zero, e64, m2, ta, ma
+vle64ff.v v8, (a0)
+vsetvli zero, zero, e64, m4, ta, ma
+vle64ff.v v8, (a0)
+vsetvli zero, zero, e64, m8, ta, ma
+vle64ff.v v8, (a0)
+
+# CHECK: Iterations: 1
+# CHECK-NEXT: Instructions: 160
+# CHECK-NEXT: Total Cycles: 146
+# CHECK-NEXT: Total uOps: 160
+
+# CHECK: Dispatch Width: 3
+# CHECK-NEXT: uOps Per Cycle: 1.10
+# CHECK-NEXT: IPC: 1.10
+# CHECK-NEXT: Block RThroughput: 139.0
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vse64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vse64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vse64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle64ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle64ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle64ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle64ff.v v8, (a0)
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SiFiveP400Div
+# CHECK-NEXT: [1] - SiFiveP400FEXQ0
+# CHECK-NEXT: [2] - SiFiveP400FloatDiv
+# CHECK-NEXT: [3] - SiFiveP400IEXQ0
+# CHECK-NEXT: [4] - SiFiveP400IEXQ1
+# CHECK-NEXT: [5] - SiFiveP400IEXQ2
+# CHECK-NEXT: [6] - SiFiveP400Load
+# CHECK-NEXT: [7] - SiFiveP400Store
+# CHECK-NEXT: [8] - SiFiveP400VDiv
+# CHECK-NEXT: [9] - SiFiveP400VEXQ0
+# CHECK-NEXT: [10] - SiFiveP400VFloatDiv
+# CHECK-NEXT: [11] - SiFiveP400VLD
+# CHECK-NEXT: [12] - SiFiveP400VST
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
+# CHECK-NEXT: - - - - 80.00 - - - - - - 139.00 73.00
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vle64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vse64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vse64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vse64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle64ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vle64ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle64ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle64ff.v v8, (a0)
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s
new file mode 100644
index 0000000000000..fe7fc577420cf
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s
@@ -0,0 +1,316 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p470 -iterations=1 < %s | FileCheck %s
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, mf4, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, mf8, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m1, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m2, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m4, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m8, ta, ma
+vlse8.v v8, (a0), t0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, mf4, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m1, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m2, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m4, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m8, ta, ma
+vlse16.v v8, (a0), t0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vlse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m1, ta, ma
+vlse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m2, ta, ma
+vlse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m4, ta, ma
+vlse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m8, ta, ma
+vlse32.v v8, (a0), t0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vlse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m2, ta, ma
+vlse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m4, ta, ma
+vlse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m8, ta, ma
+vlse64.v v8, (a0), t0
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, mf4, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, mf8, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m1, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m2, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m4, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m8, ta, ma
+vsse8.v v8, (a0), t0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, mf4, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m1, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m2, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m4, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m8, ta, ma
+vsse16.v v8, (a0), t0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vsse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m1, ta, ma
+vsse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m2, ta, ma
+vsse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m4, ta, ma
+vsse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m8, ta, ma
+vsse32.v v8, (a0), t0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vsse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m2, ta, ma
+vsse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m4, ta, ma
+vsse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m8, ta, ma
+vsse64.v v8, (a0), t0
+
+# CHECK: Iterations: 1
+# CHECK-NEXT: Instructions: 88
+# CHECK-NEXT: Total Cycles: 937
+# CHECK-NEXT: Total uOps: 88
+
+# CHECK: Dispatch Width: 3
+# CHECK-NEXT: uOps Per Cycle: 0.09
+# CHECK-NEXT: IPC: 0.09
+# CHECK-NEXT: Block RThroughput: 472.0
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsse64.v v8, (a0), t0
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SiFiveP400Div
+# CHECK-NEXT: [1] - SiFiveP400FEXQ0
+# CHECK-NEXT: [2] - SiFiveP400FloatDiv
+# CHECK-NEXT: [3] - SiFiveP400IEXQ0
+# CHECK-NEXT: [4] - SiFiveP400IEXQ1
+# CHECK-NEXT: [5] - SiFiveP400IEXQ2
+# CHECK-NEXT: [6] - SiFiveP400Load
+# CHECK-NEXT: [7] - SiFiveP400Store
+# CHECK-NEXT: [8] - SiFiveP400VDiv
+# CHECK-NEXT: [9] - SiFiveP400VEXQ0
+# CHECK-NEXT: [10] - SiFiveP400VFloatDiv
+# CHECK-NEXT: [11] - SiFiveP400VLD
+# CHECK-NEXT: [12] - SiFiveP400VST
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
+# CHECK-NEXT: - - - - 44.00 - - - - - - 472.00 472.00
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 32.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 64.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 128.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 32.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 64.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 32.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vlse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vlse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vlse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vlse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 32.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 64.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 128.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 32.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 64.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 32.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsse64.v v8, (a0), t0
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s
new file mode 100644
index 0000000000000..6e71acc50a916
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s
@@ -0,0 +1,588 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p470 -iterations=1 < %s | FileCheck %s
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf4, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf8, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m1, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m2, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m4, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m8, ta, ma
+vluxei8.v v8, (a0), v0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf4, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m1, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m2, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m4, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m8, ta, ma
+vluxei16.v v8, (a0), v0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vluxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m1, ta, ma
+vluxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m2, ta, ma
+vluxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m4, ta, ma
+vluxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m8, ta, ma
+vluxei32.v v8, (a0), v0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vluxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m2, ta, ma
+vluxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m4, ta, ma
+vluxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m8, ta, ma
+vluxei64.v v8, (a0), v0
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf4, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf8, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m1, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m2, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m4, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m8, ta, ma
+vloxei8.v v8, (a0), v0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf4, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m1, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m2, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m4, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m8, ta, ma
+vloxei16.v v8, (a0), v0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vloxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m1, ta, ma
+vloxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m2, ta, ma
+vloxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m4, ta, ma
+vloxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m8, ta, ma
+vloxei32.v v8, (a0), v0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vloxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m2, ta, ma
+vloxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m4, ta, ma
+vloxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m8, ta, ma
+vloxei64.v v8, (a0), v0
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf4, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf8, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m1, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m2, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m4, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m8, ta, ma
+vsuxei8.v v8, (a0), v0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf4, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m1, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m2, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m4, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m8, ta, ma
+vsuxei16.v v8, (a0), v0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vsuxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m1, ta, ma
+vsuxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m2, ta, ma
+vsuxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m4, ta, ma
+vsuxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m8, ta, ma
+vsuxei32.v v8, (a0), v0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vsuxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m2, ta, ma
+vsuxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m4, ta, ma
+vsuxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m8, ta, ma
+vsuxei64.v v8, (a0), v0
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf4, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf8, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m1, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m2, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m4, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m8, ta, ma
+vsoxei8.v v8, (a0), v0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf4, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m1, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m2, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m4, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m8, ta, ma
+vsoxei16.v v8, (a0), v0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vsoxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m1, ta, ma
+vsoxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m2, ta, ma
+vsoxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m4, ta, ma
+vsoxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m8, ta, ma
+vsoxei32.v v8, (a0), v0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vsoxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m2, ta, ma
+vsoxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m4, ta, ma
+vsoxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m8, ta, ma
+vsoxei64.v v8, (a0), v0
+
+# CHECK: Iterations: 1
+# CHECK-NEXT: Instructions: 176
+# CHECK-NEXT: Total Cycles: 1881
+# CHECK-NEXT: Total uOps: 176
+
+# CHECK: Dispatch Width: 3
+# CHECK-NEXT: uOps Per Cycle: 0.09
+# CHECK-NEXT: IPC: 0.09
+# CHECK-NEXT: Block RThroughput: 944.0
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsoxei64.v v8, (a0), v0
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SiFiveP400Div
+# CHECK-NEXT: [1] - SiFiveP400FEXQ0
+# CHECK-NEXT: [2] - SiFiveP400FloatDiv
+# CHECK-NEXT: [3] - SiFiveP400IEXQ0
+# CHECK-NEXT: [4] - SiFiveP400IEXQ1
+# CHECK-NEXT: [5] - SiFiveP400IEXQ2
+# CHECK-NEXT: [6] - SiFiveP400Load
+# CHECK-NEXT: [7] - SiFiveP400Store
+# CHECK-NEXT: [8] - SiFiveP400VDiv
+# CHECK-NEXT: [9] - SiFiveP400VEXQ0
+# CHECK-NEXT: [10] - SiFiveP400VFloatDiv
+# CHECK-NEXT: [11] - SiFiveP400VLD
+# CHECK-NEXT: [12] - SiFiveP400VST
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
+# CHECK-NEXT: - - - - 88.00 - - - - - - 944.00 944.00
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 32.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 64.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 128.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 32.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 64.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 32.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vluxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vluxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vluxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vluxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 32.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 64.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 128.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 32.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 64.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 32.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 2.00 - vloxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vloxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vloxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 16.00 - vloxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 32.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 64.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 128.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 32.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 64.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 32.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 32.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 64.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 128.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 32.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 64.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 32.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsoxei64.v v8, (a0), v0
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s
new file mode 100644
index 0000000000000..3b62055e94463
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s
@@ -0,0 +1,545 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p670 -iterations=1 < %s | FileCheck %s
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vle8.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vle8.v v8, (a0)
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, mf4, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, m1, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, m2, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, m4, ta, ma
+vle16.v v8, (a0)
+vsetvli zero, zero, e16, m8, ta, ma
+vle16.v v8, (a0)
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vle32.v v8, (a0)
+vsetvli zero, zero, e32, m1, ta, ma
+vle32.v v8, (a0)
+vsetvli zero, zero, e32, m2, ta, ma
+vle32.v v8, (a0)
+vsetvli zero, zero, e32, m4, ta, ma
+vle32.v v8, (a0)
+vsetvli zero, zero, e32, m8, ta, ma
+vle32.v v8, (a0)
+
+vsetvli zero, zero, e64, m1, ta, ma
+vle64.v v8, (a0)
+vsetvli zero, zero, e64, m2, ta, ma
+vle64.v v8, (a0)
+vsetvli zero, zero, e64, m4, ta, ma
+vle64.v v8, (a0)
+vsetvli zero, zero, e64, m8, ta, ma
+vle64.v v8, (a0)
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vse8.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vse8.v v8, (a0)
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, mf4, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, m1, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, m2, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, m4, ta, ma
+vse16.v v8, (a0)
+vsetvli zero, zero, e16, m8, ta, ma
+vse16.v v8, (a0)
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vse32.v v8, (a0)
+vsetvli zero, zero, e32, m1, ta, ma
+vse32.v v8, (a0)
+vsetvli zero, zero, e32, m2, ta, ma
+vse32.v v8, (a0)
+vsetvli zero, zero, e32, m4, ta, ma
+vse32.v v8, (a0)
+vsetvli zero, zero, e32, m8, ta, ma
+vse32.v v8, (a0)
+
+vsetvli zero, zero, e64, m1, ta, ma
+vse64.v v8, (a0)
+vsetvli zero, zero, e64, m2, ta, ma
+vse64.v v8, (a0)
+vsetvli zero, zero, e64, m4, ta, ma
+vse64.v v8, (a0)
+vsetvli zero, zero, e64, m8, ta, ma
+vse64.v v8, (a0)
+
+# Unit-stride mask load/store
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vlm.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vlm.v v8, (a0)
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vsm.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vsm.v v8, (a0)
+
+# Fault-only-first
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, mf4, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, mf8, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, m1, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, m2, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, m4, ta, ma
+vle8ff.v v8, (a0)
+vsetvli zero, zero, e8, m8, ta, ma
+vle8ff.v v8, (a0)
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, mf4, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, m1, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, m2, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, m4, ta, ma
+vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, m8, ta, ma
+vle16ff.v v8, (a0)
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vle32ff.v v8, (a0)
+vsetvli zero, zero, e32, m1, ta, ma
+vle32ff.v v8, (a0)
+vsetvli zero, zero, e32, m2, ta, ma
+vle32ff.v v8, (a0)
+vsetvli zero, zero, e32, m4, ta, ma
+vle32ff.v v8, (a0)
+vsetvli zero, zero, e32, m8, ta, ma
+vle32ff.v v8, (a0)
+
+vsetvli zero, zero, e64, m1, ta, ma
+vle64ff.v v8, (a0)
+vsetvli zero, zero, e64, m2, ta, ma
+vle64ff.v v8, (a0)
+vsetvli zero, zero, e64, m4, ta, ma
+vle64ff.v v8, (a0)
+vsetvli zero, zero, e64, m8, ta, ma
+vle64ff.v v8, (a0)
+
+# CHECK: Iterations: 1
+# CHECK-NEXT: Instructions: 160
+# CHECK-NEXT: Total Cycles: 146
+# CHECK-NEXT: Total uOps: 160
+
+# CHECK: Dispatch Width: 4
+# CHECK-NEXT: uOps Per Cycle: 1.10
+# CHECK-NEXT: IPC: 1.10
+# CHECK-NEXT: Block RThroughput: 139.0
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vse8.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vse32.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vse64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vse64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vse64.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle8ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle32ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle64ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 8 2.00 * vle64ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 8 4.00 * vle64ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 8 8.00 * vle64ff.v v8, (a0)
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SiFiveP600Div
+# CHECK-NEXT: [1] - SiFiveP600FEXQ0
+# CHECK-NEXT: [2] - SiFiveP600FEXQ1
+# CHECK-NEXT: [3] - SiFiveP600FloatDiv
+# CHECK-NEXT: [4] - SiFiveP600IEXQ0
+# CHECK-NEXT: [5] - SiFiveP600IEXQ1
+# CHECK-NEXT: [6] - SiFiveP600IEXQ2
+# CHECK-NEXT: [7] - SiFiveP600IEXQ3
+# CHECK-NEXT: [8.0] - SiFiveP600LDST
+# CHECK-NEXT: [8.1] - SiFiveP600LDST
+# CHECK-NEXT: [9] - SiFiveP600VDiv
+# CHECK-NEXT: [10] - SiFiveP600VEXQ0
+# CHECK-NEXT: [11] - SiFiveP600VEXQ1
+# CHECK-NEXT: [12] - SiFiveP600VFloatDiv
+# CHECK-NEXT: [13] - SiFiveP600VLD
+# CHECK-NEXT: [14] - SiFiveP600VST
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8.0] [8.1] [9] [10] [11] [12] [13] [14]
+# CHECK-NEXT: - - - - 80.00 - - - - - - - - - 139.00 73.00
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8.0] [8.1] [9] [10] [11] [12] [13] [14] Instructions:
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vle64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vse8.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vse32.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vse64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vse64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vse64.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle8ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle32ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle64ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vle64ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle64ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle64ff.v v8, (a0)
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s
new file mode 100644
index 0000000000000..5bfe644e7c9e8
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s
@@ -0,0 +1,319 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p670 -iterations=1 < %s | FileCheck %s
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, mf4, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, mf8, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m1, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m2, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m4, ta, ma
+vlse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m8, ta, ma
+vlse8.v v8, (a0), t0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, mf4, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m1, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m2, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m4, ta, ma
+vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m8, ta, ma
+vlse16.v v8, (a0), t0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vlse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m1, ta, ma
+vlse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m2, ta, ma
+vlse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m4, ta, ma
+vlse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m8, ta, ma
+vlse32.v v8, (a0), t0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vlse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m2, ta, ma
+vlse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m4, ta, ma
+vlse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m8, ta, ma
+vlse64.v v8, (a0), t0
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, mf4, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, mf8, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m1, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m2, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m4, ta, ma
+vsse8.v v8, (a0), t0
+vsetvli zero, zero, e8, m8, ta, ma
+vsse8.v v8, (a0), t0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, mf4, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m1, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m2, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m4, ta, ma
+vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, m8, ta, ma
+vsse16.v v8, (a0), t0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vsse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m1, ta, ma
+vsse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m2, ta, ma
+vsse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m4, ta, ma
+vsse32.v v8, (a0), t0
+vsetvli zero, zero, e32, m8, ta, ma
+vsse32.v v8, (a0), t0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vsse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m2, ta, ma
+vsse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m4, ta, ma
+vsse64.v v8, (a0), t0
+vsetvli zero, zero, e64, m8, ta, ma
+vsse64.v v8, (a0), t0
+
+# CHECK: Iterations: 1
+# CHECK-NEXT: Instructions: 88
+# CHECK-NEXT: Total Cycles: 937
+# CHECK-NEXT: Total uOps: 88
+
+# CHECK: Dispatch Width: 4
+# CHECK-NEXT: uOps Per Cycle: 0.09
+# CHECK-NEXT: IPC: 0.09
+# CHECK-NEXT: Block RThroughput: 472.0
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsse64.v v8, (a0), t0
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SiFiveP600Div
+# CHECK-NEXT: [1] - SiFiveP600FEXQ0
+# CHECK-NEXT: [2] - SiFiveP600FEXQ1
+# CHECK-NEXT: [3] - SiFiveP600FloatDiv
+# CHECK-NEXT: [4] - SiFiveP600IEXQ0
+# CHECK-NEXT: [5] - SiFiveP600IEXQ1
+# CHECK-NEXT: [6] - SiFiveP600IEXQ2
+# CHECK-NEXT: [7] - SiFiveP600IEXQ3
+# CHECK-NEXT: [8.0] - SiFiveP600LDST
+# CHECK-NEXT: [8.1] - SiFiveP600LDST
+# CHECK-NEXT: [9] - SiFiveP600VDiv
+# CHECK-NEXT: [10] - SiFiveP600VEXQ0
+# CHECK-NEXT: [11] - SiFiveP600VEXQ1
+# CHECK-NEXT: [12] - SiFiveP600VFloatDiv
+# CHECK-NEXT: [13] - SiFiveP600VLD
+# CHECK-NEXT: [14] - SiFiveP600VST
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8.0] [8.1] [9] [10] [11] [12] [13] [14]
+# CHECK-NEXT: - - - - 44.00 - - - - - - - - - 472.00 472.00
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8.0] [8.1] [9] [10] [11] [12] [13] [14] Instructions:
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 32.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 64.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 128.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 32.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 64.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 32.00 - vlse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vlse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vlse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vlse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vlse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 32.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 64.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 128.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 32.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 64.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 32.00 vsse32.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsse64.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsse64.v v8, (a0), t0
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s
new file mode 100644
index 0000000000000..65afb2a5b7f77
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s
@@ -0,0 +1,591 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p670 -iterations=1 < %s | FileCheck %s
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf4, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf8, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m1, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m2, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m4, ta, ma
+vluxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m8, ta, ma
+vluxei8.v v8, (a0), v0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf4, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m1, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m2, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m4, ta, ma
+vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m8, ta, ma
+vluxei16.v v8, (a0), v0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vluxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m1, ta, ma
+vluxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m2, ta, ma
+vluxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m4, ta, ma
+vluxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m8, ta, ma
+vluxei32.v v8, (a0), v0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vluxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m2, ta, ma
+vluxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m4, ta, ma
+vluxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m8, ta, ma
+vluxei64.v v8, (a0), v0
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf4, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf8, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m1, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m2, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m4, ta, ma
+vloxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m8, ta, ma
+vloxei8.v v8, (a0), v0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf4, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m1, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m2, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m4, ta, ma
+vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m8, ta, ma
+vloxei16.v v8, (a0), v0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vloxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m1, ta, ma
+vloxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m2, ta, ma
+vloxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m4, ta, ma
+vloxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m8, ta, ma
+vloxei32.v v8, (a0), v0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vloxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m2, ta, ma
+vloxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m4, ta, ma
+vloxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m8, ta, ma
+vloxei64.v v8, (a0), v0
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf4, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf8, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m1, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m2, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m4, ta, ma
+vsuxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m8, ta, ma
+vsuxei8.v v8, (a0), v0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf4, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m1, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m2, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m4, ta, ma
+vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m8, ta, ma
+vsuxei16.v v8, (a0), v0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vsuxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m1, ta, ma
+vsuxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m2, ta, ma
+vsuxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m4, ta, ma
+vsuxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m8, ta, ma
+vsuxei32.v v8, (a0), v0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vsuxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m2, ta, ma
+vsuxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m4, ta, ma
+vsuxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m8, ta, ma
+vsuxei64.v v8, (a0), v0
+
+vsetvli zero, zero, e8, mf2, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf4, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, mf8, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m1, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m2, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m4, ta, ma
+vsoxei8.v v8, (a0), v0
+vsetvli zero, zero, e8, m8, ta, ma
+vsoxei8.v v8, (a0), v0
+
+vsetvli zero, zero, e16, mf2, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf4, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m1, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m2, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m4, ta, ma
+vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, m8, ta, ma
+vsoxei16.v v8, (a0), v0
+
+vsetvli zero, zero, e32, mf2, ta, ma
+vsoxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m1, ta, ma
+vsoxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m2, ta, ma
+vsoxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m4, ta, ma
+vsoxei32.v v8, (a0), v0
+vsetvli zero, zero, e32, m8, ta, ma
+vsoxei32.v v8, (a0), v0
+
+vsetvli zero, zero, e64, m1, ta, ma
+vsoxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m2, ta, ma
+vsoxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m4, ta, ma
+vsoxei64.v v8, (a0), v0
+vsetvli zero, zero, e64, m8, ta, ma
+vsoxei64.v v8, (a0), v0
+
+# CHECK: Iterations: 1
+# CHECK-NEXT: Instructions: 176
+# CHECK-NEXT: Total Cycles: 1881
+# CHECK-NEXT: Total uOps: 176
+
+# CHECK: Dispatch Width: 4
+# CHECK-NEXT: uOps Per Cycle: 0.09
+# CHECK-NEXT: IPC: 0.09
+# CHECK-NEXT: Block RThroughput: 944.0
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: 1 13 128.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: 1 13 64.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: 1 13 32.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: 1 13 2.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: 1 13 4.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: 1 13 8.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: 1 13 16.00 * vsoxei64.v v8, (a0), v0
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - SiFiveP600Div
+# CHECK-NEXT: [1] - SiFiveP600FEXQ0
+# CHECK-NEXT: [2] - SiFiveP600FEXQ1
+# CHECK-NEXT: [3] - SiFiveP600FloatDiv
+# CHECK-NEXT: [4] - SiFiveP600IEXQ0
+# CHECK-NEXT: [5] - SiFiveP600IEXQ1
+# CHECK-NEXT: [6] - SiFiveP600IEXQ2
+# CHECK-NEXT: [7] - SiFiveP600IEXQ3
+# CHECK-NEXT: [8.0] - SiFiveP600LDST
+# CHECK-NEXT: [8.1] - SiFiveP600LDST
+# CHECK-NEXT: [9] - SiFiveP600VDiv
+# CHECK-NEXT: [10] - SiFiveP600VEXQ0
+# CHECK-NEXT: [11] - SiFiveP600VEXQ1
+# CHECK-NEXT: [12] - SiFiveP600VFloatDiv
+# CHECK-NEXT: [13] - SiFiveP600VLD
+# CHECK-NEXT: [14] - SiFiveP600VST
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8.0] [8.1] [9] [10] [11] [12] [13] [14]
+# CHECK-NEXT: - - - - 88.00 - - - - - - - - - 944.00 944.00
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8.0] [8.1] [9] [10] [11] [12] [13] [14] Instructions:
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 32.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 64.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 128.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 32.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 64.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 32.00 - vluxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vluxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vluxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vluxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vluxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 32.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 64.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 128.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 32.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 64.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 32.00 - vloxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vloxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vloxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vloxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vloxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 32.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 64.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 128.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 32.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 64.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 32.00 vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 32.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 64.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 128.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 32.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 64.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e32, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 32.00 vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m1, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsoxei64.v v8, (a0), v0
>From fb424f79bf60c742bc9ece39442baad011e47eeb Mon Sep 17 00:00:00 2001
From: Min-Yih Hsu <min.hsu at sifive.com>
Date: Mon, 17 Mar 2025 11:04:33 -0700
Subject: [PATCH 2/4] fixup! Update the latency of strided and indexed
loads/stores
---
llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td | 15 +-
llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td | 15 +-
.../llvm-mca/RISCV/SiFiveP400/vlse-vsse.s | 74 ++++-----
.../llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s | 146 +++++++++---------
.../llvm-mca/RISCV/SiFiveP600/vlse-vsse.s | 74 ++++-----
.../llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s | 146 +++++++++---------
6 files changed, 248 insertions(+), 222 deletions(-)
diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td
index 00edb32d954c0..054c0c684dab8 100644
--- a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td
+++ b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td
@@ -47,6 +47,18 @@ class SiFiveP400GetVLMAX<string mx, int sew> {
);
}
+class SiFiveP400StridedLdStLatency<string mx, int sew> {
+ defvar VL = SiFiveP400GetVLMAX<mx, sew>.val;
+ int val = !cond(
+ !eq(VL, 2): 13,
+ !eq(VL, 4): 18,
+ !eq(VL, 8): 22,
+ !eq(VL, 16): 30,
+ // VL=32,64,128
+ true: !sub(VL, 2)
+ );
+}
+
// Latency for segmented loads and stores are calculated as vl * nf.
class SiFiveP400SegmentedLdStCycles<string mx, int sew, int nf> {
int c = !mul(SiFiveP400GetVLMAX<mx, sew>.val, nf);
@@ -391,7 +403,8 @@ foreach mx = SchedMxList in {
}
}
foreach eew = [8, 16, 32, 64] in {
- let Latency = 13, ReleaseAtCycles = [SiFiveP400GetVLMAX<mx, eew>.val] in {
+ let Latency = SiFiveP400StridedLdStLatency<mx, eew>.val,
+ ReleaseAtCycles = [SiFiveP400GetVLMAX<mx, eew>.val] in {
defm "" : LMULWriteResMX<"WriteVLDS" # eew, [SiFiveP400VLD], mx, IsWorstCase>;
defm "" : LMULWriteResMX<"WriteVLDUX" # eew, [SiFiveP400VLD], mx, IsWorstCase>;
defm "" : LMULWriteResMX<"WriteVLDOX" # eew, [SiFiveP400VLD], mx, IsWorstCase>;
diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
index a66ca3dcd9790..86e2c44907746 100644
--- a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
+++ b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
@@ -47,6 +47,18 @@ class SiFiveP600GetVLMAX<string mx, int sew> {
);
}
+class SiFiveP600StridedLdStLatency<string mx, int sew> {
+ defvar VL = SiFiveP400GetVLMAX<mx, sew>.val;
+ int val = !cond(
+ !eq(VL, 2): 13,
+ !eq(VL, 4): 18,
+ !eq(VL, 8): 22,
+ !eq(VL, 16): 30,
+ // VL=32,64,128
+ true: !sub(VL, 2)
+ );
+}
+
// Latency for segmented loads and stores are calculated as vl * nf.
class SiFiveP600SegmentedLdStCycles<string mx, int sew, int nf> {
int c = !mul(SiFiveP600GetVLMAX<mx, sew>.val, nf);
@@ -567,7 +579,8 @@ foreach mx = SchedMxList in {
}
}
foreach eew = [8, 16, 32, 64] in {
- let Latency = 13, ReleaseAtCycles = [SiFiveP600GetVLMAX<mx, eew>.val] in {
+ let Latency = SiFiveP600StridedLdStLatency<mx, eew>.val,
+ ReleaseAtCycles = [SiFiveP600GetVLMAX<mx, eew>.val] in {
defm "" : LMULWriteResMX<"WriteVLDS" # eew, [SiFiveP600VLD], mx, IsWorstCase>;
defm "" : LMULWriteResMX<"WriteVLDUX" # eew, [SiFiveP600VLD], mx, IsWorstCase>;
defm "" : LMULWriteResMX<"WriteVLDOX" # eew, [SiFiveP600VLD], mx, IsWorstCase>;
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s
index fe7fc577420cf..15e2b96a62ca7 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s
@@ -99,7 +99,7 @@ vsse64.v v8, (a0), t0
# CHECK: Iterations: 1
# CHECK-NEXT: Instructions: 88
-# CHECK-NEXT: Total Cycles: 937
+# CHECK-NEXT: Total Cycles: 954
# CHECK-NEXT: Total uOps: 88
# CHECK: Dispatch Width: 3
@@ -117,93 +117,93 @@ vsse64.v v8, (a0), t0
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 62 64.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 126 128.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 62 64.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 62 64.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 126 128.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 62 64.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vsse64.v v8, (a0), t0
# CHECK: Resources:
# CHECK-NEXT: [0] - SiFiveP400Div
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s
index 6e71acc50a916..203594ea89424 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s
@@ -195,7 +195,7 @@ vsoxei64.v v8, (a0), v0
# CHECK: Iterations: 1
# CHECK-NEXT: Instructions: 176
-# CHECK-NEXT: Total Cycles: 1881
+# CHECK-NEXT: Total Cycles: 1898
# CHECK-NEXT: Total uOps: 176
# CHECK: Dispatch Width: 3
@@ -213,181 +213,181 @@ vsoxei64.v v8, (a0), v0
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 126 128.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 126 128.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 126 128.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 126 128.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsoxei64.v v8, (a0), v0
# CHECK: Resources:
# CHECK-NEXT: [0] - SiFiveP400Div
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s
index 5bfe644e7c9e8..7363755828134 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s
@@ -99,7 +99,7 @@ vsse64.v v8, (a0), t0
# CHECK: Iterations: 1
# CHECK-NEXT: Instructions: 88
-# CHECK-NEXT: Total Cycles: 937
+# CHECK-NEXT: Total Cycles: 954
# CHECK-NEXT: Total uOps: 88
# CHECK: Dispatch Width: 4
@@ -117,93 +117,93 @@ vsse64.v v8, (a0), t0
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 62 64.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 126 128.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 62 64.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vlse32.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vlse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vlse64.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 62 64.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 126 128.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 62 64.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsse32.v v8, (a0), t0
+# CHECK-NEXT: 1 30 32.00 * vsse32.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 18 4.00 * vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 22 8.00 * vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsse64.v v8, (a0), t0
+# CHECK-NEXT: 1 30 16.00 * vsse64.v v8, (a0), t0
# CHECK: Resources:
# CHECK-NEXT: [0] - SiFiveP600Div
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s
index 65afb2a5b7f77..851c241505e53 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s
@@ -195,7 +195,7 @@ vsoxei64.v v8, (a0), v0
# CHECK: Iterations: 1
# CHECK-NEXT: Instructions: 176
-# CHECK-NEXT: Total Cycles: 1881
+# CHECK-NEXT: Total Cycles: 1898
# CHECK-NEXT: Total uOps: 176
# CHECK: Dispatch Width: 4
@@ -213,181 +213,181 @@ vsoxei64.v v8, (a0), v0
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 126 128.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vluxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vluxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vluxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 126 128.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vloxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vloxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vloxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 126 128.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsuxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsuxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsuxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m4, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
-# CHECK-NEXT: 1 13 128.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 126 128.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m4, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m8, ta, ma
-# CHECK-NEXT: 1 13 64.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 62 64.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, ta, ma
-# CHECK-NEXT: 1 13 32.00 * vsoxei32.v v8, (a0), v0
+# CHECK-NEXT: 1 30 32.00 * vsoxei32.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m1, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m2, ta, ma
-# CHECK-NEXT: 1 13 4.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 18 4.00 * vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m4, ta, ma
-# CHECK-NEXT: 1 13 8.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 22 8.00 * vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
-# CHECK-NEXT: 1 13 16.00 * vsoxei64.v v8, (a0), v0
+# CHECK-NEXT: 1 30 16.00 * vsoxei64.v v8, (a0), v0
# CHECK: Resources:
# CHECK-NEXT: [0] - SiFiveP600Div
>From ad8229b9d2c7e61d62f2098f6431a7718b6b1463 Mon Sep 17 00:00:00 2001
From: Min-Yih Hsu <min.hsu at sifive.com>
Date: Mon, 17 Mar 2025 11:18:34 -0700
Subject: [PATCH 3/4] fixup! Update comment about EMUL of mask-producing
instructions
---
llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td | 2 +-
llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td
index 054c0c684dab8..1ac05c9444725 100644
--- a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td
+++ b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP400.td
@@ -396,7 +396,7 @@ foreach mx = SchedMxList in {
defm "" : LMULWriteResMX<"WriteVSTE", [SiFiveP400VST], mx, IsWorstCase>;
}
- // Mask load and store always have EMUL=1.
+ // Mask load and store have a maximum EMUL of 1.
let ReleaseAtCycles = [SiFiveP400GetLMulCycles<"M1">.c] in {
defm "" : LMULWriteResMX<"WriteVLDM", [SiFiveP400VLD], mx, IsWorstCase=!eq(mx, "M1")>;
defm "" : LMULWriteResMX<"WriteVSTM", [SiFiveP400VST], mx, IsWorstCase=!eq(mx, "M1")>;
diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
index 86e2c44907746..2bfd5ef811c7b 100644
--- a/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
+++ b/llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
@@ -572,7 +572,7 @@ foreach mx = SchedMxList in {
defm "" : LMULWriteResMX<"WriteVSTE", [SiFiveP600VST], mx, IsWorstCase>;
}
- // Mask load and store always have EMUL=1.
+ // Mask load and store have a maximum EMUL of 1.
let ReleaseAtCycles = [SiFiveP600GetLMulCycles<"M1">.c] in {
defm "" : LMULWriteResMX<"WriteVLDM", [SiFiveP600VLD], mx, IsWorstCase=!eq(mx,"M1")>;
defm "" : LMULWriteResMX<"WriteVSTM", [SiFiveP600VST], mx, IsWorstCase=!eq(mx,"M1")>;
>From 8feadc160ca72a10e6abe4317a2f3e45648672a3 Mon Sep 17 00:00:00 2001
From: Min-Yih Hsu <min.hsu at sifive.com>
Date: Mon, 17 Mar 2025 14:13:25 -0700
Subject: [PATCH 4/4] fixup! Reorder test instructions by their LMUL
---
.../llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s | 96 ++++++-------
.../llvm-mca/RISCV/SiFiveP400/vlse-vsse.s | 64 ++++-----
.../llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s | 128 +++++++++---------
.../llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s | 96 ++++++-------
.../llvm-mca/RISCV/SiFiveP600/vlse-vsse.s | 64 ++++-----
.../llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s | 128 +++++++++---------
6 files changed, 288 insertions(+), 288 deletions(-)
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s
index 0f6802a17e0c5..53bf836263759 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vle-vse-vlm.s
@@ -1,11 +1,11 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p470 -iterations=1 < %s | FileCheck %s
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vle8.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vle8.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vle8.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vle8.v v8, (a0)
@@ -16,10 +16,10 @@ vle8.v v8, (a0)
vsetvli zero, zero, e8, m8, ta, ma
vle8.v v8, (a0)
-vsetvli zero, zero, e16, mf2, ta, ma
-vle16.v v8, (a0)
vsetvli zero, zero, e16, mf4, ta, ma
vle16.v v8, (a0)
+vsetvli zero, zero, e16, mf2, ta, ma
+vle16.v v8, (a0)
vsetvli zero, zero, e16, m1, ta, ma
vle16.v v8, (a0)
vsetvli zero, zero, e16, m2, ta, ma
@@ -49,11 +49,11 @@ vle64.v v8, (a0)
vsetvli zero, zero, e64, m8, ta, ma
vle64.v v8, (a0)
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vse8.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vse8.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vse8.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vse8.v v8, (a0)
@@ -64,10 +64,10 @@ vse8.v v8, (a0)
vsetvli zero, zero, e8, m8, ta, ma
vse8.v v8, (a0)
-vsetvli zero, zero, e16, mf2, ta, ma
-vse16.v v8, (a0)
vsetvli zero, zero, e16, mf4, ta, ma
vse16.v v8, (a0)
+vsetvli zero, zero, e16, mf2, ta, ma
+vse16.v v8, (a0)
vsetvli zero, zero, e16, m1, ta, ma
vse16.v v8, (a0)
vsetvli zero, zero, e16, m2, ta, ma
@@ -99,11 +99,11 @@ vse64.v v8, (a0)
# Unit-stride mask load/store
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vlm.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vlm.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vlm.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vlm.v v8, (a0)
@@ -114,11 +114,11 @@ vlm.v v8, (a0)
vsetvli zero, zero, e8, m8, ta, ma
vlm.v v8, (a0)
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vsm.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vsm.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vsm.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vsm.v v8, (a0)
@@ -131,11 +131,11 @@ vsm.v v8, (a0)
# Fault-only-first
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vle8ff.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vle8ff.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vle8ff.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vle8ff.v v8, (a0)
@@ -146,10 +146,10 @@ vle8ff.v v8, (a0)
vsetvli zero, zero, e8, m8, ta, ma
vle8ff.v v8, (a0)
-vsetvli zero, zero, e16, mf2, ta, ma
-vle16ff.v v8, (a0)
vsetvli zero, zero, e16, mf4, ta, ma
vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, mf2, ta, ma
+vle16ff.v v8, (a0)
vsetvli zero, zero, e16, m1, ta, ma
vle16ff.v v8, (a0)
vsetvli zero, zero, e16, m2, ta, ma
@@ -198,11 +198,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
@@ -212,10 +212,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vle8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vle8.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -242,11 +242,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vle64.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vle64.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
@@ -256,10 +256,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vse8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vse8.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -286,11 +286,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vse64.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vse64.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
@@ -300,11 +300,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
@@ -314,11 +314,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
@@ -328,10 +328,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vle8ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vle8ff.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -380,11 +380,11 @@ vle64ff.v v8, (a0)
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
@@ -394,10 +394,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle8.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -424,11 +424,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle64.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle64.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
@@ -438,10 +438,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - 4.00 vse8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 8.00 vse8.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -468,11 +468,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - 4.00 vse64.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 8.00 vse64.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
@@ -482,11 +482,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
@@ -496,11 +496,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
@@ -510,10 +510,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - 4.00 - vle8ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 8.00 - vle8ff.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s
index 15e2b96a62ca7..fcf544395db8f 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlse-vsse.s
@@ -1,11 +1,11 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p470 -iterations=1 < %s | FileCheck %s
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vlse8.v v8, (a0), t0
vsetvli zero, zero, e8, mf4, ta, ma
vlse8.v v8, (a0), t0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vlse8.v v8, (a0), t0
vsetvli zero, zero, e8, m1, ta, ma
vlse8.v v8, (a0), t0
@@ -16,10 +16,10 @@ vlse8.v v8, (a0), t0
vsetvli zero, zero, e8, m8, ta, ma
vlse8.v v8, (a0), t0
-vsetvli zero, zero, e16, mf2, ta, ma
-vlse16.v v8, (a0), t0
vsetvli zero, zero, e16, mf4, ta, ma
vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, mf2, ta, ma
+vlse16.v v8, (a0), t0
vsetvli zero, zero, e16, m1, ta, ma
vlse16.v v8, (a0), t0
vsetvli zero, zero, e16, m2, ta, ma
@@ -49,11 +49,11 @@ vlse64.v v8, (a0), t0
vsetvli zero, zero, e64, m8, ta, ma
vlse64.v v8, (a0), t0
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vsse8.v v8, (a0), t0
vsetvli zero, zero, e8, mf4, ta, ma
vsse8.v v8, (a0), t0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vsse8.v v8, (a0), t0
vsetvli zero, zero, e8, m1, ta, ma
vsse8.v v8, (a0), t0
@@ -64,10 +64,10 @@ vsse8.v v8, (a0), t0
vsetvli zero, zero, e8, m8, ta, ma
vsse8.v v8, (a0), t0
-vsetvli zero, zero, e16, mf2, ta, ma
-vsse16.v v8, (a0), t0
vsetvli zero, zero, e16, mf4, ta, ma
vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, mf2, ta, ma
+vsse16.v v8, (a0), t0
vsetvli zero, zero, e16, m1, ta, ma
vsse16.v v8, (a0), t0
vsetvli zero, zero, e16, m2, ta, ma
@@ -116,12 +116,12 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vlse8.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -130,10 +130,10 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 62 64.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vlse8.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -160,12 +160,12 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 22 8.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 30 16.00 * vlse64.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vsse8.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -174,10 +174,10 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 62 64.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vsse8.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -226,12 +226,12 @@ vsse64.v v8, (a0), t0
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 8.00 - vlse8.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 4.00 - vlse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 2.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vlse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 16.00 - vlse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -240,10 +240,10 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: - - - - - - - - - - - 64.00 - vlse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 128.00 - vlse8.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 4.00 - vlse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 2.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vlse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 8.00 - vlse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -270,12 +270,12 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: - - - - - - - - - - - 8.00 - vlse64.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 16.00 - vlse64.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsse8.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -284,10 +284,10 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: - - - - - - - - - - - - 64.00 vsse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 128.00 vsse8.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s
index 203594ea89424..086dd524ba812 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP400/vlxe-vsxe.s
@@ -1,11 +1,11 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p470 -iterations=1 < %s | FileCheck %s
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vluxei8.v v8, (a0), v0
vsetvli zero, zero, e8, mf4, ta, ma
vluxei8.v v8, (a0), v0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vluxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m1, ta, ma
vluxei8.v v8, (a0), v0
@@ -16,10 +16,10 @@ vluxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m8, ta, ma
vluxei8.v v8, (a0), v0
-vsetvli zero, zero, e16, mf2, ta, ma
-vluxei16.v v8, (a0), v0
vsetvli zero, zero, e16, mf4, ta, ma
vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf2, ta, ma
+vluxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m1, ta, ma
vluxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m2, ta, ma
@@ -49,11 +49,11 @@ vluxei64.v v8, (a0), v0
vsetvli zero, zero, e64, m8, ta, ma
vluxei64.v v8, (a0), v0
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vloxei8.v v8, (a0), v0
vsetvli zero, zero, e8, mf4, ta, ma
vloxei8.v v8, (a0), v0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vloxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m1, ta, ma
vloxei8.v v8, (a0), v0
@@ -64,10 +64,10 @@ vloxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m8, ta, ma
vloxei8.v v8, (a0), v0
-vsetvli zero, zero, e16, mf2, ta, ma
-vloxei16.v v8, (a0), v0
vsetvli zero, zero, e16, mf4, ta, ma
vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf2, ta, ma
+vloxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m1, ta, ma
vloxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m2, ta, ma
@@ -97,11 +97,11 @@ vloxei64.v v8, (a0), v0
vsetvli zero, zero, e64, m8, ta, ma
vloxei64.v v8, (a0), v0
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vsuxei8.v v8, (a0), v0
vsetvli zero, zero, e8, mf4, ta, ma
vsuxei8.v v8, (a0), v0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vsuxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m1, ta, ma
vsuxei8.v v8, (a0), v0
@@ -112,10 +112,10 @@ vsuxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m8, ta, ma
vsuxei8.v v8, (a0), v0
-vsetvli zero, zero, e16, mf2, ta, ma
-vsuxei16.v v8, (a0), v0
vsetvli zero, zero, e16, mf4, ta, ma
vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf2, ta, ma
+vsuxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m1, ta, ma
vsuxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m2, ta, ma
@@ -145,11 +145,11 @@ vsuxei64.v v8, (a0), v0
vsetvli zero, zero, e64, m8, ta, ma
vsuxei64.v v8, (a0), v0
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vsoxei8.v v8, (a0), v0
vsetvli zero, zero, e8, mf4, ta, ma
vsoxei8.v v8, (a0), v0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vsoxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m1, ta, ma
vsoxei8.v v8, (a0), v0
@@ -160,10 +160,10 @@ vsoxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m8, ta, ma
vsoxei8.v v8, (a0), v0
-vsetvli zero, zero, e16, mf2, ta, ma
-vsoxei16.v v8, (a0), v0
vsetvli zero, zero, e16, mf4, ta, ma
vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf2, ta, ma
+vsoxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m1, ta, ma
vsoxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m2, ta, ma
@@ -212,12 +212,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vluxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -226,10 +226,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 62 64.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vluxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -256,12 +256,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 22 8.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 30 16.00 * vluxei64.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vloxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -270,10 +270,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 62 64.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vloxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -300,12 +300,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 22 8.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 30 16.00 * vloxei64.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vsuxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -314,10 +314,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 62 64.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vsuxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -344,12 +344,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 22 8.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 30 16.00 * vsuxei64.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vsoxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -358,10 +358,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 62 64.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vsoxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -410,12 +410,12 @@ vsoxei64.v v8, (a0), v0
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 8.00 - vluxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 4.00 - vluxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 2.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vluxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 16.00 - vluxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -424,10 +424,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - 64.00 - vluxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 128.00 - vluxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 4.00 - vluxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 2.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vluxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 8.00 - vluxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -454,12 +454,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - 8.00 - vluxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 16.00 - vluxei64.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 8.00 - vloxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 4.00 - vloxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 2.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 8.00 - vloxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 16.00 - vloxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -468,10 +468,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - 64.00 - vloxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 128.00 - vloxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - 4.00 - vloxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 2.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - 4.00 - vloxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 8.00 - vloxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -498,12 +498,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - 8.00 - vloxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - 16.00 - vloxei64.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsuxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsuxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsuxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsuxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -512,10 +512,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - 64.00 vsuxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 128.00 vsuxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsuxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsuxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsuxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -542,12 +542,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsuxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsuxei64.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsoxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsoxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsoxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 16.00 vsoxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -556,10 +556,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - 64.00 vsoxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 128.00 vsoxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsoxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 2.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - 4.00 vsoxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - 8.00 vsoxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s
index 3b62055e94463..cc972c6d63454 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vle-vse-vlm.s
@@ -1,11 +1,11 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p670 -iterations=1 < %s | FileCheck %s
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vle8.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vle8.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vle8.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vle8.v v8, (a0)
@@ -16,10 +16,10 @@ vle8.v v8, (a0)
vsetvli zero, zero, e8, m8, ta, ma
vle8.v v8, (a0)
-vsetvli zero, zero, e16, mf2, ta, ma
-vle16.v v8, (a0)
vsetvli zero, zero, e16, mf4, ta, ma
vle16.v v8, (a0)
+vsetvli zero, zero, e16, mf2, ta, ma
+vle16.v v8, (a0)
vsetvli zero, zero, e16, m1, ta, ma
vle16.v v8, (a0)
vsetvli zero, zero, e16, m2, ta, ma
@@ -49,11 +49,11 @@ vle64.v v8, (a0)
vsetvli zero, zero, e64, m8, ta, ma
vle64.v v8, (a0)
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vse8.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vse8.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vse8.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vse8.v v8, (a0)
@@ -64,10 +64,10 @@ vse8.v v8, (a0)
vsetvli zero, zero, e8, m8, ta, ma
vse8.v v8, (a0)
-vsetvli zero, zero, e16, mf2, ta, ma
-vse16.v v8, (a0)
vsetvli zero, zero, e16, mf4, ta, ma
vse16.v v8, (a0)
+vsetvli zero, zero, e16, mf2, ta, ma
+vse16.v v8, (a0)
vsetvli zero, zero, e16, m1, ta, ma
vse16.v v8, (a0)
vsetvli zero, zero, e16, m2, ta, ma
@@ -99,11 +99,11 @@ vse64.v v8, (a0)
# Unit-stride mask load/store
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vlm.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vlm.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vlm.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vlm.v v8, (a0)
@@ -114,11 +114,11 @@ vlm.v v8, (a0)
vsetvli zero, zero, e8, m8, ta, ma
vlm.v v8, (a0)
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vsm.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vsm.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vsm.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vsm.v v8, (a0)
@@ -131,11 +131,11 @@ vsm.v v8, (a0)
# Fault-only-first
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vle8ff.v v8, (a0)
vsetvli zero, zero, e8, mf4, ta, ma
vle8ff.v v8, (a0)
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vle8ff.v v8, (a0)
vsetvli zero, zero, e8, m1, ta, ma
vle8ff.v v8, (a0)
@@ -146,10 +146,10 @@ vle8ff.v v8, (a0)
vsetvli zero, zero, e8, m8, ta, ma
vle8ff.v v8, (a0)
-vsetvli zero, zero, e16, mf2, ta, ma
-vle16ff.v v8, (a0)
vsetvli zero, zero, e16, mf4, ta, ma
vle16ff.v v8, (a0)
+vsetvli zero, zero, e16, mf2, ta, ma
+vle16ff.v v8, (a0)
vsetvli zero, zero, e16, m1, ta, ma
vle16ff.v v8, (a0)
vsetvli zero, zero, e16, m2, ta, ma
@@ -198,11 +198,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8.v v8, (a0)
@@ -212,10 +212,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vle8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vle8.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -242,11 +242,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vle64.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vle64.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse8.v v8, (a0)
@@ -256,10 +256,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vse8.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vse8.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vse16.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -286,11 +286,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vse64.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vse64.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
@@ -300,11 +300,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vlm.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
@@ -314,11 +314,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vsm.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle8ff.v v8, (a0)
@@ -328,10 +328,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: 1 8 4.00 * vle8ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 8 8.00 * vle8ff.v v8, (a0)
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 8 1.00 * vle16ff.v v8, (a0)
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -383,11 +383,11 @@ vle64ff.v v8, (a0)
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8.0] [8.1] [9] [10] [11] [12] [13] [14] Instructions:
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8.v v8, (a0)
@@ -397,10 +397,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle8.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -427,11 +427,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle64.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle64.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse8.v v8, (a0)
@@ -441,10 +441,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vse8.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vse8.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vse16.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -471,11 +471,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vse64.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vse64.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
@@ -485,11 +485,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vlm.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
@@ -499,11 +499,11 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 vsm.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle8ff.v v8, (a0)
@@ -513,10 +513,10 @@ vle64ff.v v8, (a0)
# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vle8ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vle8ff.v v8, (a0)
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - vle16ff.v v8, (a0)
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s
index 7363755828134..418eda5f3b145 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlse-vsse.s
@@ -1,11 +1,11 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p670 -iterations=1 < %s | FileCheck %s
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vlse8.v v8, (a0), t0
vsetvli zero, zero, e8, mf4, ta, ma
vlse8.v v8, (a0), t0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vlse8.v v8, (a0), t0
vsetvli zero, zero, e8, m1, ta, ma
vlse8.v v8, (a0), t0
@@ -16,10 +16,10 @@ vlse8.v v8, (a0), t0
vsetvli zero, zero, e8, m8, ta, ma
vlse8.v v8, (a0), t0
-vsetvli zero, zero, e16, mf2, ta, ma
-vlse16.v v8, (a0), t0
vsetvli zero, zero, e16, mf4, ta, ma
vlse16.v v8, (a0), t0
+vsetvli zero, zero, e16, mf2, ta, ma
+vlse16.v v8, (a0), t0
vsetvli zero, zero, e16, m1, ta, ma
vlse16.v v8, (a0), t0
vsetvli zero, zero, e16, m2, ta, ma
@@ -49,11 +49,11 @@ vlse64.v v8, (a0), t0
vsetvli zero, zero, e64, m8, ta, ma
vlse64.v v8, (a0), t0
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vsse8.v v8, (a0), t0
vsetvli zero, zero, e8, mf4, ta, ma
vsse8.v v8, (a0), t0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vsse8.v v8, (a0), t0
vsetvli zero, zero, e8, m1, ta, ma
vsse8.v v8, (a0), t0
@@ -64,10 +64,10 @@ vsse8.v v8, (a0), t0
vsetvli zero, zero, e8, m8, ta, ma
vsse8.v v8, (a0), t0
-vsetvli zero, zero, e16, mf2, ta, ma
-vsse16.v v8, (a0), t0
vsetvli zero, zero, e16, mf4, ta, ma
vsse16.v v8, (a0), t0
+vsetvli zero, zero, e16, mf2, ta, ma
+vsse16.v v8, (a0), t0
vsetvli zero, zero, e16, m1, ta, ma
vsse16.v v8, (a0), t0
vsetvli zero, zero, e16, m2, ta, ma
@@ -116,12 +116,12 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vlse8.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vlse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -130,10 +130,10 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 62 64.00 * vlse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vlse8.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vlse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vlse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -160,12 +160,12 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 22 8.00 * vlse64.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 30 16.00 * vlse64.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vsse8.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsse8.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -174,10 +174,10 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: 1 62 64.00 * vsse8.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vsse8.v v8, (a0), t0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsse16.v v8, (a0), t0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vsse16.v v8, (a0), t0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -229,12 +229,12 @@ vsse64.v v8, (a0), t0
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8.0] [8.1] [9] [10] [11] [12] [13] [14] Instructions:
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vlse8.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vlse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vlse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vlse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vlse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -243,10 +243,10 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: - - - - - - - - - - - - - - 64.00 - vlse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 128.00 - vlse8.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vlse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vlse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vlse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vlse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -273,12 +273,12 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vlse64.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vlse64.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsse8.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsse8.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -287,10 +287,10 @@ vsse64.v v8, (a0), t0
# CHECK-NEXT: - - - - - - - - - - - - - - - 64.00 vsse8.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 128.00 vsse8.v v8, (a0), t0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsse16.v v8, (a0), t0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsse16.v v8, (a0), t0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s
index 851c241505e53..2671e0bb2f5d6 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveP600/vlxe-vsxe.s
@@ -1,11 +1,11 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p670 -iterations=1 < %s | FileCheck %s
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vluxei8.v v8, (a0), v0
vsetvli zero, zero, e8, mf4, ta, ma
vluxei8.v v8, (a0), v0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vluxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m1, ta, ma
vluxei8.v v8, (a0), v0
@@ -16,10 +16,10 @@ vluxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m8, ta, ma
vluxei8.v v8, (a0), v0
-vsetvli zero, zero, e16, mf2, ta, ma
-vluxei16.v v8, (a0), v0
vsetvli zero, zero, e16, mf4, ta, ma
vluxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf2, ta, ma
+vluxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m1, ta, ma
vluxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m2, ta, ma
@@ -49,11 +49,11 @@ vluxei64.v v8, (a0), v0
vsetvli zero, zero, e64, m8, ta, ma
vluxei64.v v8, (a0), v0
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vloxei8.v v8, (a0), v0
vsetvli zero, zero, e8, mf4, ta, ma
vloxei8.v v8, (a0), v0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vloxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m1, ta, ma
vloxei8.v v8, (a0), v0
@@ -64,10 +64,10 @@ vloxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m8, ta, ma
vloxei8.v v8, (a0), v0
-vsetvli zero, zero, e16, mf2, ta, ma
-vloxei16.v v8, (a0), v0
vsetvli zero, zero, e16, mf4, ta, ma
vloxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf2, ta, ma
+vloxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m1, ta, ma
vloxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m2, ta, ma
@@ -97,11 +97,11 @@ vloxei64.v v8, (a0), v0
vsetvli zero, zero, e64, m8, ta, ma
vloxei64.v v8, (a0), v0
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vsuxei8.v v8, (a0), v0
vsetvli zero, zero, e8, mf4, ta, ma
vsuxei8.v v8, (a0), v0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vsuxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m1, ta, ma
vsuxei8.v v8, (a0), v0
@@ -112,10 +112,10 @@ vsuxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m8, ta, ma
vsuxei8.v v8, (a0), v0
-vsetvli zero, zero, e16, mf2, ta, ma
-vsuxei16.v v8, (a0), v0
vsetvli zero, zero, e16, mf4, ta, ma
vsuxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf2, ta, ma
+vsuxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m1, ta, ma
vsuxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m2, ta, ma
@@ -145,11 +145,11 @@ vsuxei64.v v8, (a0), v0
vsetvli zero, zero, e64, m8, ta, ma
vsuxei64.v v8, (a0), v0
-vsetvli zero, zero, e8, mf2, ta, ma
+vsetvli zero, zero, e8, mf8, ta, ma
vsoxei8.v v8, (a0), v0
vsetvli zero, zero, e8, mf4, ta, ma
vsoxei8.v v8, (a0), v0
-vsetvli zero, zero, e8, mf8, ta, ma
+vsetvli zero, zero, e8, mf2, ta, ma
vsoxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m1, ta, ma
vsoxei8.v v8, (a0), v0
@@ -160,10 +160,10 @@ vsoxei8.v v8, (a0), v0
vsetvli zero, zero, e8, m8, ta, ma
vsoxei8.v v8, (a0), v0
-vsetvli zero, zero, e16, mf2, ta, ma
-vsoxei16.v v8, (a0), v0
vsetvli zero, zero, e16, mf4, ta, ma
vsoxei16.v v8, (a0), v0
+vsetvli zero, zero, e16, mf2, ta, ma
+vsoxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m1, ta, ma
vsoxei16.v v8, (a0), v0
vsetvli zero, zero, e16, m2, ta, ma
@@ -212,12 +212,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vluxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vluxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -226,10 +226,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 62 64.00 * vluxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vluxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vluxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vluxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -256,12 +256,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 22 8.00 * vluxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 30 16.00 * vluxei64.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vloxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vloxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -270,10 +270,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 62 64.00 * vloxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vloxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vloxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vloxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -300,12 +300,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 22 8.00 * vloxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 30 16.00 * vloxei64.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vsuxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -314,10 +314,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 62 64.00 * vsuxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vsuxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vsuxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -344,12 +344,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 22 8.00 * vsuxei64.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: 1 30 16.00 * vsuxei64.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: 1 22 8.00 * vsoxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: 1 22 8.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: 1 30 16.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m2, ta, ma
@@ -358,10 +358,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: 1 62 64.00 * vsoxei8.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: 1 126 128.00 * vsoxei8.v v8, (a0), v0
-# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: 1 18 4.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: 1 13 2.00 * vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: 1 18 4.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: 1 22 8.00 * vsoxei16.v v8, (a0), v0
# CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e16, m2, ta, ma
@@ -413,12 +413,12 @@ vsoxei64.v v8, (a0), v0
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8.0] [8.1] [9] [10] [11] [12] [13] [14] Instructions:
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vluxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vluxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vluxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vluxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vluxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -427,10 +427,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - - - 64.00 - vluxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 128.00 - vluxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vluxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vluxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vluxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vluxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -457,12 +457,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vluxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vluxei64.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vloxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vloxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vloxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vloxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vloxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -471,10 +471,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - - - 64.00 - vloxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 128.00 - vloxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vloxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - vloxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - vloxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vloxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -501,12 +501,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - - - 8.00 - vloxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - 16.00 - vloxei64.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsuxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsuxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsuxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsuxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsuxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -515,10 +515,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - - - - 64.00 vsuxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 128.00 vsuxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsuxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsuxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsuxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsuxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
@@ -545,12 +545,12 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsuxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e64, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsuxei64.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsoxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsoxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf4, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsoxei8.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsoxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 16.00 vsoxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m2, ta, ma
@@ -559,10 +559,10 @@ vsoxei64.v v8, (a0), v0
# CHECK-NEXT: - - - - - - - - - - - - - - - 64.00 vsoxei8.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e8, m8, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 128.00 vsoxei8.v v8, (a0), v0
-# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
-# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsoxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf4, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 2.00 vsoxei16.v v8, (a0), v0
+# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, mf2, ta, ma
+# CHECK-NEXT: - - - - - - - - - - - - - - - 4.00 vsoxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m1, ta, ma
# CHECK-NEXT: - - - - - - - - - - - - - - - 8.00 vsoxei16.v v8, (a0), v0
# CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - vsetvli zero, zero, e16, m2, ta, ma
More information about the llvm-commits
mailing list