Classes | Namespaces | Defines | Typedefs | Enumerations | Functions | Variables

LIR.h File Reference

#include "LIRopcode.tbl"
Include dependency graph for LIR.h:

Classes

struct  nanojit::CallInfo
struct  nanojit::SwitchInfo
class  nanojit::LIns
struct  nanojit::LIns::LastWord
class  nanojit::LInsOp0
class  nanojit::LInsOp1
class  nanojit::LInsOp2
class  nanojit::LInsOp3
class  nanojit::LInsLd
class  nanojit::LInsSti
class  nanojit::LInsSk
class  nanojit::LInsC
class  nanojit::LInsP
class  nanojit::LInsI
class  nanojit::LInsN64
class  nanojit::LInsJtbl
class  nanojit::LInsNone
class  nanojit::LirWriter
class  nanojit::ExprFilter
class  nanojit::LInsHashSet
class  nanojit::CseFilter
class  nanojit::LirBuffer
class  nanojit::LirBufWriter
class  nanojit::LirFilter
class  nanojit::LirReader
class  nanojit::LoadFilter

Namespaces

namespace  nanojit
 

Fundamentally, the arguments to the various operands can be grouped along two dimensions.


Defines

#define OPDEF(op, number, repKind, retType)   LIR_##op = (number),
#define PTR_SIZE(a, b)   a
#define nextKind(kind)   LInsHashKind(kind+1)

Typedefs

typedef LIns * nanojit::LInsp
typedef SeqBuilder< LIns * > nanojit::InsList

Enumerations

enum  nanojit::LOpcode
enum  nanojit::AbiKind { nanojit::ABI_FASTCALL, nanojit::ABI_THISCALL, nanojit::ABI_STDCALL, nanojit::ABI_CDECL }
enum  nanojit::ArgSize {
  nanojit::ARGSIZE_NONE = 0, nanojit::ARGSIZE_F = 1, nanojit::ARGSIZE_I = 2, nanojit::ARGSIZE_Q = 3,
  nanojit::ARGSIZE_U = 6, nanojit::ARGSIZE_MASK_ANY = 7, nanojit::ARGSIZE_MASK_INT = 2, nanojit::ARGSIZE_SHIFT = 3,
  nanojit::ARGSIZE_P = ARGSIZE_I, nanojit::ARGSIZE_LO = ARGSIZE_I, nanojit::ARGSIZE_B = ARGSIZE_I, nanojit::ARGSIZE_V = ARGSIZE_NONE
}
enum  nanojit::IndirectCall { nanojit::CALL_INDIRECT = 0 }
enum  nanojit::LTy { nanojit::LTy_Void, nanojit::LTy_I32, nanojit::LTy_I64, nanojit::LTy_F64 }
enum  nanojit::LInsRepKind {
  nanojit::LRK_Op0, nanojit::LRK_Op1, nanojit::LRK_Op2, nanojit::LRK_Op3,
  nanojit::LRK_Ld, nanojit::LRK_Sti, nanojit::LRK_Sk, nanojit::LRK_C,
  nanojit::LRK_P, nanojit::LRK_I, nanojit::LRK_N64, nanojit::LRK_Jtbl,
  nanojit::LRK_None
}
enum  nanojit::LInsHashKind {
  nanojit::LInsImm = 0, nanojit::LInsImmq = 1, nanojit::LInsImmf = 2, nanojit::LIns1 = 3,
  nanojit::LIns2 = 4, nanojit::LIns3 = 5, nanojit::LInsLoad = 6, nanojit::LInsCall = 7,
  nanojit::LInsFirst = 0, nanojit::LInsLast = 7, nanojit::LInsInvalid = 8
}

Functions

bool nanojit::isCseOpcode (LOpcode op)
bool nanojit::isRetOpcode (LOpcode op)
LOpcode nanojit::f64arith_to_i32arith (LOpcode op)
LOpcode nanojit::i32cmp_to_i64cmp (LOpcode op)
void nanojit::compile (Assembler *assm, Fragment *frag, Allocator &alloc verbose_only(, LabelMap *))
 nanojit::verbose_only (void live(Allocator &alloc, Fragment *frag, LogControl *);) class StackFilter

Variables

const uint8_t nanojit::repKinds []
const LTy nanojit::retTypes []

Define Documentation

#define nextKind (   kind  )     LInsHashKind(kind+1)
#define OPDEF (   op,
  number,
  repKind,
  retType 
)    LIR_##op = (number),
#define PTR_SIZE (   a,
  b 
)    a