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

LIR.h File Reference

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

Classes

struct  nanojit::MiniAccSet
struct  nanojit::CallInfo
struct  nanojit::SwitchInfo
class  nanojit::LIns
struct  nanojit::LIns::SharedFields
class  nanojit::LInsOp0
class  nanojit::LInsOp1
class  nanojit::LInsOp2
class  nanojit::LInsOp3
class  nanojit::LInsLd
class  nanojit::LInsSt
class  nanojit::LInsSk
class  nanojit::LInsC
class  nanojit::LInsP
class  nanojit::LInsI
class  nanojit::LInsQorD
class  nanojit::LInsJtbl
class  nanojit::LInsNone
class  nanojit::LirWriter
class  nanojit::ExprFilter
class  nanojit::CseFilter
class  nanojit::LirBuffer
class  nanojit::LirBufWriter
class  nanojit::LirFilter
class  nanojit::LirReader
struct  nanojit::Interval

Namespaces

namespace  nanojit

Defines

#define OP___(op, number, repKind, retType, isCse)   LIR_##op = (number),
#define PTR_SIZE(a, b)   a
#define nextNLKind(kind)   NLKind(kind+1)

Typedefs

typedef uint32_t nanojit::AccSet
typedef uint8_t nanojit::MiniAccSetVal
typedef SeqBuilder< LIns * > nanojit::InsList
typedef SeqBuilder< char * > nanojit::StringList

Enumerations

enum  nanojit::LOpcode
enum  nanojit::AbiKind { nanojit::ABI_FASTCALL, nanojit::ABI_THISCALL, nanojit::ABI_STDCALL, nanojit::ABI_CDECL }
enum  nanojit::ArgType {
  nanojit::ARGTYPE_V = 0, nanojit::ARGTYPE_I = 1, nanojit::ARGTYPE_UI = 2, nanojit::ARGTYPE_D = 4,
  nanojit::ARGTYPE_P = ARGTYPE_I, nanojit::ARGTYPE_B = ARGTYPE_I
}
enum  nanojit::IndirectCall { nanojit::CALL_INDIRECT = 0 }
enum  nanojit::LoadQual { nanojit::LOAD_CONST = 0, nanojit::LOAD_NORMAL = 1, nanojit::LOAD_VOLATILE = 2 }
enum  nanojit::LTy { nanojit::LTy_V, nanojit::LTy_I, nanojit::LTy_D, nanojit::LTy_P = LTy_I }
enum  nanojit::LInsRepKind {
  nanojit::LRK_Op0, nanojit::LRK_Op1, nanojit::LRK_Op2, nanojit::LRK_Op3,
  nanojit::LRK_Ld, nanojit::LRK_St, nanojit::LRK_Sk, nanojit::LRK_C,
  nanojit::LRK_P, nanojit::LRK_I, nanojit::LRK_QorD, nanojit::LRK_Jtbl,
  nanojit::LRK_None
}

Functions

 OP_32 (parami, 3, P, I, 0) OP_64(paramq
 OP_64 (retq, 7, Op1, V, 0) LIR_retd
 OP_64 (liveq, 10, Op1, V, 0) LIR_lived
 OP_64 (ldq, 22, Ld, Q,-1) LIR_ldd
 OP_64 (stq, 28, St, V, 0) LIR_std
 OP_64 (callq, 35, C, Q,-1) LIR_calld
 OP_64 (immq, 50, QorD, Q, 1) LIR_immd
 OP_64 (eqq, 63, Op2, I, 1) OP_64(ltq
 OP_64 (gtq, 65, Op2, I, 1) OP_64(leq
 OP_64 (geq, 67, Op2, I, 1) OP_64(ltuq
 OP_64 (gtuq, 69, Op2, I, 1) OP_64(leuq
 OP_64 (geuq, 71, Op2, I, 1) LIR_eqd
 OP_86 (divi, 82, Op2, I, 1) OP_86(modi
 OP_64 (addq, 91, Op2, Q, 1) OP_64(subq
 OP_64 (andq, 93, Op2, Q, 1) OP_64(orq
 OP_64 (xorq, 95, Op2, Q, 1) OP_64(lshq
 OP_64 (rshq, 97, Op2, Q, 1) OP_64(rshuq
 OP_64 (cmovq, 106, Op3, Q, 1) LIR_cmovd
 OP_64 (i2q, 108, Op1, Q, 1) OP_64(ui2uq
 OP_64 (q2i, 110, Op1, I, 1) LIR_i2d
 OP_64 (dasq, 114, Op1, Q, 1) OP_64(qasd
 OP_64 (addjovq, 122, Op3, Q, 1) OP_64(subjovq
 OP_SF (dlo2i, 124, Op1, I, 1) OP_SF(dhi2i
 OP_SF (ii2d, 126, Op2, D, 1) LIR_sentinel
 nanojit::NanoStaticAssert (LIR_eqi+1==LIR_lti &&LIR_eqi+2==LIR_gti &&LIR_eqi+3==LIR_lei &&LIR_eqi+4==LIR_gei &&LIR_eqi+5==LIR_ltui &&LIR_eqi+6==LIR_gtui &&LIR_eqi+7==LIR_leui &&LIR_eqi+8==LIR_geui)
 nanojit::NanoStaticAssert (LIR_eqd+1==LIR_ltd &&LIR_eqd+2==LIR_gtd &&LIR_eqd+3==LIR_led &&LIR_eqd+4==LIR_ged)
 nanojit::NanoStaticAssert ((LIR_jt^1)==LIR_jf &&(LIR_jf^1)==LIR_jt)
 nanojit::NanoStaticAssert ((LIR_xt^1)==LIR_xf &&(LIR_xf^1)==LIR_xt)
 nanojit::NanoStaticAssert ((LIR_lti^1)==LIR_gti &&(LIR_gti^1)==LIR_lti)
 nanojit::NanoStaticAssert ((LIR_lei^1)==LIR_gei &&(LIR_gei^1)==LIR_lei)
 nanojit::NanoStaticAssert ((LIR_ltui^1)==LIR_gtui &&(LIR_gtui^1)==LIR_ltui)
 nanojit::NanoStaticAssert ((LIR_leui^1)==LIR_geui &&(LIR_geui^1)==LIR_leui)
 nanojit::NanoStaticAssert ((LIR_ltd^1)==LIR_gtd &&(LIR_gtd^1)==LIR_ltd)
 nanojit::NanoStaticAssert ((LIR_led^1)==LIR_ged &&(LIR_ged^1)==LIR_led)
bool nanojit::isSingletonAccSet (AccSet accSet)
bool nanojit::isCseOpcode (LOpcode op)
bool nanojit::isLiveOpcode (LOpcode op)
bool nanojit::isRetOpcode (LOpcode op)
bool nanojit::isCmovOpcode (LOpcode op)
bool nanojit::isCmpIOpcode (LOpcode op)
bool nanojit::isCmpSIOpcode (LOpcode op)
bool nanojit::isCmpUIOpcode (LOpcode op)
bool nanojit::isCmpDOpcode (LOpcode op)
bool nanojit::isCmpOpcode (LOpcode op)
LOpcode nanojit::invertCondJmpOpcode (LOpcode op)
LOpcode nanojit::invertCondGuardOpcode (LOpcode op)
LOpcode nanojit::invertCmpOpcode (LOpcode op)
LOpcode nanojit::getCallOpcode (const CallInfo *ci)
LOpcode nanojit::arithOpcodeD2I (LOpcode op)
LOpcode nanojit::cmpOpcodeD2I (LOpcode op)
LOpcode nanojit::cmpOpcodeD2UI (LOpcode op)
RegisterMask nanojit::rmask (Register r)
 nanojit::verbose_only (void live(LirFilter *in, Allocator &alloc, Fragment *frag, LogControl *);) class StackFilter

Variables

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

Define Documentation

#define nextNLKind (   kind  )     NLKind(kind+1)
#define OP___ (   op,
  number,
  repKind,
  retType,
  isCse 
)    LIR_##op = (number),
#define PTR_SIZE (   a,
  b 
)    a

Function Documentation

nanojit::LOpcode::OP_32 ( parami  ,
,
,
,
 
)
nanojit::LOpcode::OP_64 ( rshq  ,
97  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_64 ( geuq  ,
71  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_64 ( retq  ,
,
Op1  ,
,
 
)
nanojit::LOpcode::OP_64 ( i2q  ,
108  ,
Op1  ,
,
 
)
nanojit::LOpcode::OP_64 ( ldq  ,
22  ,
Ld  ,
,
1 
)
nanojit::LOpcode::OP_64 ( gtuq  ,
69  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_64 ( dasq  ,
114  ,
Op1  ,
,
 
)
nanojit::LOpcode::OP_64 ( cmovq  ,
106  ,
Op3  ,
,
 
)
nanojit::LOpcode::OP_64 ( geq  ,
67  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_64 ( gtq  ,
65  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_64 ( stq  ,
28  ,
St  ,
,
 
)
nanojit::LOpcode::OP_64 ( andq  ,
93  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_64 ( xorq  ,
95  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_64 ( eqq  ,
63  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_64 ( callq  ,
35  ,
,
,
1 
)
nanojit::LOpcode::OP_64 ( q2i  ,
110  ,
Op1  ,
,
 
)
nanojit::LOpcode::OP_64 ( addjovq  ,
122  ,
Op3  ,
,
 
)
nanojit::LOpcode::OP_64 ( liveq  ,
10  ,
Op1  ,
,
 
)
nanojit::LOpcode::OP_64 ( addq  ,
91  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_64 ( immq  ,
50  ,
QorD  ,
,
 
)
nanojit::LOpcode::OP_86 ( divi  ,
82  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_SF ( ii2d  ,
126  ,
Op2  ,
,
 
)
nanojit::LOpcode::OP_SF ( dlo2i  ,
124  ,
Op1  ,
,
 
)