// 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
//
//     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 non-temporal localicty hint instruction encodings.

includes {
  #include "riscv/riscv_zihintntl_instructions.h"
}

slot riscv_zihintntl {
  default size = 4;
  opcodes {
    ntl_p1{},
      disasm: "ntl.p1",
      semfunc: "&RiscVNtlP1";
    ntl_pall{},
      disasm: "ntl.pall",
      semfunc: "&RiscVNtlPall";
    ntl_s1{},
      disasm: "ntl.s1",
      semfunc: "&RiscVNtlS1";
    ntl_all{},
      disasm: "ntl.all",
      semfunc: "&RiscVNtlAll";
  }
}

slot riscv_czihintntl {
  default size = 2;
  opcodes {
    c_ntl_p1{},
      disasm: "c.ntl.p1",
      semfunc: "&RiscVNtlP1";
    c_ntl_pall{},
      disasm: "c.ntl.pall",
      semfunc: "&RiscVNtlPall";
    c_ntl_s1{},
      disasm: "c.ntl.s1",
      semfunc: "&RiscVNtlS1";
    c_ntl_all{},
      disasm: "c.ntl.all",
      semfunc: "&RiscVNtlAll";
  }
}