// Copyright 2026 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
//
//     https://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 defines the cache block management instructions in the Zicbom extension.

slot riscv_zicbom32 {
  includes {
    #include "riscv/riscv_zicbom_instructions.h"
  }
  default size = 4;
  opcodes {
    cbo_clean{: rs1 :},
      resources: { rs1 :},
      disasm: "cbo.clean", "0(%rs1)",
      semfunc: "&RV32::RiscVCboClean";
    cbo_flush{: rs1 :},
      resources: { rs1 :},
      disasm: "cbo.flush", "0(%rs1)",
      semfunc: "&RV32::RiscVCboFlush";
    cbo_inval{: rs1 :},
      resources: { rs1 :},
      disasm: "cbo.inval", "0(%rs1)",
      semfunc: "&RV32::RiscVCboInval";
  }
}

slot riscv_zicbom64 : riscv_zicbom32 {
  includes {
    #include "riscv/riscv_zicbom_instructions.h"
  }
  default size = 4;
  opcodes {
    cbo_clean = override, semfunc: "&RV64::RiscVCboClean";
    cbo_flush = override, semfunc: "&RV64::RiscVCboFlush";
    cbo_inval = override, semfunc: "&RV64::RiscVCboInval";
  }
}
