From 8dd24026c04d7d0d36c3de8a4c9cc3c86e67ba15 Mon Sep 17 00:00:00 2001 From: luxufan <932494295@qq.com> Date: Fri, 31 Jul 2020 13:03:57 +0800 Subject: [PATCH] [RISCV] add the MC layer support of riscv vector Zvamo extension Implements the assemble and disassemble support of RISCV Vector extension zvamo instructions, base on the 0.9 spec version. Reviewed by HsiangKai Differential Revision: https://reviews.llvm.org/D85069 --- lib/Target/RISCV/RISCV.td | 7 + lib/Target/RISCV/RISCVInstrFormatsV.td | 32 + lib/Target/RISCV/RISCVInstrInfoV.td | 78 +++ lib/Target/RISCV/RISCVSchedRocket32.td | 2 +- lib/Target/RISCV/RISCVSchedRocket64.td | 2 +- lib/Target/RISCV/RISCVSubtarget.h | 2 + test/MC/RISCV/rvv/zvamo.s | 874 +++++++++++++++++++++++++ 7 files changed, 995 insertions(+), 2 deletions(-) create mode 100644 test/MC/RISCV/rvv/zvamo.s diff --git a/lib/Target/RISCV/RISCV.td b/lib/Target/RISCV/RISCV.td index 493f5fa0b67..73fcbb43adb 100644 --- a/lib/Target/RISCV/RISCV.td +++ b/lib/Target/RISCV/RISCV.td @@ -162,6 +162,13 @@ def FeatureStdExtZvlsseg def HasStdExtZvlsseg : Predicate<"Subtarget->hasStdExtZvlsseg()">, AssemblerPredicate<(all_of FeatureStdExtZvlsseg), "'Zvlsseg' (Vector segment load/store instructions)">; +def FeatureExtZvamo + : SubtargetFeature<"experimental-zvamo", "HasStdExtZvamo", "true", + "'Zvamo'(Vector AMO Operations)", + [FeatureStdExtV]>; +def HasStdExtZvamo : Predicate<"Subtarget->hasStdExtZvamo()">, + AssemblerPredicate<(all_of FeatureExtZvamo), + "'Zvamo'(Vector AMO Operations)">; def Feature64Bit : SubtargetFeature<"64bit", "HasRV64", "true", "Implements RV64">; diff --git a/lib/Target/RISCV/RISCVInstrFormatsV.td b/lib/Target/RISCV/RISCVInstrFormatsV.td index 8ca010d033c..030571a370f 100644 --- a/lib/Target/RISCV/RISCVInstrFormatsV.td +++ b/lib/Target/RISCV/RISCVInstrFormatsV.td @@ -42,6 +42,19 @@ def LUMOPUnitStrideFF: RISCVLSUMOP<0b10000>; def SUMOPUnitStride : RISCVLSUMOP<0b00000>; def SUMOPUnitStrideWholeReg : RISCVLSUMOP<0b01000>; +class RISCVAMOOP val> { + bits<5> Value = val; +} +def AMOOPVamoSwap : RISCVAMOOP<0b00001>; +def AMOOPVamoAdd : RISCVAMOOP<0b00000>; +def AMOOPVamoXor : RISCVAMOOP<0b00100>; +def AMOOPVamoAnd : RISCVAMOOP<0b01100>; +def AMOOPVamoOr : RISCVAMOOP<0b01000>; +def AMOOPVamoMin : RISCVAMOOP<0b10000>; +def AMOOPVamoMax : RISCVAMOOP<0b10100>; +def AMOOPVamoMinu : RISCVAMOOP<0b11000>; +def AMOOPVamoMaxu : RISCVAMOOP<0b11100>; + class RISCVWidth val> { bits<4> Value = val; } @@ -313,3 +326,22 @@ class RVInstVSX nf, bit mew, RISCVMOP mop, bits<3> width, let Uses = [VTYPE, VL]; } + +class RVInstVAMO width, dag outs, + dag ins, string opcodestr, string argstr> + : RVInst { + bits<5> vs2; + bits<5> rs1; + bit wd; + bit vm; + + let Inst{31-27} = amoop.Value; + let Inst{26} = wd; + let Inst{25} = vm; + let Inst{24-20} = vs2; + let Inst{19-15} = rs1; + let Inst{14-12} = width; + let Opcode = OPC_AMO.Value; + + let Uses = [VTYPE, VL]; +} diff --git a/lib/Target/RISCV/RISCVInstrInfoV.td b/lib/Target/RISCV/RISCVInstrInfoV.td index 70afcc6776d..3ac474cb654 100644 --- a/lib/Target/RISCV/RISCVInstrInfoV.td +++ b/lib/Target/RISCV/RISCVInstrInfoV.td @@ -293,6 +293,29 @@ class VALUVs2 funct6, bits<5> vs1, RISCVVFormat opv, string opcodestr> opcodestr, "$vd, $vs2$vm">; } // hasSideEffects = 0, mayLoad = 0, mayStore = 0 +let hasSideEffects = 0, mayLoad = 1, mayStore = 1 in { +// vamo vd, (rs1), vs2, vd, vm +class VAMOWd + : RVInstVAMO { + let Constraints = "$vd_wd = $vd"; + let wd = 1; + bits<5> vd; + let Inst{11-7} = vd; +} + +// vamo x0, (rs1), vs2, vs3, vm +class VAMONoWd + : RVInstVAMO { + bits<5> vs3; + let Inst{11-7} = vs3; +} + +} // hasSideEffects = 0, mayLoad = 1, mayStore = 1 + //===----------------------------------------------------------------------===// // Combination of instruction classes. // Use these multiclasses to define instructions more easily. @@ -400,6 +423,11 @@ multiclass VALU_FV_VS2 funct6, bits<5> vs1> { def "" : VALUVs2; } +multiclass VAMO { + def _WD : VAMOWd; + def _UNWD : VAMONoWd; +} + //===----------------------------------------------------------------------===// // Instructions //===----------------------------------------------------------------------===// @@ -1021,3 +1049,53 @@ let Predicates = [HasStdExtZvlsseg] in { def VSXSEG#nf#EI1024_V : VIndexedSegmentStore; } } // Predicates = [HasStdExtZvlsseg] + +let Predicates = [HasStdExtZvamo, HasStdExtA] in { + defm VAMOSWAPEI8 : VAMO; + defm VAMOSWAPEI16 : VAMO; + defm VAMOSWAPEI32 : VAMO; + + defm VAMOADDEI8 : VAMO; + defm VAMOADDEI16 : VAMO; + defm VAMOADDEI32 : VAMO; + + defm VAMOXOREI8 : VAMO; + defm VAMOXOREI16 : VAMO; + defm VAMOXOREI32 : VAMO; + + defm VAMOANDEI8 : VAMO; + defm VAMOANDEI16 : VAMO; + defm VAMOANDEI32 : VAMO; + + defm VAMOOREI8 : VAMO; + defm VAMOOREI16 : VAMO; + defm VAMOOREI32 : VAMO; + + defm VAMOMINEI8 : VAMO; + defm VAMOMINEI16 : VAMO; + defm VAMOMINEI32 : VAMO; + + defm VAMOMAXEI8 : VAMO; + defm VAMOMAXEI16 : VAMO; + defm VAMOMAXEI32 : VAMO; + + defm VAMOMINUEI8 : VAMO; + defm VAMOMINUEI16 : VAMO; + defm VAMOMINUEI32 : VAMO; + + defm VAMOMAXUEI8 : VAMO; + defm VAMOMAXUEI16 : VAMO; + defm VAMOMAXUEI32 : VAMO; +} // Predicates = [HasStdExtZvamo, HasStdExtA] + +let Predicates = [HasStdExtZvamo, HasStdExtA, IsRV64] in { + defm VAMOSWAPEI64 : VAMO; + defm VAMOADDEI64 : VAMO; + defm VAMOXOREI64 : VAMO; + defm VAMOANDEI64 : VAMO; + defm VAMOOREI64 : VAMO; + defm VAMOMINEI64 : VAMO; + defm VAMOMAXEI64 : VAMO; + defm VAMOMINUEI64 : VAMO; + defm VAMOMAXUEI64 : VAMO; +} // Predicates = [HasStdExtZvamo, HasStdExtA, IsRV64] diff --git a/lib/Target/RISCV/RISCVSchedRocket32.td b/lib/Target/RISCV/RISCVSchedRocket32.td index f9f80848e12..1cb474b54d8 100644 --- a/lib/Target/RISCV/RISCVSchedRocket32.td +++ b/lib/Target/RISCV/RISCVSchedRocket32.td @@ -17,7 +17,7 @@ def Rocket32Model : SchedMachineModel { let LoadLatency = 3; let MispredictPenalty = 3; let CompleteModel = 1; - let UnsupportedFeatures = [HasStdExtV, HasStdExtZvlsseg]; + let UnsupportedFeatures = [HasStdExtV, HasStdExtZvlsseg, HasStdExtZvamo]; } //===----------------------------------------------------------------------===// diff --git a/lib/Target/RISCV/RISCVSchedRocket64.td b/lib/Target/RISCV/RISCVSchedRocket64.td index 9b5aa776a0d..8a29762e5ad 100644 --- a/lib/Target/RISCV/RISCVSchedRocket64.td +++ b/lib/Target/RISCV/RISCVSchedRocket64.td @@ -16,7 +16,7 @@ def Rocket64Model : SchedMachineModel { let IssueWidth = 1; // 1 micro-ops are dispatched per cycle. let LoadLatency = 3; let MispredictPenalty = 3; - let UnsupportedFeatures = [HasStdExtV, HasStdExtZvlsseg]; + let UnsupportedFeatures = [HasStdExtV, HasStdExtZvlsseg, HasStdExtZvamo]; } //===----------------------------------------------------------------------===// diff --git a/lib/Target/RISCV/RISCVSubtarget.h b/lib/Target/RISCV/RISCVSubtarget.h index 72d35515d51..245c8eb01e3 100644 --- a/lib/Target/RISCV/RISCVSubtarget.h +++ b/lib/Target/RISCV/RISCVSubtarget.h @@ -52,6 +52,7 @@ class RISCVSubtarget : public RISCVGenSubtargetInfo { bool HasStdExtZbproposedc = false; bool HasStdExtV = false; bool HasStdExtZvlsseg = false; + bool HasStdExtZvamo = false; bool HasRV64 = false; bool IsRV32E = false; bool EnableLinkerRelax = false; @@ -114,6 +115,7 @@ public: bool hasStdExtZbproposedc() const { return HasStdExtZbproposedc; } bool hasStdExtV() const { return HasStdExtV; } bool hasStdExtZvlsseg() const { return HasStdExtZvlsseg; } + bool hasStdExtZvamo() const { return HasStdExtZvamo; } bool is64Bit() const { return HasRV64; } bool isRV32E() const { return IsRV32E; } bool enableLinkerRelax() const { return EnableLinkerRelax; } diff --git a/test/MC/RISCV/rvv/zvamo.s b/test/MC/RISCV/rvv/zvamo.s new file mode 100644 index 00000000000..8c38ff8e1a1 --- /dev/null +++ b/test/MC/RISCV/rvv/zvamo.s @@ -0,0 +1,874 @@ +# RUN: llvm-mc -triple=riscv64 -show-encoding --mattr=+a,+experimental-zvamo %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv64 -show-encoding %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv64 -filetype=obj --mattr=+a,+experimental-zvamo %s \ +# RUN: | llvm-objdump -d --mattr=+a,+experimental-zvamo - \ +# RUN: | FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv64 -filetype=obj --mattr=+a,+experimental-zvamo %s \ +# RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN + + +vamoswapei8.v v8, (a0), v4, v8 +# CHECK-INST: vamoswapei8.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x04,0x45,0x0e] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 0e + +vamoswapei16.v v8, (a0), v4, v8 +# CHECK-INST: vamoswapei16.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x54,0x45,0x0e] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 0e + +vamoswapei32.v v8, (a0), v4, v8 +# CHECK-INST: vamoswapei32.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x64,0x45,0x0e] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 0e + +vamoswapei64.v v8, (a0), v4, v8 +# CHECK-INST: vamoswapei64.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x74,0x45,0x0e] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 0e + +vamoswapei8.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoswapei8.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x04,0x45,0x0c] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 0c + +vamoswapei16.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoswapei16.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x54,0x45,0x0c] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 0c + +vamoswapei32.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoswapei32.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x64,0x45,0x0c] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 0c + +vamoswapei64.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoswapei64.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x74,0x45,0x0c] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 0c + +vamoaddei8.v v8, (a0), v4, v8 +# CHECK-INST: vamoaddei8.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x04,0x45,0x06] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 06 + +vamoaddei16.v v8, (a0), v4, v8 +# CHECK-INST: vamoaddei16.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x54,0x45,0x06] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 06 + +vamoaddei32.v v8, (a0), v4, v8 +# CHECK-INST: vamoaddei32.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x64,0x45,0x06] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 06 + +vamoaddei64.v v8, (a0), v4, v8 +# CHECK-INST: vamoaddei64.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x74,0x45,0x06] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 06 + +vamoaddei8.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoaddei8.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x04,0x45,0x04] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 04 + +vamoaddei16.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoaddei16.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x54,0x45,0x04] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 04 + +vamoaddei32.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoaddei32.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x64,0x45,0x04] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 04 + +vamoaddei64.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoaddei64.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x74,0x45,0x04] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 04 + +vamoxorei8.v v8, (a0), v4, v8 +# CHECK-INST: vamoxorei8.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x04,0x45,0x26] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 26 + +vamoxorei16.v v8, (a0), v4, v8 +# CHECK-INST: vamoxorei16.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x54,0x45,0x26] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 26 + +vamoxorei32.v v8, (a0), v4, v8 +# CHECK-INST: vamoxorei32.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x64,0x45,0x26] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 26 + +vamoxorei64.v v8, (a0), v4, v8 +# CHECK-INST: vamoxorei64.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x74,0x45,0x26] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 26 + +vamoxorei8.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoxorei8.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x04,0x45,0x24] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 24 + +vamoxorei16.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoxorei16.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x54,0x45,0x24] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 24 + +vamoxorei32.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoxorei32.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x64,0x45,0x24] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 24 + +vamoxorei64.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoxorei64.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x74,0x45,0x24] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 24 + +vamoandei8.v v8, (a0), v4, v8 +# CHECK-INST: vamoandei8.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x04,0x45,0x66] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 66 + +vamoandei16.v v8, (a0), v4, v8 +# CHECK-INST: vamoandei16.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x54,0x45,0x66] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 66 + +vamoandei32.v v8, (a0), v4, v8 +# CHECK-INST: vamoandei32.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x64,0x45,0x66] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 66 + +vamoandei64.v v8, (a0), v4, v8 +# CHECK-INST: vamoandei64.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x74,0x45,0x66] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 66 + +vamoandei8.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoandei8.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x04,0x45,0x64] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 64 + +vamoandei16.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoandei16.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x54,0x45,0x64] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 64 + +vamoandei32.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoandei32.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x64,0x45,0x64] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 64 + +vamoandei64.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoandei64.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x74,0x45,0x64] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 64 + +vamoorei8.v v8, (a0), v4, v8 +# CHECK-INST: vamoorei8.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x04,0x45,0x46] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 46 + +vamoorei16.v v8, (a0), v4, v8 +# CHECK-INST: vamoorei16.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x54,0x45,0x46] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 46 + +vamoorei32.v v8, (a0), v4, v8 +# CHECK-INST: vamoorei32.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x64,0x45,0x46] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 46 + +vamoorei64.v v8, (a0), v4, v8 +# CHECK-INST: vamoorei64.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x74,0x45,0x46] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 46 + +vamoorei8.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoorei8.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x04,0x45,0x44] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 44 + +vamoorei16.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoorei16.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x54,0x45,0x44] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 44 + +vamoorei32.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoorei32.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x64,0x45,0x44] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 44 + +vamoorei64.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamoorei64.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x74,0x45,0x44] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 44 + +vamominei8.v v8, (a0), v4, v8 +# CHECK-INST: vamominei8.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x04,0x45,0x86] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 86 + +vamominei16.v v8, (a0), v4, v8 +# CHECK-INST: vamominei16.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x54,0x45,0x86] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 86 + +vamominei32.v v8, (a0), v4, v8 +# CHECK-INST: vamominei32.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x64,0x45,0x86] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 86 + +vamominei64.v v8, (a0), v4, v8 +# CHECK-INST: vamominei64.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x74,0x45,0x86] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 86 + +vamominei8.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamominei8.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x04,0x45,0x84] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 84 + +vamominei16.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamominei16.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x54,0x45,0x84] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 84 + +vamominei32.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamominei32.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x64,0x45,0x84] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 84 + +vamominei64.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamominei64.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x74,0x45,0x84] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 84 + +vamomaxei8.v v8, (a0), v4, v8 +# CHECK-INST: vamomaxei8.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x04,0x45,0xa6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 a6 + +vamomaxei16.v v8, (a0), v4, v8 +# CHECK-INST: vamomaxei16.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x54,0x45,0xa6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 a6 + +vamomaxei32.v v8, (a0), v4, v8 +# CHECK-INST: vamomaxei32.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x64,0x45,0xa6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 a6 + +vamomaxei64.v v8, (a0), v4, v8 +# CHECK-INST: vamomaxei64.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x74,0x45,0xa6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 a6 + +vamomaxei8.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamomaxei8.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x04,0x45,0xa4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 a4 + +vamomaxei16.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamomaxei16.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x54,0x45,0xa4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 a4 + +vamomaxei32.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamomaxei32.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x64,0x45,0xa4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 a4 + +vamomaxei64.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamomaxei64.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x74,0x45,0xa4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 a4 + +vamominuei8.v v8, (a0), v4, v8 +# CHECK-INST: vamominuei8.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x04,0x45,0xc6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 c6 + +vamominuei16.v v8, (a0), v4, v8 +# CHECK-INST: vamominuei16.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x54,0x45,0xc6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 c6 + +vamominuei32.v v8, (a0), v4, v8 +# CHECK-INST: vamominuei32.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x64,0x45,0xc6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 c6 + +vamominuei64.v v8, (a0), v4, v8 +# CHECK-INST: vamominuei64.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x74,0x45,0xc6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 c6 + +vamominuei8.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamominuei8.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x04,0x45,0xc4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 c4 + +vamominuei16.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamominuei16.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x54,0x45,0xc4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 c4 + +vamominuei32.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamominuei32.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x64,0x45,0xc4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 c4 + +vamominuei64.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamominuei64.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x74,0x45,0xc4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 c4 + +vamomaxuei8.v v8, (a0), v4, v8 +# CHECK-INST: vamomaxuei8.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x04,0x45,0xe6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 e6 + +vamomaxuei16.v v8, (a0), v4, v8 +# CHECK-INST: vamomaxuei16.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x54,0x45,0xe6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 e6 + +vamomaxuei32.v v8, (a0), v4, v8 +# CHECK-INST: vamomaxuei32.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x64,0x45,0xe6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 e6 + +vamomaxuei64.v v8, (a0), v4, v8 +# CHECK-INST: vamomaxuei64.v v8, (a0), v4, v8 +# CHECK-ENCODING: [0x2f,0x74,0x45,0xe6] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 e6 + +vamomaxuei8.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamomaxuei8.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x04,0x45,0xe4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 04 45 e4 + +vamomaxuei16.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamomaxuei16.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x54,0x45,0xe4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 54 45 e4 + +vamomaxuei32.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamomaxuei32.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x64,0x45,0xe4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 64 45 e4 + +vamomaxuei64.v v8, (a0), v4, v8, v0.t +# CHECK-INST: vamomaxuei64.v v8, (a0), v4, v8, v0.t +# CHECK-ENCODING: [0x2f,0x74,0x45,0xe4] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 74 45 e4 + +vamoswapei8.v x0, (a0), v4, v24 +# CHECK-INST: vamoswapei8.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x0a] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 0a + +vamoswapei16.v x0, (a0), v4, v24 +# CHECK-INST: vamoswapei16.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x0a] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 0a + +vamoswapei32.v x0, (a0), v4, v24 +# CHECK-INST: vamoswapei32.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x0a] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 0a + +vamoswapei64.v x0, (a0), v4, v24 +# CHECK-INST: vamoswapei64.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x0a] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 0a + +vamoswapei8.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoswapei8.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x08] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 08 + +vamoswapei16.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoswapei16.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x08] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 08 + +vamoswapei32.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoswapei32.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x08] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 08 + +vamoswapei64.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoswapei64.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x08] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 08 + +vamoaddei8.v x0, (a0), v4, v24 +# CHECK-INST: vamoaddei8.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x02] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 02 + +vamoaddei16.v x0, (a0), v4, v24 +# CHECK-INST: vamoaddei16.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x02] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 02 + +vamoaddei32.v x0, (a0), v4, v24 +# CHECK-INST: vamoaddei32.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x02] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 02 + +vamoaddei64.v x0, (a0), v4, v24 +# CHECK-INST: vamoaddei64.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x02] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 02 + +vamoaddei8.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoaddei8.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x00] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 00 + +vamoaddei16.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoaddei16.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x00] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 00 + +vamoaddei32.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoaddei32.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x00] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 00 + +vamoaddei64.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoaddei64.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x00] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 00 + +vamoxorei8.v x0, (a0), v4, v24 +# CHECK-INST: vamoxorei8.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x22] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 22 + +vamoxorei16.v x0, (a0), v4, v24 +# CHECK-INST: vamoxorei16.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x22] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 22 + +vamoxorei32.v x0, (a0), v4, v24 +# CHECK-INST: vamoxorei32.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x22] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 22 + +vamoxorei64.v x0, (a0), v4, v24 +# CHECK-INST: vamoxorei64.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x22] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 22 + +vamoxorei8.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoxorei8.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x20] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 20 + +vamoxorei16.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoxorei16.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x20] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 20 + +vamoxorei32.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoxorei32.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x20] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 20 + +vamoxorei64.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoxorei64.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x20] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 20 + +vamoandei8.v x0, (a0), v4, v24 +# CHECK-INST: vamoandei8.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x62] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 62 + +vamoandei16.v x0, (a0), v4, v24 +# CHECK-INST: vamoandei16.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x62] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 62 + +vamoandei32.v x0, (a0), v4, v24 +# CHECK-INST: vamoandei32.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x62] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 62 + +vamoandei64.v x0, (a0), v4, v24 +# CHECK-INST: vamoandei64.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x62] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 62 + +vamoandei8.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoandei8.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x60] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 60 + +vamoandei16.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoandei16.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x60] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 60 + +vamoandei32.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoandei32.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x60] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 60 + +vamoandei64.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoandei64.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x60] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 60 + +vamoorei8.v x0, (a0), v4, v24 +# CHECK-INST: vamoorei8.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x42] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 42 + +vamoorei16.v x0, (a0), v4, v24 +# CHECK-INST: vamoorei16.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x42] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 42 + +vamoorei32.v x0, (a0), v4, v24 +# CHECK-INST: vamoorei32.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x42] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 42 + +vamoorei64.v x0, (a0), v4, v24 +# CHECK-INST: vamoorei64.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x42] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 42 + +vamoorei8.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoorei8.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x40] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 40 + +vamoorei16.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoorei16.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x40] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 40 + +vamoorei32.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoorei32.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x40] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 40 + +vamoorei64.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamoorei64.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x40] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 40 + +vamominei8.v x0, (a0), v4, v24 +# CHECK-INST: vamominei8.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x82] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 82 + +vamominei16.v x0, (a0), v4, v24 +# CHECK-INST: vamominei16.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x82] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 82 + +vamominei32.v x0, (a0), v4, v24 +# CHECK-INST: vamominei32.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x82] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 82 + +vamominei64.v x0, (a0), v4, v24 +# CHECK-INST: vamominei64.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x82] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 82 + +vamominei8.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamominei8.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x0c,0x45,0x80] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 80 + +vamominei16.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamominei16.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x5c,0x45,0x80] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 80 + +vamominei32.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamominei32.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x6c,0x45,0x80] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 80 + +vamominei64.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamominei64.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x7c,0x45,0x80] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 80 + +vamomaxei8.v x0, (a0), v4, v24 +# CHECK-INST: vamomaxei8.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x0c,0x45,0xa2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 a2 + +vamomaxei16.v x0, (a0), v4, v24 +# CHECK-INST: vamomaxei16.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x5c,0x45,0xa2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 a2 + +vamomaxei32.v x0, (a0), v4, v24 +# CHECK-INST: vamomaxei32.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x6c,0x45,0xa2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 a2 + +vamomaxei64.v x0, (a0), v4, v24 +# CHECK-INST: vamomaxei64.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x7c,0x45,0xa2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 a2 + +vamomaxei8.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamomaxei8.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x0c,0x45,0xa0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 a0 + +vamomaxei16.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamomaxei16.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x5c,0x45,0xa0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 a0 + +vamomaxei32.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamomaxei32.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x6c,0x45,0xa0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 a0 + +vamomaxei64.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamomaxei64.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x7c,0x45,0xa0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 a0 + +vamominuei8.v x0, (a0), v4, v24 +# CHECK-INST: vamominuei8.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x0c,0x45,0xc2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 c2 + +vamominuei16.v x0, (a0), v4, v24 +# CHECK-INST: vamominuei16.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x5c,0x45,0xc2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 c2 + +vamominuei32.v x0, (a0), v4, v24 +# CHECK-INST: vamominuei32.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x6c,0x45,0xc2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 c2 + +vamominuei64.v x0, (a0), v4, v24 +# CHECK-INST: vamominuei64.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x7c,0x45,0xc2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 c2 + +vamominuei8.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamominuei8.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x0c,0x45,0xc0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 c0 + +vamominuei16.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamominuei16.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x5c,0x45,0xc0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 c0 + +vamominuei32.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamominuei32.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x6c,0x45,0xc0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 c0 + +vamominuei64.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamominuei64.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x7c,0x45,0xc0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 c0 + +vamomaxuei8.v x0, (a0), v4, v24 +# CHECK-INST: vamomaxuei8.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x0c,0x45,0xe2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 e2 + +vamomaxuei16.v x0, (a0), v4, v24 +# CHECK-INST: vamomaxuei16.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x5c,0x45,0xe2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 e2 + +vamomaxuei32.v x0, (a0), v4, v24 +# CHECK-INST: vamomaxuei32.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x6c,0x45,0xe2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 e2 + +vamomaxuei64.v x0, (a0), v4, v24 +# CHECK-INST: vamomaxuei64.v x0, (a0), v4, v24 +# CHECK-ENCODING: [0x2f,0x7c,0x45,0xe2] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 e2 + +vamomaxuei8.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamomaxuei8.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x0c,0x45,0xe0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 0c 45 e0 + +vamomaxuei16.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamomaxuei16.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x5c,0x45,0xe0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 5c 45 e0 + +vamomaxuei32.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamomaxuei32.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x6c,0x45,0xe0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 6c 45 e0 + +vamomaxuei64.v x0, (a0), v4, v24, v0.t +# CHECK-INST: vamomaxuei64.v x0, (a0), v4, v24, v0.t +# CHECK-ENCODING: [0x2f,0x7c,0x45,0xe0] +# CHECK-ERROR: instruction requires the following: 'A' (Atomic Instructions), 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 e0 \ No newline at end of file