//===-- BPFInstrFormats.td - BPF Instruction Formats -------*- tablegen -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

class BPFOpClass<bits<3> val> {
  bits<3> Value = val;
}

def BPF_LD    : BPFOpClass<0x0>;
def BPF_LDX   : BPFOpClass<0x1>;
def BPF_ST    : BPFOpClass<0x2>;
def BPF_STX   : BPFOpClass<0x3>;
def BPF_ALU   : BPFOpClass<0x4>;
def BPF_JMP   : BPFOpClass<0x5>;
def BPF_JMP32 : BPFOpClass<0x6>;
def BPF_ALU64 : BPFOpClass<0x7>;

class BPFSrcType<bits<1> val> {
  bits<1> Value = val;
}

def BPF_K : BPFSrcType<0x0>;
def BPF_X : BPFSrcType<0x1>;

class BPFArithOp<bits<4> val> {
  bits<4> Value = val;
}

def BPF_ADD  : BPFArithOp<0x0>;
def BPF_SUB  : BPFArithOp<0x1>;
def BPF_MUL  : BPFArithOp<0x2>;
def BPF_DIV  : BPFArithOp<0x3>;
def BPF_OR   : BPFArithOp<0x4>;
def BPF_AND  : BPFArithOp<0x5>;
def BPF_LSH  : BPFArithOp<0x6>;
def BPF_RSH  : BPFArithOp<0x7>;
def BPF_NEG  : BPFArithOp<0x8>;
def BPF_MOD  : BPFArithOp<0x9>;
def BPF_XOR  : BPFArithOp<0xa>;
def BPF_MOV  : BPFArithOp<0xb>;
def BPF_ARSH : BPFArithOp<0xc>;
def BPF_END  : BPFArithOp<0xd>;

def BPF_XCHG    : BPFArithOp<0xe>;
def BPF_CMPXCHG : BPFArithOp<0xf>;

class BPFEndDir<bits<1> val> {
  bits<1> Value = val;
}

def BPF_TO_LE : BPFSrcType<0x0>;
def BPF_TO_BE : BPFSrcType<0x1>;

class BPFJumpOp<bits<4> val> {
  bits<4> Value = val;
}

def BPF_JA   : BPFJumpOp<0x0>;
def BPF_JEQ  : BPFJumpOp<0x1>;
def BPF_JGT  : BPFJumpOp<0x2>;
def BPF_JGE  : BPFJumpOp<0x3>;
def BPF_JNE  : BPFJumpOp<0x5>;
def BPF_JSGT : BPFJumpOp<0x6>;
def BPF_JSGE : BPFJumpOp<0x7>;
def BPF_CALL : BPFJumpOp<0x8>;
def BPF_EXIT : BPFJumpOp<0x9>;
def BPF_JLT  : BPFJumpOp<0xa>;
def BPF_JLE  : BPFJumpOp<0xb>;
def BPF_JSLT : BPFJumpOp<0xc>;
def BPF_JSLE : BPFJumpOp<0xd>;

class BPFWidthModifer<bits<2> val> {
  bits<2> Value = val;
}

def BPF_W  : BPFWidthModifer<0x0>;
def BPF_H  : BPFWidthModifer<0x1>;
def BPF_B  : BPFWidthModifer<0x2>;
def BPF_DW : BPFWidthModifer<0x3>;

class BPFModeModifer<bits<3> val> {
  bits<3> Value = val;
}

def BPF_IMM  : BPFModeModifer<0x0>;
def BPF_ABS  : BPFModeModifer<0x1>;
def BPF_IND  : BPFModeModifer<0x2>;
def BPF_MEM  : BPFModeModifer<0x3>;
def BPF_ATOMIC : BPFModeModifer<0x6>;

class BPFAtomicFlag<bits<4> val> {
  bits<4> Value = val;
}

def BPF_FETCH : BPFAtomicFlag<0x1>;

class InstBPF<dag outs, dag ins, string asmstr, list<dag> pattern>
  : Instruction {
  field bits<64> Inst;
  field bits<64> SoftFail = 0;
  let Size = 8;

  let Namespace = "BPF";
  let DecoderNamespace = "BPF";

  BPFOpClass BPFClass;
  let Inst{58-56} = BPFClass.Value;

  dag OutOperandList = outs;
  dag InOperandList = ins;
  let AsmString = asmstr;
  let Pattern = pattern;
}

// Pseudo instructions
class Pseudo<dag outs, dag ins, string asmstr, list<dag> pattern>
  : InstBPF<outs, ins, asmstr, pattern> {
  let Inst{63-0} = 0;
  let isPseudo = 1;
}
