From aa380c60f53dc987b1a50929fcd1c7f24660d54e Mon Sep 17 00:00:00 2001 From: AinsleySnow <772571228@qq.com> Date: Tue, 17 Oct 2023 11:24:31 +0800 Subject: [PATCH] Add vamo instructions. (#13) * [RVV 0.7.1] Implement vamo instructions. * [RVV 0.7.1] Test vamo instructions. --- .../lib/Target/RISCV/RISCVInstrInfoXTHeadV.td | 81 +++ llvm/test/MC/RISCV/rvv0p71/vector-insns.s | 646 ++++++++---------- 2 files changed, 368 insertions(+), 359 deletions(-) diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoXTHeadV.td b/llvm/lib/Target/RISCV/RISCVInstrInfoXTHeadV.td index c5a80f4419098b..af42a205aad7b0 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoXTHeadV.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoXTHeadV.td @@ -206,6 +206,54 @@ multiclass XVALUm_IV_V_X_I funct6> } } // hasSideEffects = 0, mayLoad = 0, mayStore = 0 +class XInstVAMO amoop, bits<3> 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; + let Inst{26} = wd; + let Inst{25} = vm; + let Inst{24-20} = vs2; + let Inst{19-15} = rs1; + let Inst{14-12} = width; + let Inst{6-0} = OPC_AMO.Value; + + let Uses = [VTYPE, VL]; +} + +let hasSideEffects = 0, mayLoad = 1, mayStore = 1 in { +// vamo vd, vs2, (rs1), vd, vm +class XVAMOWd amoop, bits<3> width, string opcodestr> + : XInstVAMO { + let Constraints = "$vd_wd = $vd"; + let wd = 1; + bits<5> vd; + let Inst{11-7} = vd; +} + +// vamo x0, vs2, (rs1), vs3, vm +class XVAMONoWd amoop, bits<3> width, string opcodestr> + : XInstVAMO { + let wd = 0; + bits<5> vs3; + let Inst{11-7} = vs3; +} + +} // hasSideEffects = 0, mayLoad = 1, mayStore = 1 + +multiclass XVAMO amoop, bits<3> width, string opcodestr> { + def _WD : XVAMOWd; + def _UNWD : XVAMONoWd; +} + //===----------------------------------------------------------------------===// // Instructions //===----------------------------------------------------------------------===// @@ -325,6 +373,39 @@ foreach nf=2-8 in { } } // Predicates = [HasVendorXTHeadV, HasVendorXTHeadVlsseg] +let Predicates = [HasVendorXTHeadV, HasVendorXTHeadVamo, HasStdExtA] in { + // Vector AMO Instruction + defm XVAMO_SWAPW_V : XVAMO<0b00001, 0b110, "vamoswapw.v">; + defm XVAMO_ADDW_V : XVAMO<0b00000, 0b110, "vamoaddw.v">; + defm XVAMO_XORW_V : XVAMO<0b00100, 0b110, "vamoxorw.v">; + defm XVAMO_ANDW_V : XVAMO<0b01100, 0b110, "vamoandw.v">; + defm XVAMO_ORW_V : XVAMO<0b01000, 0b110, "vamoorw.v">; + defm XVAMO_MINW_V : XVAMO<0b10000, 0b110, "vamominw.v">; + defm XVAMO_MAXW_V : XVAMO<0b10100, 0b110, "vamomaxw.v">; + defm XVAMO_MINUW_V : XVAMO<0b11000, 0b110, "vamominuw.v">; + defm XVAMO_MAXUW_V : XVAMO<0b11100, 0b110, "vamomaxuw.v">; + + defm XVAMO_SWAPD_V : XVAMO<0b00001, 0b111, "vamoswapd.v">; + defm XVAMO_ADDD_V : XVAMO<0b00000, 0b111, "vamoaddd.v">; + defm XVAMO_XORD_V : XVAMO<0b00100, 0b111, "vamoxord.v">; + defm XVAMO_ANDD_V : XVAMO<0b01100, 0b111, "vamoandd.v">; + defm XVAMO_ORD_V : XVAMO<0b01000, 0b111, "vamoord.v">; + defm XVAMO_MIND_V : XVAMO<0b10000, 0b111, "vamomind.v">; + defm XVAMO_MAXD_V : XVAMO<0b10100, 0b111, "vamomaxd.v">; + defm XVAMO_MINUD_V : XVAMO<0b11000, 0b111, "vamominud.v">; + defm XVAMO_MAXUD_V : XVAMO<0b11100, 0b111, "vamomaxud.v">; + + defm XVAMO_SWAPQ_V : XVAMO<0b00001, 0b000, "vamoswapq.v">; + defm XVAMO_ADDQ_V : XVAMO<0b00000, 0b000, "vamoaddq.v">; + defm XVAMO_XORQ_V : XVAMO<0b00100, 0b000, "vamoxorq.v">; + defm XVAMO_ANDQ_V : XVAMO<0b01100, 0b000, "vamoandq.v">; + defm XVAMO_ORQ_V : XVAMO<0b01000, 0b000, "vamoorq.v">; + defm XVAMO_MINQ_V : XVAMO<0b10000, 0b000, "vamominq.v">; + defm XVAMO_MAXQ_V : XVAMO<0b10100, 0b000, "vamomaxq.v">; + defm XVAMO_MINUQ_V : XVAMO<0b11000, 0b000, "vamominuq.v">; + defm XVAMO_MAXUQ_V : XVAMO<0b11100, 0b000, "vamomaxuq.v">; +} // Predicates = [HasVendorXTHeadV, HasVendorXTHeadVamo, HasStdExtA] + let Predicates = [HasVendorXTHeadV] in { // Vector Single-Width Integer Add and Subtract defm XVADD_V : VALU_IV_V_X_I<"vadd", 0b000000>; diff --git a/llvm/test/MC/RISCV/rvv0p71/vector-insns.s b/llvm/test/MC/RISCV/rvv0p71/vector-insns.s index fef51810703834..c265756cf4d0b5 100644 --- a/llvm/test/MC/RISCV/rvv0p71/vector-insns.s +++ b/llvm/test/MC/RISCV/rvv0p71/vector-insns.s @@ -3909,365 +3909,293 @@ vlseg8eff.v v4, (a0), v0.t # CHECK-INST: vlseg8eff.v v4, (a0), v0.t # CHECK-ENCODING: [0x07,0x72,0x05,0xe1] -# TODO: rvv 0.7.1 -# vamoaddw.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoaddw.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x06] - -# TODO: rvv 0.7.1 -# vamoaddw.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoaddw.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x02] - -# TODO: rvv 0.7.1 -# vamoaddd.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoaddd.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x06] - -# TODO: rvv 0.7.1 -# vamoaddd.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoaddd.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x02] - -# TODO: rvv 0.7.1 -# vamoaddw.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoaddw.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x04] - -# TODO: rvv 0.7.1 -# vamoaddw.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoaddw.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x00] - -# TODO: rvv 0.7.1 -# vamoaddd.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoaddd.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x04] - -# TODO: rvv 0.7.1 -# vamoaddd.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoaddd.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x00] - -# TODO: rvv 0.7.1 -# vamoswapw.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoswapw.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x0e] - -# TODO: rvv 0.7.1 -# vamoswapw.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoswapw.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x0a] - -# TODO: rvv 0.7.1 -# vamoswapd.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoswapd.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x0e] - -# TODO: rvv 0.7.1 -# vamoswapd.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoswapd.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x0a] - -# TODO: rvv 0.7.1 -# vamoswapw.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoswapw.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x0c] - -# TODO: rvv 0.7.1 -# vamoswapw.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoswapw.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x08] - -# TODO: rvv 0.7.1 -# vamoswapd.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoswapd.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x0c] - -# TODO: rvv 0.7.1 -# vamoswapd.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoswapd.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x08] - -# TODO: rvv 0.7.1 -# vamoxorw.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoxorw.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x26] - -# TODO: rvv 0.7.1 -# vamoxorw.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoxorw.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x22] - -# TODO: rvv 0.7.1 -# vamoxord.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoxord.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x26] - -# TODO: rvv 0.7.1 -# vamoxord.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoxord.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x22] - -# TODO: rvv 0.7.1 -# vamoxorw.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoxorw.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x24] - -# TODO: rvv 0.7.1 -# vamoxorw.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoxorw.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x20] - -# TODO: rvv 0.7.1 -# vamoxord.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoxord.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x24] - -# TODO: rvv 0.7.1 -# vamoxord.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoxord.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x20] - -# TODO: rvv 0.7.1 -# vamoandw.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoandw.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x66] - -# TODO: rvv 0.7.1 -# vamoandw.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoandw.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x62] - -# TODO: rvv 0.7.1 -# vamoandd.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoandd.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x66] - -# TODO: rvv 0.7.1 -# vamoandd.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoandd.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x62] - -# TODO: rvv 0.7.1 -# vamoandw.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoandw.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x64] - -# TODO: rvv 0.7.1 -# vamoandw.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoandw.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x60] - -# TODO: rvv 0.7.1 -# vamoandd.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoandd.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x64] - -# TODO: rvv 0.7.1 -# vamoandd.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoandd.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x60] - -# TODO: rvv 0.7.1 -# vamoorw.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoorw.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x46] - -# TODO: rvv 0.7.1 -# vamoorw.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoorw.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x42] - -# TODO: rvv 0.7.1 -# vamoord.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamoord.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x46] - -# TODO: rvv 0.7.1 -# vamoord.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamoord.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x42] - -# TODO: rvv 0.7.1 -# vamoorw.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoorw.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x44] - -# TODO: rvv 0.7.1 -# vamoorw.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoorw.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x40] - -# TODO: rvv 0.7.1 -# vamoord.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoord.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x44] - -# TODO: rvv 0.7.1 -# vamoord.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamoord.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x40] - -# TODO: rvv 0.7.1 -# vamominw.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamominw.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x86] - -# TODO: rvv 0.7.1 -# vamominw.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamominw.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x82] - -# TODO: rvv 0.7.1 -# vamomind.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamomind.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x86] - -# TODO: rvv 0.7.1 -# vamomind.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamomind.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x82] - -# TODO: rvv 0.7.1 -# vamominw.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamominw.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x84] - -# TODO: rvv 0.7.1 -# vamominw.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamominw.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0x80] - -# TODO: rvv 0.7.1 -# vamomind.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomind.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x84] - -# TODO: rvv 0.7.1 -# vamomind.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomind.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0x80] - -# TODO: rvv 0.7.1 -# vamomaxw.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamomaxw.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xa6] - -# TODO: rvv 0.7.1 -# vamomaxw.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamomaxw.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xa2] - -# TODO: rvv 0.7.1 -# vamomaxd.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamomaxd.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xa6] - -# TODO: rvv 0.7.1 -# vamomaxd.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamomaxd.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xa2] - -# TODO: rvv 0.7.1 -# vamomaxw.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomaxw.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xa4] - -# TODO: rvv 0.7.1 -# vamomaxw.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomaxw.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xa0] - -# TODO: rvv 0.7.1 -# vamomaxd.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomaxd.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xa4] - -# TODO: rvv 0.7.1 -# vamomaxd.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomaxd.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xa0] - -# TODO: rvv 0.7.1 -# vamominuw.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamominuw.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xc6] - -# TODO: rvv 0.7.1 -# vamominuw.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamominuw.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xc2] - -# TODO: rvv 0.7.1 -# vamominud.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamominud.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xc6] - -# TODO: rvv 0.7.1 -# vamominud.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamominud.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xc2] - -# TODO: rvv 0.7.1 -# vamominuw.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamominuw.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xc4] - -# TODO: rvv 0.7.1 -# vamominuw.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamominuw.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xc0] - -# TODO: rvv 0.7.1 -# vamominud.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamominud.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xc4] - -# TODO: rvv 0.7.1 -# vamominud.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamominud.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xc0] - -# TODO: rvv 0.7.1 -# vamomaxuw.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamomaxuw.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xe6] - -# TODO: rvv 0.7.1 -# vamomaxuw.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamomaxuw.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xe2] - -# TODO: rvv 0.7.1 -# vamomaxud.v v4, v8, (a1), v4 -# CHECK-INST-TODO: vamomaxud.v v4, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xe6] - -# TODO: rvv 0.7.1 -# vamomaxud.v zero, v8, (a1), v4 -# CHECK-INST-TODO: vamomaxud.v zero, v8, (a1), v4 -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xe2] - -# TODO: rvv 0.7.1 -# vamomaxuw.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomaxuw.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xe4] - -# TODO: rvv 0.7.1 -# vamomaxuw.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomaxuw.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xe2,0x85,0xe0] - -# TODO: rvv 0.7.1 -# vamomaxud.v v4, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomaxud.v v4, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xe4] - -# TODO: rvv 0.7.1 -# vamomaxud.v zero, v8, (a1), v4, v0.t -# CHECK-INST-TODO: vamomaxud.v zero, v8, (a1), v4, v0.t -# CHECK-ENCODING-TODO: [0x2f,0xf2,0x85,0xe0] +vamoaddw.v v4, v8, (a1), v4 +# CHECK-INST: vamoaddw.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x06] + +vamoaddw.v zero, v8, (a1), v4 +# CHECK-INST: vamoaddw.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x02] + +vamoaddd.v v4, v8, (a1), v4 +# CHECK-INST: vamoaddd.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x06] + +vamoaddd.v zero, v8, (a1), v4 +# CHECK-INST: vamoaddd.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x02] + +vamoaddw.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoaddw.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x04] + +vamoaddw.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoaddw.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x00] + +vamoaddd.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoaddd.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x04] + +vamoaddd.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoaddd.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x00] + +vamoswapw.v v4, v8, (a1), v4 +# CHECK-INST: vamoswapw.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x0e] + +vamoswapw.v zero, v8, (a1), v4 +# CHECK-INST: vamoswapw.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x0a] + +vamoswapd.v v4, v8, (a1), v4 +# CHECK-INST: vamoswapd.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x0e] + +vamoswapd.v zero, v8, (a1), v4 +# CHECK-INST: vamoswapd.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x0a] + +vamoswapw.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoswapw.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x0c] + +vamoswapw.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoswapw.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x08] + +vamoswapd.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoswapd.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x0c] + +vamoswapd.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoswapd.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x08] + +vamoxorw.v v4, v8, (a1), v4 +# CHECK-INST: vamoxorw.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x26] + +vamoxorw.v zero, v8, (a1), v4 +# CHECK-INST: vamoxorw.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x22] + +vamoxord.v v4, v8, (a1), v4 +# CHECK-INST: vamoxord.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x26] + +vamoxord.v zero, v8, (a1), v4 +# CHECK-INST: vamoxord.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x22] + +vamoxorw.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoxorw.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x24] + +vamoxorw.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoxorw.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x20] + +vamoxord.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoxord.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x24] + +vamoxord.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoxord.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x20] + +vamoandw.v v4, v8, (a1), v4 +# CHECK-INST: vamoandw.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x66] + +vamoandw.v zero, v8, (a1), v4 +# CHECK-INST: vamoandw.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x62] + +vamoandd.v v4, v8, (a1), v4 +# CHECK-INST: vamoandd.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x66] + +vamoandd.v zero, v8, (a1), v4 +# CHECK-INST: vamoandd.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x62] + +vamoandw.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoandw.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x64] + +vamoandw.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoandw.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x60] + +vamoandd.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoandd.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x64] + +vamoandd.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoandd.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x60] + +vamoorw.v v4, v8, (a1), v4 +# CHECK-INST: vamoorw.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x46] + +vamoorw.v zero, v8, (a1), v4 +# CHECK-INST: vamoorw.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x42] + +vamoord.v v4, v8, (a1), v4 +# CHECK-INST: vamoord.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x46] + +vamoord.v zero, v8, (a1), v4 +# CHECK-INST: vamoord.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x42] + +vamoorw.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoorw.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x44] + +vamoorw.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoorw.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x40] + +vamoord.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamoord.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x44] + +vamoord.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamoord.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x40] + +vamominw.v v4, v8, (a1), v4 +# CHECK-INST: vamominw.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x86] + +vamominw.v zero, v8, (a1), v4 +# CHECK-INST: vamominw.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x82] + +vamomind.v v4, v8, (a1), v4 +# CHECK-INST: vamomind.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x86] + +vamomind.v zero, v8, (a1), v4 +# CHECK-INST: vamomind.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x82] + +vamominw.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamominw.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x84] + +vamominw.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamominw.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0x80] + +vamomind.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamomind.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x84] + +vamomind.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamomind.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0x80] + +vamomaxw.v v4, v8, (a1), v4 +# CHECK-INST: vamomaxw.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xa6] + +vamomaxw.v zero, v8, (a1), v4 +# CHECK-INST: vamomaxw.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xa2] + +vamomaxd.v v4, v8, (a1), v4 +# CHECK-INST: vamomaxd.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xa6] + +vamomaxd.v zero, v8, (a1), v4 +# CHECK-INST: vamomaxd.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xa2] + +vamomaxw.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamomaxw.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xa4] + +vamomaxw.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamomaxw.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xa0] + +vamomaxd.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamomaxd.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xa4] + +vamomaxd.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamomaxd.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xa0] + +vamominuw.v v4, v8, (a1), v4 +# CHECK-INST: vamominuw.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xc6] + +vamominuw.v zero, v8, (a1), v4 +# CHECK-INST: vamominuw.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xc2] + +vamominud.v v4, v8, (a1), v4 +# CHECK-INST: vamominud.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xc6] + +vamominud.v zero, v8, (a1), v4 +# CHECK-INST: vamominud.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xc2] + +vamominuw.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamominuw.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xc4] + +vamominuw.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamominuw.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xc0] + +vamominud.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamominud.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xc4] + +vamominud.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamominud.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xc0] + +vamomaxuw.v v4, v8, (a1), v4 +# CHECK-INST: vamomaxuw.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xe6] + +vamomaxuw.v zero, v8, (a1), v4 +# CHECK-INST: vamomaxuw.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xe2] + +vamomaxud.v v4, v8, (a1), v4 +# CHECK-INST: vamomaxud.v v4, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xe6] + +vamomaxud.v zero, v8, (a1), v4 +# CHECK-INST: vamomaxud.v x0, v8, (a1), v4 +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xe2] + +vamomaxuw.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamomaxuw.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xe4] + +vamomaxuw.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamomaxuw.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xe2,0x85,0xe0] + +vamomaxud.v v4, v8, (a1), v4, v0.t +# CHECK-INST: vamomaxud.v v4, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xe4] + +vamomaxud.v zero, v8, (a1), v4, v0.t +# CHECK-INST: vamomaxud.v x0, v8, (a1), v4, v0.t +# CHECK-ENCODING: [0x2f,0xf2,0x85,0xe0] vadd.vv v4, v8, v12 # CHECK-INST: vadd.vv v4, v8, v12