// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// This file contains the ISA description for the Cheriot architecture.

includes {
#include "absl/functional/bind_front.h"
}

// First disasm field is 18 char wide and left justified.
disasm widths = {-18};

int global_latency = 0;

isa RiscVCheriot {
  namespace mpact::sim::cheriot::isa32;
  slots { riscv32_cheriot; }
}

// Basic integer ALU instructions, part of the RiscV 32i subset.
slot riscv32i {
  includes {
    #include "cheriot/riscv_cheriot_i_instructions.h"
  }
  default size = 4;
  default latency = global_latency;
  opcodes {
    addi{: rs1, I_imm12 : rd},
      disasm: "addi", "%rd, %rs1, %I_imm12",
      semfunc: "&RiscVIAdd";
    slti{: rs1, I_imm12 : rd},
      disasm: "slti", "%rd, %rs1, %I_imm12",
      semfunc: "&RiscVISlt";
    sltiu{: rs1, I_imm12 : rd},
      disasm: "sltiu", "%rd, %rs1, %I_imm12",
      semfunc: "&RiscVISltu";
    andi{: rs1, I_imm12 : rd},
      disasm: "andi", "%rd, %rs1, %I_imm12",
      semfunc: "&RiscVIAnd";
    ori{: rs1, I_imm12 : rd},
      disasm: "ori", "%rd, %rs1, %I_imm12",
      semfunc: "&RiscVIOr";
    xori{: rs1, I_imm12 : rd},
      disasm: "xori", "%rd, %rs1, %I_imm12",
      semfunc: "&RiscVIXor";
    slli{: rs1, I_uimm5 : rd},
      disasm: "slli", "%rd, %rs1, 0x%(I_uimm5:x)",
      semfunc: "&RiscVISll";
    srli{: rs1, I_uimm5 : rd},
      disasm: "srli", "%rd  %rs1, 0x%(I_uimm5:x)",
      semfunc: "&RiscVISrl";
    srai{: rs1, I_uimm5 : rd},
      disasm: "srai", "%rd, %rs1, 0x%(I_uimm5:x)",
      semfunc: "&RiscVISra";
    lui{: U_imm20 : rd},
      disasm: "lui", "%rd, %((U_imm20>>12))",
      semfunc: "&RiscVILui";
    add{: rs1, rs2 : rd},
      disasm: "add", "%rd, %rs1, %rs2",
      semfunc: "&RiscVIAdd";
    slt{: rs1, rs2 : rd},
      disasm: "slt", "%rd, %rs1, %rs2",
      semfunc: "&RiscVISlt";
    sltu{: rs1, rs2 : rd},
      disasm: "sltu", "%rd, %rs1, %rs2",
      semfunc: "&RiscVISltu";
    and{: rs1, rs2 : rd},
      disasm: "and", "%rd, %rs1, %rs2",
      semfunc: "&RiscVIAnd";
    or{: rs1, rs2 : rd},
      disasm: "or", "%rd, %rs1, %rs2",
      semfunc: "&RiscVIOr";
    xor{: rs1, rs2 : rd},
      disasm: "xor", "%rd, %rs1, %rs2",
      semfunc: "&RiscVIXor";
    sll{: rs1, rs2 : rd},
      disasm: "sll", "%rd, %rs1, %rs2",
      semfunc: "&RiscVISll";
    srl{: rs1, rs2 : rd},
      disasm: "srl", "%rd, %rs1, %rs2",
      semfunc: "&RiscVISrl";
    sub{: rs1, rs2 : rd},
      disasm: "sub", "%rd, %rs1, %rs2",
      semfunc: "&RiscVISub";
    sra{: rs1, rs2 : rd},
      disasm: "sra", "%rd, %rs1, %rs2",
      semfunc: "&RiscVISra";
    nop{},
      disasm: "nop",
      semfunc: "&RiscVINop";
    hint{},
      disasm: "hint",
      semfunc: "&RiscVINop";
    beq{: rs1, rs2, B_imm12 : },
      disasm: "beq", "%rs1, %rs2, %(@+B_imm12:08x)",
      semfunc: "&RiscVIBeq";
    bne{: rs1, rs2, B_imm12 : },
      disasm: "bne", "%rs1, %rs2, %(@+B_imm12:08x)",
      semfunc: "&RiscVIBne";
    blt{: rs1, rs2, B_imm12 : },
      disasm: "blt", "%rs1, %rs2, %(@+B_imm12:08x)",
      semfunc: "&RiscVIBlt";
    bltu{: rs1, rs2, B_imm12 : },
      disasm: "bltu", "%rs1, %rs2, %(@+B_imm12:08x)",
      semfunc: "&RiscVIBltu";
    bge{: rs1, rs2, B_imm12 : },
      disasm: "bge", "%rs1, %rs2, %(@+B_imm12:08x)",
      semfunc: "&RiscVIBge";
    bgeu{: rs1, rs2, B_imm12 : },
      disasm: "bgeu", "%rs1, %rs2, %(@+B_imm12:08x)",
      semfunc: "&RiscVIBgeu";
    lw{(: cs1, I_imm12), (: : rd)},
      disasm: "clw", "%rd, %I_imm12(%cs1)",
      semfunc: "&RiscVILw", "&RiscVILwChild";
    lh{(: cs1, I_imm12 :), (: : rd)},
      disasm: "clh", "%rd, %I_imm12(%cs1)",
      semfunc: "&RiscVILh", "&RiscVILhChild";
    lhu{(: cs1, I_imm12 :), (: : rd)},
      disasm: "clhu", "%rd, %I_imm12(%cs1)",
      semfunc: "&RiscVILhu", "&RiscVILhuChild";
    lb{(: cs1, I_imm12 :), (: : rd)},
      disasm: "clb", "%rd, %I_imm12(%cs1)",
      semfunc: "&RiscVILb", "&RiscVILbChild";
    lbu{(: cs1, I_imm12 :), (: : rd)},
      disasm: "clbu", "%rd, %I_imm12(%cs1)",
      semfunc: "&RiscVILbu", "&RiscVILbuChild";
    sw{: cs1, S_imm12, rs2 : },
      disasm: "csw", "%rs2, %S_imm12(%cs1)",
      semfunc: "&RiscVISw";
    sh{: cs1, S_imm12, rs2 : },
      disasm: "csh", "%rs2, %S_imm12(%cs1)",
      semfunc: "&RiscVISh";
    sb{: cs1, S_imm12, rs2 : },
      disasm: "csb", "%rs2, %S_imm12(%cs1)",
      semfunc: "&RiscVISb";
    fence{: I_imm12 : },
      disasm: "fence",
      semfunc: "&RiscVIFence";
    ecall{},
      disasm: "ecall",
      semfunc: "&RiscVIEcall";
    ebreak{},
      disasm: "ebreak",
      semfunc: "&RiscVIEbreak";
  }
}

slot cheriot {
  includes {
    #include "cheriot/riscv_cheriot_instructions.h"
  }
  default size = 4;
  default latency = global_latency;
  opcodes {
    cheriot_auicgp{: cgp, S_imm20 : cd},
      disasm: "auicgp", "%cd, %((S_imm20>>11))",
      semfunc: "&CheriotAuicap";
    cheriot_auipcc{: pcc, S_imm20 : cd},
      disasm: "auipcc", "%cd, %((S_imm20>>11))",
      semfunc: "&CheriotAuicap";
    cheriot_andperm{: cs1, rs2 : cd},
      disasm: "candperm", "%cd, %cs1, %rs2",
      semfunc: "&CheriotCAndPerm";
    cheriot_cleartag{: cs1 : cd},
      disasm: "ccleartag", "%cd, %cs1",
      semfunc: "&CheriotCClearTag";
    cheriot_getaddr{: cs1 : rd},
      disasm: "cgetaddr", "%rd, %cs1",
      semfunc: "&CheriotCGetAddr";
    cheriot_getbase{: cs1 : rd},
      disasm: "cgetbase", "%rd, %cs1",
      semfunc: "&CheriotCGetBase";
    cheriot_gethigh{: cs1 : rd},
      disasm: "cgethigh", "%rd, %cs1",
      semfunc: "&CheriotCGetHigh";
    cheriot_getlen{: cs1 : rd},
      disasm: "cgetlen", "%rd, %cs1",
      semfunc: "&CheriotCGetLen";
    cheriot_getperm{: cs1 : rd},
      disasm: "cgetperm", "%rd, %cs1",
      semfunc: "&CheriotCGetPerm";
    cheriot_gettag{: cs1 : rd},
      disasm: "cgettag", "%rd, %cs1",
      semfunc: "&CheriotCGetTag";
    cheriot_gettop{: cs1 : rd},
      disasm: "cgettop", "%rd, %cs1",
      semfunc: "&CheriotCGetTop";
    cheriot_gettype{: cs1 : rd},
      disasm: "cgettype", "%rd, %cs1",
      semfunc: "&CheriotCGetType";
    cheriot_incaddr{: cs1, rs2 : cd},
      disasm: "cincoffset", "%cd, %cs1, %rs2",
      semfunc: "&CheriotCIncAddr";
    cheriot_incaddrimm{: cs1, I_imm12 : cd},
      disasm: "cincoffset", "%cd, %cs1, 0x%(I_imm12:08x)",
      semfunc: "&CheriotCIncAddr";
    cheriot_jal_cra{: J_imm20 : cd},
      disasm: "cjal", "%cd, 0x%(J_imm20:08x)",
      semfunc: "&CheriotCJalCra";
    cheriot_jal{: J_imm20 : cd},
      disasm: "cjal", "%cd, 0x%(J_imm20:08x)",
      semfunc: "&CheriotCJal";
    cheriot_j{: J_imm20 : },
      disasm: "cj", "0x%(J_imm20:08x)",
      semfunc: "&CheriotCJ";
    cheriot_jalr{: cs1, J_imm12 : cd},
      disasm: "cjalr", "%cd, %cs1, 0x%(J_imm12:08x)",
      semfunc: "&CheriotCJalr";
    cheriot_jalr_cra{: cs1, J_imm12 : cd},
      disasm: "cjalr", "%cd, %cs1, 0x%(J_imm12:08x)",
      semfunc: "&CheriotCJalrCra";
    cheriot_jr{: cs1, J_imm12 : },
      disasm: "cjalr", "%cs1, 0x%(J_imm12:08x)",
      semfunc: "&CheriotCJr";
    cheriot_jr_cra{: cs1, J_imm12 : },
      disasm: "cjalr", "%cs1, 0x%(J_imm12:08x)",
      semfunc: "&CheriotCJrCra";
    cheriot_jalr_zero{: cs1 :},
      disasm: "cjalr", "czero, czero, 0",
      semfunc: "&CheriotCJalrZero";
    cheriot_lc{(: cs1, I_imm12 :),(: : cd)},
      disasm: "clc", "%cd, %cs1, 0x%(I_imm12:08x)",
      semfunc: "&CheriotCLc", "&CheriotCLcChild";
    cheriot_move{: cs1 : cd},
      disasm: "cmove", "%cd, %cs1",
      semfunc: "&CheriotCMove";
    cheriot_representablealignmentmask{: rs1 : rd},
      disasm: "crepresentablealignmentmask", "%rd, %rs1",
      semfunc: "&CheriotCRepresentableAlignmentMask";
    cheriot_roundrepresentablelength{: rs1 : rd},
      disasm: "croundrepresentablelength", "%rd, %rs1",
      semfunc: "&CheriotCRoundRepresentableLength";
    cheriot_sc{: cs1, S_imm12, cs2 :},
      disasm: "csc", "%cs2, %S_imm12(%cs1)",
      semfunc: "&CheriotCSc";
    cheriot_seal{: cs1, cs2 : cd},
      disasm: "cseal", "%cd, %cs1, %cs2",
      semfunc: "&CheriotCSeal";
    cheriot_setaddr{: cs1, rs2 : cd},
      disasm: "csetaddr", "%cd, %cs1, %rs2",
      semfunc: "&CheriotCSetAddr";
    cheriot_setbounds{: cs1, rs2 : cd},
      disasm: "csetbounds", "%cd, %cs1, %rs2",
      semfunc: "&CheriotCSetBounds";
    cheriot_setboundsexact{: cs1, rs2 : cd},
      disasm: "csetboundsexact", "%cd, %cs1, %rs2",
      semfunc: "&CheriotCSetBoundsExact";
    cheriot_setboundsimm{: cs1, I_uimm12 : cd},
      disasm: "csetboundsimm", "%cd, %cs1, 0x%(I_uimm12:08x)",
      semfunc: "&CheriotCSetBounds";
    cheriot_setequalexact{: cs1, cs2 : rd},
      disasm: "csetequalexact", "%rd, %cs1, %cs2",
      semfunc: "&CheriotCSetEqualExact";
    cheriot_sethigh{: cs1, rs2 : cd},
      disasm: "csethigh", "%cd, %cs1, %rs2",
      semfunc: "&CheriotCSetHigh";
    cheriot_specialr{: scr : cd},
      disasm: "cspecialrw", "%cd, %scr",
      semfunc: "&CheriotCSpecialR";
    cheriot_specialrw{: cs1, scr : cd, scr},
      disasm: "cspecialrw", "%cd, %scr, %cs1",
      semfunc: "&CheriotCSpecialRW";
    cheriot_sub{: cs1, cs2 : cd},
      disasm: "csub", "%cd, %cs1, %cs2",
      semfunc: "&CheriotCSub";
    cheriot_testsubset{: cs1, cs2 : rd},
      disasm: "ctestsubset", "%rd, %cs1, %cs2",
      semfunc: "&CheriotCTestSubset";
    cheriot_unseal{: cs1, cs2 : cd},
      disasm: "cunseal", "%cd, %cs1, %cs2",
      semfunc: "&CheriotCUnseal";
  }
}

// Privileged instructions.
slot privileged {
  includes {
    #include "cheriot/riscv_cheriot_priv_instructions.h"
  }
  default size = 4;
  default latency = global_latency;
  opcodes {
    mret{: : },
      disasm: "mret",
      semfunc: "&RiscVPrivMRet";
    wfi{},
      disasm: "wfi",
      semfunc: "&RiscVPrivWfi";
  }
}

// Instruction fence.
slot zfencei {
  includes {
    #include "cheriot/riscv_cheriot_zfencei_instructions.h"
  }
  default size = 4;
  default latency = global_latency;
  opcodes {
    fencei{: I_imm12 : },
      disasm: "fence.i",
      semfunc: "&RiscVZFencei";
  }
}

// RiscV32 multiply/divide instructions.
slot riscv32m {
  includes {
    #include "cheriot/riscv_cheriot_m_instructions.h"
  }
  default size = 4;
  default latency = global_latency;
  opcodes {
    mul{: rs1, rs2 : rd},
      disasm: "mul", "%rd, %rs1, %rs2",
      semfunc: "&MMul";
    mulh{: rs1, rs2 : rd},
      disasm: "mulh", "%rd, %rs1, %rs2",
      semfunc: "&MMulh";
    mulhu{: rs1, rs2: rd},
      disasm: "mulhu", "%rd, %rs1, %rs2",
      semfunc: "&MMulhu";
    mulhsu{: rs1, rs2: rd},
      disasm: "mulhsu", "%rd, %rs1, %rs2",
      semfunc: "&MMulhsu";
    div{: rs1, rs2 : rd},
      disasm: "div", "%rd, %rs1, %rs2",
      semfunc: "&MDiv";
    divu{: rs1, rs2 : rd},
      disasm: "divu", "%rd, %rs1, %rs2",
      semfunc: "&MDivu";
    rem{: rs1, rs2 : rd},
      disasm: "rem", "%rd, %rs1, %rs2",
      semfunc: "&MRem";
    remu{: rs1, rs2 : rd},
      disasm: "remu", "%rd, %rs1, %rs2",
      semfunc: "&MRemu";
  }
}

// The RiscV architecture allows for different subsets of the AMO instructions
// to be implemented. The following slot definitions define these subsets.

// RiscV atomic memory instructions subset AMO None.
slot riscv32_amo_none {
  includes {
    #include "cheriot/riscv_cheriot_a_instructions.h"
  }
  default size = 4;
  default latency = global_latency;
  opcodes {
    lrw{(: rs1, A_aq, A_rl :),(: : rd)},
            semfunc: "&ALrw", "&RiscVILwChild";
    scw{(: rs1, rs2, A_aq, A_rl :), (: : rd)},
            semfunc: "&AScw", "&RiscVILwChild";
  }
}

// RiscV atomic memory instructions subset AMO swap.
slot riscv32_amo_swap : riscv32_amo_none {
  default size = 4;
  default latency = global_latency;
  opcodes {
    amoswapw{(: rs1, rs2, A_aq, A_rl: ), (: : rd)},
            semfunc: "&AAmoswapw", "&RiscVILwChild";
  }
}

// RiscV atomic memory instructions subset AMO logical.
slot riscv32_amo_logical : riscv32_amo_swap {
  default size = 4;
  default latency = global_latency;
  opcodes {
    amoandw{(: rs1, rs2, A_aq, A_rl: ), (: : rd)},
            semfunc: "&AAmoandw", "&RiscVILwChild";
    amoorw{(: rs1, rs2, A_aq, A_rl: ), (: : rd)},
            semfunc: "&AAmoorw", "&RiscVILwChild";
    amoxorw{(: rs1, rs2, A_aq, A_rl: ), (: : rd)},
            semfunc: "&AAmoxorw", "&RiscVILwChild";
  }
}

// RiscV atomic memory instructions subset AMO arithmetic.
slot riscv32_amo_arithmetic : riscv32_amo_logical {
  default size = 4;
  default latency = global_latency;
  opcodes {
    amoaddw{(: rs1, rs2, A_aq, A_rl: ), (: : rd)},
            semfunc: "&AAmoaddw", "&RiscVILwChild";
    amomaxw{(: rs1, rs2, A_aq, A_rl: ), (: : rd)},
            semfunc: "&AAmomaxw", "&RiscVILwChild";
    amomaxuw{(: rs1, rs2, A_aq, A_rl: ), (: : rd)},
            semfunc: "&AAmomaxuw", "&RiscVILwChild";
    amominw{(: rs1, rs2, A_aq, A_rl: ), (: : rd)},
            semfunc: "&AAmominw", "&RiscVILwChild";
    amominuw{(: rs1, rs2, A_aq, A_rl: ), (: : rd)},
            semfunc: "&AAmominuw", "&RiscVILwChild";
  }
}

// RiscV32 CSR manipulation instructions.
slot zicsr {
  includes {
    #include "cheriot/riscv_cheriot_zicsr_instructions.h"
  }
  default size = 4;
  default latency = global_latency;
  opcodes {
    csrrw{: rs1, csr : rd, csr},
      semfunc: "&RiscVZiCsrrw",
      disasm: "csrrw", "%rd, %csr, %rs1";
    csrrs{: rs1, csr : rd, csr},
      semfunc: "&RiscVZiCsrrs",
      disasm: "csrrs", "%rd, %csr, %rs1";
    csrrc{: rs1, csr : rd, csr},
      semfunc: "&RiscVZiCsrrc",
      disasm: "csrrc", "%rd, %csr, %rs1";
    csrrs_nr{: rs1, csr : rd, csr},
      semfunc: "&RiscVZiCsrrs",
      disasm: "csrrs", "%csr, %rs1";
    csrrc_nr{: rs1, csr : rd, csr},
      semfunc: "&RiscVZiCsrrc",
      disasm: "csrrc", "%csr, %rs1";
    csrrw_nr{: rs1, csr : csr},
      semfunc: "&RiscVZiCsrrwNr", // rd == 0 (x0).
      disasm: "csrrw", "%csr, %rs1";
    csrrs_nw{: csr : rd},
      semfunc: "&RiscVZiCsrrNw", // rs1 == 0 (x0).
      disasm: "csrrs", "%rd, %csr";
    csrrc_nw{: csr : rd},
      semfunc: "&RiscVZiCsrrNw", // rs1 == 0 (x0).
      disasm: "csrrc", "%rd, %csr";
    csrrwi{: CSR_uimm5, csr : rd, csr},
      semfunc: "&RiscVZiCsrrw",
      disasm: "csrrwi", "%rd, %csr, %CSR_uimm5";
    csrrsi{: CSR_uimm5, csr : rd, csr},
      semfunc: "&RiscVZiCsrrs",
      disasm: "csrrsi", "%rd, %csr, %CSR_uimm5";
    csrrci{: CSR_uimm5, csr : rd, csr},
      semfunc: "&RiscVZiCsrrc",
      disasm: "csrrci", "%rd, %csr, %CSR_uimm5";
    csrrsi_nr{: CSR_uimm5, csr : rd, csr},
      semfunc: "&RiscVZiCsrrs",
      disasm: "csrrsi", "%csr, %CSR_uimm5";
    csrrci_nr{: CSR_uimm5, csr : rd, csr},
      semfunc: "&RiscVZiCsrrc",
      disasm: "csrrci", "%csr, %CSR_uimm5";
    csrrwi_nr{: CSR_uimm5, csr : csr},
      semfunc: "&RiscVZiCsrrwNr",  // rd == 0 (x0).
      disasm: "csrrwi", "%csr, %CSR_uimm5";
    csrrsi_nw{: csr : rd},
      semfunc: "&RiscVZiCsrrNw", // uimm5 == 0.
      disasm: "csrrsi", "%rd, %csr, 0";
    csrrci_nw{: csr : rd},
      semfunc: "&RiscVZiCsrrNw", // uimm5 == 0.
      disasm: "csrrwi", "%rd, %csr, 0";
  }
}

// RISCV32 C (compact instructions).
slot riscv32c {
  default size = 2;
  default latency = global_latency;
  opcodes {
    clwsp{(: c2, I_ci_uimm6x4 : ), (: : rd)},
      disasm: "c.lw", "%rd, %I_ci_uimm6x4(%c2)",
      semfunc: "&RiscVILw", "&RiscVILwChild";
    // cflwsp{(: c2, I_ci_uimm6x4 : ), (: : frd)},
    //   disasm: "c.flw", "%frd, %I_ci_uimm6x4(%c2)",
    //   semfunc: "&RiscVILw", "&RiscVILwChild";
    // Reused for clc
    clcsp{(: c2, I_ci_uimm6x8 : ), (: : cd)},
      disasm: "c.clc", "%cd, %I_ci_uimm6x8(%c2)",
      semfunc: "&CheriotCLc", "&CheriotCLcChild";
    // cfldsp{(: x2, I_ci_uimm6x8 : ), (: : drd)},
    //  disasm: "fld", "%drd, %I_ci_uimm6x8(%x2)",
    //  semfunc: "&RV64::RiscVILd", "&RV64::RiscVILdChild";
    cswsp{: c2, I_css_uimm6x4, crs2 : },
      disasm: "c.csw", "%crs2, %I_css_uimm6x4(%c2)",
      semfunc: "&RiscVISw";
    // cfswsp{: c2, I_css_uimm6x4, cfrs2 : },
    //   disasm: ".cfsw", "%cfrs2, %I_css_uimm6x4(%c2)",
    //   semfunc: "&RiscVISw";
    // Reused for csc
    cscsp{: c2, I_css_uimm6x8, ccs2 : },
      disasm: "c.csc", "%ccs2, %I_css_uimm6x8(%c2)",
      semfunc: "&CheriotCSc";
    // cfsdsp{: x2, I_css_uimm6x8, rdrs2 : },
    //   disasm: "fsd", "%rdrs2, %I_css_uimm6x8(%x2)",
    //   semfunc: "&RV64::RiscVISd";
    clw{(: c3rs1, I_cl_uimm5x4 : ), (: : c3rd)},
      disasm: "c.clw", "%c3rd, %I_cl_uimm5x4(%c3rs1)",
      semfunc: "&RiscVILw", "&RiscVILwChild";
    // Reused for clc
    clc{(: c3cs1, I_cl_uimm5x8 : ), (: : c3cd)},
      disasm: "c.clc", "%c3cd, %I_cl_uimm5x8(%c3cs1)",
      semfunc: "&CheriotCLc", "&CheriotCLcChild";
    // cfld{(: c3rs1, I_cl_uimm5x8 : ), (: : c3drd)},
    //   disasm: "fld", "%c3drd, %I_cl_uimm5x8(%c3rs1)",
    //   semfunc: "&RV64::RiscVILd", "&RV64::RiscVILdChild";
    csw{: c3rs1, I_cl_uimm5x4, c3cs2 : },
      disasm: "c.csw", "%c3cs2, %I_cl_uimm5x4(%c3rs1)",
      semfunc: "&RiscVISw";
    // Reused for csc
    csc{: c3cs1, I_cl_uimm5x8, c3cs2 : },
      disasm: "c.csc", "%c3cs2, %I_cl_uimm5x8(%c3cs1)",
      semfunc: "&CheriotCSc";
    // cfsd{: c3rs1, I_cl_uimm5x8, c3drs2 : },
    //   disasm: "fsd", "%c3drs2, %I_cl_uimm5x8(%c3rs1)",
    //   semfunc: "&RiscVDSd";
    cheriot_cj{: I_cj_imm11, x0 :},
      disasm: "c.j", "%(@+I_cj_imm11:08x)",
      semfunc: "&CheriotCJ";
    cheriot_cjal{: I_cj_imm11, x0 :  x1},
      disasm: "c.jal", "%(@+I_cj_imm11:08x)",
      semfunc: "&CheriotCJal";
    cheriot_cjal_cra{: I_cj_imm11, x0 :  x1},
      disasm: "c.jal", "%(@+I_cj_imm11:08x)",
      semfunc: "&CheriotCJalCra";
    cheriot_cjr{: crs1, x0 :},
      disasm: "c.jr", "%crs1",
      semfunc: "&CheriotCJr";
    cheriot_cjr_cra{: crs1, x0 :},
      disasm: "c.jr", "%crs1",
      semfunc: "&CheriotCJrCra";
    cheriot_cjalr_cra{: crs1, x0 :  x1},
      disasm: "c.jalr", "%crs1",
      semfunc: "&CheriotCJalrCra";
    cbeqz{: c3rs1, x0, I_cb_imm8 : },
      disasm: "c.beqz", "%c3rs1, %(@+I_cb_imm8:08x)",
      semfunc: "&RiscVIBeq";
    cbnez{: c3rs1, x0, I_cb_imm8 : },
      disasm: "c.bnez", "%c3rs1, %(@+I_cb_imm8:08x)",
      semfunc: "&RiscVIBne";
    cli{: x0, I_ci_imm6 : rd},
      disasm: "c.li", "%rd, %I_ci_imm6",
      semfunc: "&RiscVIAdd";
    clui{: I_ci_imm6_12 : rd},
      disasm: "c.lui", "%rd, 0x%(I_ci_imm6_12:08x)",
      semfunc: "&RiscVILui";
    caddi{: rd, I_ci_imm6 : rd},
      disasm: "c.cincoffset", "%rd, %rd, %I_ci_imm6",
      semfunc: "&RiscVIAdd";
    // Reused for compact CIncAddressImmediate
    caddi16sp{: c2, I_ci_imm6x16 : c2},
      disasm: "c.cincoffset", "%c2, %c2, %(I_ci_imm6x16:d)",
      semfunc: "&CheriotCIncAddr";
    caddi4spn{: x2, I_ciw_uimm8x4 : c3cd},
      disasm: "c.cincoffset", "%c3cd, %x2, %I_ciw_uimm8x4",
      semfunc: "&CheriotCIncAddr";
    cslli{: rd, I_ci_uimm6 : rd},
      disasm: "c.slli", "%rd, %rd, 0x%(I_ci_uimm6:x)",
      semfunc: "&RiscVISll";
    csrli{: c3rs1, I_csh_uimm6 : c3rs1},
      disasm: "c.srli", "%c3rs1, %c3rs1, 0x%(I_csh_uimm6:x)",
      semfunc: "&RiscVISrl";
    csrai{: c3rs1, I_csh_uimm6 : c3rs1},
      disasm: "c.srai", "%c3rs1, %c3rs1, 0x%(I_csh_uimm6:x)",
      semfunc: "&RiscVISra";
    candi{: c3rs1, I_csh_imm6 : c3rs1},
      disasm: "c.andi", "%c3rs1, %c3rs1, %I_csh_imm6",
      semfunc: "&RiscVIAnd";
    cmv{: crs2 , x0: rd},
      disasm: "c.mv", "%rd, %crs2",
      semfunc: "&RiscVIAdd";
    cadd{: crs2, rd: rd},
      disasm: "c.add", "%rd, %rd, %crs2",
      semfunc: "&RiscVIAdd";
    cand{: c3rs1, c3rs2 : c3rs1},
      disasm: "c.and", "%c3rs1, %c3rs1, %c3rs2",
      semfunc: "&RiscVIAnd";
    cor{: c3rs1, c3rs2 : c3rs1},
      disasm: "c.or", "%c3rs1, %c3rs1, %c3rs2",
      semfunc: "&RiscVIOr";
    cxor{: c3rs1, c3rs2 : c3rs1},
      disasm: "c.xor", "%c3rs1, %c3rs1, %c3rs2",
      semfunc: "&RiscVIXor";
    csub{: c3rs1, c3rs2 : c3rs1},
      disasm: "c.sub", "%c3rs1, %c3rs1, %c3rs2",
      semfunc: "&RiscVISub";
    cnop{},
      disasm: "c.nop",
      semfunc: "&RiscVINop";
    chint{},
      disasm: "c.hint",
      semfunc: "&RiscVINop";
    cebreak{},
      disasm: "c.ebreak",
      semfunc: "&RiscVIEbreak";
  }
}

// This should be the RiscV32 CHERIoT set.
slot riscv32_cheriot : riscv32i, cheriot, riscv32_amo_arithmetic, riscv32c, 
                       riscv32m, zicsr, privileged {
  default size = 4;
  default opcode =
    disasm: "Illegal instruction at 0x%(@:08x)",
    semfunc: "&RiscVIllegalInstruction";
}


