diff --git a/llvm/lib/Target/RISCV/RISCV.td b/llvm/lib/Target/RISCV/RISCV.td --- a/llvm/lib/Target/RISCV/RISCV.td +++ b/llvm/lib/Target/RISCV/RISCV.td @@ -155,6 +155,14 @@ AssemblerPredicate<(all_of FeatureStdExtV), "'V' (Vector Instructions)">; +def FeatureExtZvamo + : SubtargetFeature<"experimental-zvamo", "HasStdExtZvamo", "true", + "'Zvamo'(Vector AMO Operations)", + [FeatureStdExtA, FeatureStdExtV]>; +def HasStdExtZvamo : Predicate<"Subtarget->hasStdExtZvamo()">, + AssemblerPredicate<(all_of FeatureExtZvamo), + "'Zvamo'(Vector AMO Operations)">; + def Feature64Bit : SubtargetFeature<"64bit", "HasRV64", "true", "Implements RV64">; def IsRV64 : Predicate<"Subtarget->is64Bit()">, diff --git a/llvm/lib/Target/RISCV/RISCVInstrFormatsV.td b/llvm/lib/Target/RISCV/RISCVInstrFormatsV.td --- a/llvm/lib/Target/RISCV/RISCVInstrFormatsV.td +++ b/llvm/lib/Target/RISCV/RISCVInstrFormatsV.td @@ -42,6 +42,19 @@ 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 @@ 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/llvm/lib/Target/RISCV/RISCVInstrInfoV.td b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoV.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoV.td @@ -254,6 +254,29 @@ 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. @@ -361,6 +384,11 @@ def "" : VALUVs2; } +multiclass VAMO { + def _WD : VAMOWd; + def _UNWD : VAMONoWd; +} + //===----------------------------------------------------------------------===// // Instructions //===----------------------------------------------------------------------===// @@ -913,3 +941,50 @@ } } // hasSideEffects = 0, mayLoad = 0, mayStore = 0 } // Predicates = [HasStdExtV] + +let Predicates = [HasStdExtZvamo, IsRV64] in { + defm VAMOSWAPEI8 : VAMO; + defm VAMOSWAPEI16 : VAMO; + defm VAMOSWAPEI32 : VAMO; + defm VAMOSWAPEI64 : VAMO; + + defm VAMOADDEI8 : VAMO; + defm VAMOADDEI16 : VAMO; + defm VAMOADDEI32 : VAMO; + defm VAMOADDEI64 : VAMO; + + defm VAMOXOREI8 : VAMO; + defm VAMOXOREI16 : VAMO; + defm VAMOXOREI32 : VAMO; + defm VAMOXOREI64 : VAMO; + + defm VAMOANDEI8 : VAMO; + defm VAMOANDEI16 : VAMO; + defm VAMOANDEI32 : VAMO; + defm VAMOANDEI64 : VAMO; + + defm VAMOOREI8 : VAMO; + defm VAMOOREI16 : VAMO; + defm VAMOOREI32 : VAMO; + defm VAMOOREI64 : VAMO; + + defm VAMOMINEI8 : VAMO; + defm VAMOMINEI16 : VAMO; + defm VAMOMINEI32 : VAMO; + defm VAMOMINEI64 : VAMO; + + defm VAMOMAXEI8 : VAMO; + defm VAMOMAXEI16 : VAMO; + defm VAMOMAXEI32 : VAMO; + defm VAMOMAXEI64 : VAMO; + + defm VAMOMINUEI8 : VAMO; + defm VAMOMINUEI16 : VAMO; + defm VAMOMINUEI32 : VAMO; + defm VAMOMINUEI64 : VAMO; + + defm VAMOMAXUEI8 : VAMO; + defm VAMOMAXUEI16 : VAMO; + defm VAMOMAXUEI32 : VAMO; + defm VAMOMAXUEI64 : VAMO; +} // Predicates = [HasStdExtZvamo, IsRV64] diff --git a/llvm/lib/Target/RISCV/RISCVSchedRocket32.td b/llvm/lib/Target/RISCV/RISCVSchedRocket32.td --- a/llvm/lib/Target/RISCV/RISCVSchedRocket32.td +++ b/llvm/lib/Target/RISCV/RISCVSchedRocket32.td @@ -17,7 +17,7 @@ let LoadLatency = 3; let MispredictPenalty = 3; let CompleteModel = 1; - let UnsupportedFeatures = [HasStdExtV]; + let UnsupportedFeatures = [HasStdExtV, HasStdExtZvamo]; } //===----------------------------------------------------------------------===// diff --git a/llvm/lib/Target/RISCV/RISCVSchedRocket64.td b/llvm/lib/Target/RISCV/RISCVSchedRocket64.td --- a/llvm/lib/Target/RISCV/RISCVSchedRocket64.td +++ b/llvm/lib/Target/RISCV/RISCVSchedRocket64.td @@ -16,7 +16,7 @@ let IssueWidth = 1; // 1 micro-ops are dispatched per cycle. let LoadLatency = 3; let MispredictPenalty = 3; - let UnsupportedFeatures = [HasStdExtV]; + let UnsupportedFeatures = [HasStdExtV, HasStdExtZvamo]; } //===----------------------------------------------------------------------===// diff --git a/llvm/lib/Target/RISCV/RISCVSubtarget.h b/llvm/lib/Target/RISCV/RISCVSubtarget.h --- a/llvm/lib/Target/RISCV/RISCVSubtarget.h +++ b/llvm/lib/Target/RISCV/RISCVSubtarget.h @@ -51,6 +51,7 @@ bool HasStdExtZbt = false; bool HasStdExtZbproposedc = false; bool HasStdExtV = false; + bool HasStdExtZvamo = false; bool HasRV64 = false; bool IsRV32E = false; bool EnableLinkerRelax = false; @@ -112,6 +113,7 @@ bool hasStdExtZbt() const { return HasStdExtZbt; } bool hasStdExtZbproposedc() const { return HasStdExtZbproposedc; } bool hasStdExtV() const { return HasStdExtV; } + bool hasStdExtZvamo() const { return HasStdExtZvamo; } bool is64Bit() const { return HasRV64; } bool isRV32E() const { return IsRV32E; } bool enableLinkerRelax() const { return EnableLinkerRelax; } diff --git a/llvm/test/MC/RISCV/rvv/zvamo.s b/llvm/test/MC/RISCV/rvv/zvamo.s new file mode 100644 --- /dev/null +++ b/llvm/test/MC/RISCV/rvv/zvamo.s @@ -0,0 +1,874 @@ +# RUN: llvm-mc -triple=riscv64 -show-encoding --mattr=+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=+experimental-zvamo %s \ +# RUN: | llvm-objdump -d --mattr=+experimental-zvamo - \ +# RUN: | FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv64 -filetype=obj --mattr=+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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: 'Zvamo'(Vector AMO Operations) +# CHECK-UNKNOWN: 2f 7c 45 e0 \ No newline at end of file