From 4cfcf9bdd588b1b9f0ad219c3f76896e31511867 Mon Sep 17 00:00:00 2001
From: Sonicadvance1 <sonicadvance1@gmail.com>
Date: Mon, 13 Jul 2009 06:34:12 +0000
Subject: [PATCH] Sorry for intruding in to the core. Fixed NoGUI mode in
 Linux, add back the instruction names as comments in the JIT tables, was a
 bit hard to find certain instructions.Trying to find a good way to get The
 JIT dependencies removed in a nice fashion

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3776 8ced0084-cf51-0410-be5f-012b33b47a6e
---
 SConstruct                                    |   6 +
 Source/Core/Common/Src/MathUtil.cpp           |   2 -
 .../Interpreter/Interpreter_LoadStore.cpp     |   4 +-
 .../Interpreter/Interpreter_Tables.cpp        |  34 +-
 Source/Core/Core/Src/PowerPC/Jit64IL/Jit.cpp  |   4 -
 .../Core/Src/PowerPC/JitCommon/Jit_Tables.cpp | 513 +++++++++---------
 Source/Core/Core/Src/PowerPC/PPCTables.cpp    |   5 +
 Source/Core/Core/Src/SConscript               |  60 +-
 Source/Core/DebuggerUICommon/Src/SConscript   |  13 +-
 Source/Core/DolphinWX/Src/MainNoGUI.cpp       |   5 +-
 Source/Core/InputCommon/Src/X11InputBase.cpp  |   9 +-
 Source/Core/InputCommon/Src/X11InputBase.h    |   1 -
 Source/Plugins/Plugin_DSP_LLE/Src/DSPHost.cpp |   5 +-
 Source/Plugins/Plugin_VideoOGL/Src/Render.cpp |   2 +-
 14 files changed, 330 insertions(+), 333 deletions(-)

diff --git a/SConstruct b/SConstruct
index c034bad1d9..e963d2a547 100644
--- a/SConstruct
+++ b/SConstruct
@@ -109,6 +109,7 @@ vars.AddVariables(
     BoolVariable('sdlgl', 'Set For Building with SDL GL libs (WIP)', False),
     BoolVariable('gltest', 'temp don\'t use (WIP)', False),
     BoolVariable('jittest', 'temp don\'t use (WIP)', False),
+	BoolVariable('nojit', 'Remove entire jit cores', False),
     EnumVariable('flavor', 'Choose a build flavor', 'release',
                  allowed_values = ('release', 'devel', 'debug', 'fastlog', 'prof'),
                  ignorecase = 2
@@ -310,8 +311,13 @@ conf.Define('GLTEST', env['GLTEST'])
 env['JITTEST'] = 0
 if env['jittest']:
     env['JITTEST'] = 1
+	
+env['NOJIT'] = 0
+if env['nojit']:
+	env['NOJIT'] = 1
 
 conf.Define('JITTEST', env['JITTEST'])
+conf.Define('NOJIT', env['NOJIT'])
 
 # Creating config.h defines
 conf.Define('HAVE_SDL', env['HAVE_SDL'])
diff --git a/Source/Core/Common/Src/MathUtil.cpp b/Source/Core/Common/Src/MathUtil.cpp
index efa9b922e4..0a967e9a3f 100644
--- a/Source/Core/Common/Src/MathUtil.cpp
+++ b/Source/Core/Common/Src/MathUtil.cpp
@@ -15,8 +15,6 @@
 // Official SVN repository and contact information can be found at
 // http://code.google.com/p/dolphin-emu/
 
-#include <xmmintrin.h>
-
 #include "Common.h"
 #include "MathUtil.h"
 
diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp
index e2d9bc3147..7d9f0af03a 100644
--- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp
+++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp
@@ -356,7 +356,9 @@ void icbi(UGeckoInstruction _inst)
 	// VERY IMPORTANT when we start linking blocks
 	// There are a TON of these so hopefully we can make this mechanism
 	// fast in the JIT
-	jit.GetBlockCache()->InvalidateCodeRange(address, 0x20);
+	// ector said that this isn't needed anymore, and that making 
+	// a jit version of this instruction would be easy anyway
+	//jit.GetBlockCache()->InvalidateCodeRange(address, 0x20);
 }
 
 void lbzux(UGeckoInstruction _inst)
diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Tables.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Tables.cpp
index da2dd00b7c..c269c6debe 100644
--- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Tables.cpp
+++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Tables.cpp
@@ -63,21 +63,13 @@ static GekkoOPTemplate primarytable[] =
 	{28, Interpreter::andi_rc,         {"andi_rc",  OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_SET_CR0}},
 	{29, Interpreter::andis_rc,        {"andis_rc", OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_SET_CR0}},
 
-#if JITTEST
 	{32, Interpreter::lwz,             {"lwz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
 	{33, Interpreter::lwzu,            {"lwzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
 	{34, Interpreter::lbz,             {"lbz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
 	{35, Interpreter::lbzu,            {"lbzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
 	{40, Interpreter::lhz,             {"lhz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
 	{41, Interpreter::lhzu,            {"lhzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
-#else
-	{32, Interpreter::lwz,             {"lwz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
-	{33, Interpreter::lwzu,        {"lwzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
-	{34, Interpreter::lbz,             {"lbz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
-	{35, Interpreter::lbzu,        {"lbzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
-	{40, Interpreter::lhz,             {"lhz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
-	{41, Interpreter::lhzu,        {"lhzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
-#endif
+
 	{42, Interpreter::lha,             {"lha",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
 	{43, Interpreter::lhau,        {"lhau", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
 
@@ -213,7 +205,7 @@ static GekkoOPTemplate table31[] =
 	{470,  Interpreter::dcbi,     {"dcbi",   OPTYPE_DCACHE, 0, 4}},
 	{758,  Interpreter::dcba,     {"dcba",   OPTYPE_DCACHE, 0, 4}},
 	{1014, Interpreter::dcbz,        {"dcbz",   OPTYPE_DCACHE, 0, 4}},
-#if JITTEST
+	
 	//load word
 	{23,  Interpreter::lwzx,         {"lwzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
 	{55,  Interpreter::lwzux,        {"lwzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
@@ -229,23 +221,7 @@ static GekkoOPTemplate table31[] =
 	//load byte
 	{87,  Interpreter::lbzx,         {"lbzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
 	{119, Interpreter::lbzux,        {"lbzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
-#else
-	//load word
-	{23,  Interpreter::lwzx,        {"lwzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
-	{55,  Interpreter::lwzux,      {"lwzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
-
-	//load halfword
-	{279, Interpreter::lhzx,     {"lhzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
-	{311, Interpreter::lhzux,    {"lhzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
-
-	//load halfword signextend
-	{343, Interpreter::lhax,        {"lhax",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
-	{375, Interpreter::lhaux,    {"lhaux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
-
-	//load byte
-	{87,  Interpreter::lbzx,        {"lbzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
-	{119, Interpreter::lbzux,    {"lbzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
-#endif
+	
 	//load byte reverse
 	{534, Interpreter::lwbrx,   {"lwbrx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
 	{790, Interpreter::lhbrx,   {"lhbrx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
@@ -321,11 +297,7 @@ static GekkoOPTemplate table31_2[] =
 	{10,  Interpreter::addcx,         {"addcx",   OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_SET_CA | FL_RC_BIT}},
 	{138, Interpreter::addex,           {"addex",   OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
 	{234, Interpreter::addmex,        {"addmex",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
-#if JITTEST
 	{202, Interpreter::addzex,         {"addzex",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
-#else
-	{202, Interpreter::addzex,        {"addzex",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
-#endif
 	{491, Interpreter::divwx,         {"divwx",   OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 39}},
 	{459, Interpreter::divwux,         {"divwux",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 39}},
 	{75,  Interpreter::mulhwx,        {"mulhwx",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 4}},
diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.cpp
index d751de8fca..b69ca1a908 100644
--- a/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.cpp
+++ b/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.cpp
@@ -36,10 +36,6 @@
 #include "../JitCommon/JitCache.h"
 #include "../JitCommon/Jit_Tables.h"
 
-#if  !defined JITTEST || ! JITTEST
-#error JitIL needs JITTEST define
-#endif
-
 using namespace Gen;
 using namespace PowerPC;
 
diff --git a/Source/Core/Core/Src/PowerPC/JitCommon/Jit_Tables.cpp b/Source/Core/Core/Src/PowerPC/JitCommon/Jit_Tables.cpp
index 78019b04d3..6e8d38aa78 100644
--- a/Source/Core/Core/Src/PowerPC/JitCommon/Jit_Tables.cpp
+++ b/Source/Core/Core/Src/PowerPC/JitCommon/Jit_Tables.cpp
@@ -44,356 +44,365 @@ struct GekkoOPTemplate
 
 static GekkoOPTemplate primarytable[] = 
 {
-	{4,       &Jit64::DynaRunTable4},
-	{19,     &Jit64::DynaRunTable19},
-	{31,     &Jit64::DynaRunTable31},
-	{59,     &Jit64::DynaRunTable59},
-	{63,     &Jit64::DynaRunTable63},
+	{4,  &Jit64::DynaRunTable4}, //"RunTable4",  OPTYPE_SUBTABLE | (4<<24), 0}},
+	{19, &Jit64::DynaRunTable19}, //"RunTable19", OPTYPE_SUBTABLE | (19<<24), 0}},
+	{31, &Jit64::DynaRunTable31}, //"RunTable31", OPTYPE_SUBTABLE | (31<<24), 0}},
+	{59, &Jit64::DynaRunTable59}, //"RunTable59", OPTYPE_SUBTABLE | (59<<24), 0}},
+	{63, &Jit64::DynaRunTable63}, //"RunTable63", OPTYPE_SUBTABLE | (63<<24), 0}},
 
-	{16,            &Jit64::bcx},
-	{18,             &Jit64::bx},
+	{16, &Jit64::bcx}, //"bcx", OPTYPE_SYSTEM, FL_ENDBLOCK}},
+	{18, &Jit64::bx}, //"bx",  OPTYPE_SYSTEM, FL_ENDBLOCK}},
 
-	{1,     &Jit64::HLEFunction},
-	{2,   &Jit64::Default},
-	{3,             &Jit64::Default},
-	{17,             &Jit64::sc},
+	{1,  &Jit64::HLEFunction}, //"HLEFunction", OPTYPE_SYSTEM, FL_ENDBLOCK}},
+	{2,  &Jit64::Default}, //"DynaBlock",   OPTYPE_SYSTEM, 0}},
+	{3,  &Jit64::Default}, //"twi",         OPTYPE_SYSTEM, 0}},
+	{17, &Jit64::sc}, //"sc",          OPTYPE_SYSTEM, FL_ENDBLOCK, 1}},
 
-	{7,       &Jit64::mulli},
-	{8,      &Jit64::subfic},
-	{10,      &Jit64::cmpXX},
-	{11,       &Jit64::cmpXX},
-	{12,      &Jit64::reg_imm},
-	{13,   &Jit64::reg_imm},
-	{14,       &Jit64::reg_imm},
-	{15,      &Jit64::reg_imm},
+	{7,  &Jit64::mulli}, //"mulli",    OPTYPE_INTEGER, FL_OUT_D | FL_IN_A | FL_RC_BIT, 2}},
+	{8,  &Jit64::subfic}, //"subfic",   OPTYPE_INTEGER, FL_OUT_D | FL_IN_A |	FL_SET_CA}},
+	{10, &Jit64::cmpXX}, //"cmpli",    OPTYPE_INTEGER, FL_IN_A | FL_SET_CRn}},
+	{11, &Jit64::cmpXX}, //"cmpi",     OPTYPE_INTEGER, FL_IN_A | FL_SET_CRn}},
+	{12, &Jit64::reg_imm}, //"addic",    OPTYPE_INTEGER, FL_OUT_D | FL_IN_A | FL_SET_CA}},
+	{13, &Jit64::reg_imm}, //"addic_rc", OPTYPE_INTEGER, FL_OUT_D | FL_IN_A | FL_SET_CR0}},
+	{14, &Jit64::reg_imm}, //"addi",     OPTYPE_INTEGER, FL_OUT_D | FL_IN_A0}},
+	{15, &Jit64::reg_imm}, //"addis",    OPTYPE_INTEGER, FL_OUT_D | FL_IN_A0}},
 
-	{20,    &Jit64::rlwimix},
-	{21,    &Jit64::rlwinmx},
-	{23,     &Jit64::rlwnmx},
+	{20, &Jit64::rlwimix}, //"rlwimix",  OPTYPE_INTEGER, FL_OUT_A | FL_IN_A | FL_IN_S | FL_RC_BIT}},
+	{21, &Jit64::rlwinmx}, //"rlwinmx",  OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_RC_BIT}},
+	{23, &Jit64::rlwnmx}, //"rlwnmx",   OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_IN_B | FL_RC_BIT}},
 
-	{24,        &Jit64::reg_imm},
-	{25,       &Jit64::reg_imm},
-	{26,       &Jit64::reg_imm},
-	{27,      &Jit64::reg_imm},
-	{28,    &Jit64::reg_imm},
-	{29,   &Jit64::reg_imm},
-	
-	{32,        &Jit64::lXz},
-	{33,       &Jit64::Default},
-	{34,        &Jit64::lXz},
-	{35,       &Jit64::Default},
-	{40,        &Jit64::lXz},
-	{41,       &Jit64::Default},
+	{24, &Jit64::reg_imm}, //"ori",      OPTYPE_INTEGER, FL_OUT_A | FL_IN_S}},
+	{25, &Jit64::reg_imm}, //"oris",     OPTYPE_INTEGER, FL_OUT_A | FL_IN_S}},
+	{26, &Jit64::reg_imm}, //"xori",     OPTYPE_INTEGER, FL_OUT_A | FL_IN_S}},
+	{27, &Jit64::reg_imm}, //"xoris",    OPTYPE_INTEGER, FL_OUT_A | FL_IN_S}},
+	{28, &Jit64::reg_imm}, //"andi_rc",  OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_SET_CR0}},
+	{29, &Jit64::reg_imm}, //"andis_rc", OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_SET_CR0}},
 
-	{42,        &Jit64::lha},
-	{43,       &Jit64::Default},
+#if JITTEST
+	{32, &Jit64::lXz}, //"lwz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
+	{33, &Jit64::lXz}, //"lwzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
+	{34, &Jit64::lXz}, //"lbz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
+	{35, &Jit64::lXz}, //"lbzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
+	{40, &Jit64::lXz}, //"lhz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
+	{41, &Jit64::lXz}, //"lhzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
+#else
+	{32, &Jit64::lXz}, //"lwz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
+	{33, &Jit64::Default}, //"lwzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
+	{34, &Jit64::lXz}, //"lbz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
+	{35, &Jit64::Default}, //"lbzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
+	{40, &Jit64::lXz}, //"lhz",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
+	{41, &Jit64::Default}, //"lhzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
+#endif
+	{42, &Jit64::lha}, //"lha",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
+	{43, &Jit64::Default}, //"lhau", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
 
-	{44,        &Jit64::stX},
-	{45,       &Jit64::stX},
-	{36,        &Jit64::stX},
-	{37,       &Jit64::stX},
-	{38, 	     &Jit64::stX},
-	{39,       &Jit64::stX},
+	{44, &Jit64::stX}, //"sth",  OPTYPE_STORE, FL_IN_A | FL_IN_S}},
+	{45, &Jit64::stX}, //"sthu", OPTYPE_STORE, FL_OUT_A | FL_IN_A | FL_IN_S}},
+	{36, &Jit64::stX}, //"stw",  OPTYPE_STORE, FL_IN_A | FL_IN_S}},
+	{37, &Jit64::stX}, //"stwu", OPTYPE_STORE, FL_OUT_A | FL_IN_A | FL_IN_S}},
+	{38, &Jit64::stX}, //"stb",  OPTYPE_STORE, FL_IN_A | FL_IN_S}},
+	{39, &Jit64::stX}, //"stbu", OPTYPE_STORE, FL_OUT_A | FL_IN_A | FL_IN_S}},
 
-	{46,        &Jit64::lmw},
-	{47,       &Jit64::stmw},
+	{46, &Jit64::lmw}, //"lmw",   OPTYPE_SYSTEM, FL_EVIL, 10}},
+	{47, &Jit64::stmw}, //"stmw",  OPTYPE_SYSTEM, FL_EVIL, 10}},
 
-	{48,        &Jit64::lfs},
-	{49,       &Jit64::Default},
-	{50,        &Jit64::lfd},
-	{51,       &Jit64::Default},
+	{48, &Jit64::lfs}, //"lfs",  OPTYPE_LOADFP, FL_IN_A}},
+	{49, &Jit64::Default}, //"lfsu", OPTYPE_LOADFP, FL_OUT_A | FL_IN_A}},
+	{50, &Jit64::lfd}, //"lfd",  OPTYPE_LOADFP, FL_IN_A}},
+	{51, &Jit64::Default}, //"lfdu", OPTYPE_LOADFP, FL_OUT_A | FL_IN_A}},
 
-	{52,       &Jit64::stfs},
-	{53,      &Jit64::stfs},
-	{54,       &Jit64::stfd},
-	{55,      &Jit64::Default},
+	{52, &Jit64::stfs}, //"stfs",  OPTYPE_STOREFP, FL_IN_A}},
+	{53, &Jit64::stfs}, //"stfsu", OPTYPE_STOREFP, FL_OUT_A | FL_IN_A}},
+	{54, &Jit64::stfd}, //"stfd",  OPTYPE_STOREFP, FL_IN_A}},
+	{55, &Jit64::Default}, //"stfdu", OPTYPE_STOREFP, FL_OUT_A | FL_IN_A}},
 
-	{56,      &Jit64::psq_l},
-	{57,     &Jit64::psq_l},
-	{60,     &Jit64::psq_st},
-	{61,    &Jit64::psq_st},
+	{56, &Jit64::psq_l}, //"psq_l",   OPTYPE_PS, FL_IN_A}},
+	{57, &Jit64::psq_l}, //"psq_lu",  OPTYPE_PS, FL_OUT_A | FL_IN_A}},
+	{60, &Jit64::psq_st}, //"psq_st",  OPTYPE_PS, FL_IN_A}},
+	{61, &Jit64::psq_st}, //"psq_stu", OPTYPE_PS, FL_OUT_A | FL_IN_A}},
 
 	//missing: 0, 5, 6, 9, 22, 30, 62, 58
-	{0,  &Jit64::Default},
-	{5,  &Jit64::Default},
-	{6,  &Jit64::Default},
-	{9,  &Jit64::Default},
-	{22, &Jit64::Default},
-	{30, &Jit64::Default},
-	{62, &Jit64::Default},
-	{58, &Jit64::Default},
+	{0,  &Jit64::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}},
+	{5,  &Jit64::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}},
+	{6,  &Jit64::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}},
+	{9,  &Jit64::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}},
+	{22, &Jit64::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}},
+	{30, &Jit64::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}},
+	{62, &Jit64::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}},
+	{58, &Jit64::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}},
 };
 
 static GekkoOPTemplate table4[] = 
 {    //SUBOP10
-	{0,       &Jit64::Default},
-	{32,      &Jit64::Default},
-	{40,        &Jit64::ps_sign},
-	{136,      &Jit64::ps_sign},
-	{264,       &Jit64::ps_sign},
-	{64,      &Jit64::Default},
-	{72,         &Jit64::ps_mr},
-	{96,      &Jit64::Default},
-	{528,   &Jit64::ps_mergeXX},
-	{560,   &Jit64::ps_mergeXX},
-	{592,   &Jit64::ps_mergeXX},
-	{624,   &Jit64::ps_mergeXX},
+	{0,    &Jit64::Default}, //"ps_cmpu0",   OPTYPE_PS, FL_SET_CRn}},
+	{32,   &Jit64::Default}, //"ps_cmpo0",   OPTYPE_PS, FL_SET_CRn}},
+	{40,   &Jit64::ps_sign}, //"ps_neg",     OPTYPE_PS, FL_RC_BIT}},
+	{136,  &Jit64::ps_sign}, //"ps_nabs",    OPTYPE_PS, FL_RC_BIT}},
+	{264,  &Jit64::ps_sign}, //"ps_abs",     OPTYPE_PS, FL_RC_BIT}},
+	{64,   &Jit64::Default}, //"ps_cmpu1",   OPTYPE_PS, FL_RC_BIT}},
+	{72,   &Jit64::ps_mr}, //"ps_mr",      OPTYPE_PS, FL_RC_BIT}},
+	{96,   &Jit64::Default}, //"ps_cmpo1",   OPTYPE_PS, FL_RC_BIT}},
+	{528,  &Jit64::ps_mergeXX}, //"ps_merge00", OPTYPE_PS, FL_RC_BIT}},
+	{560,  &Jit64::ps_mergeXX}, //"ps_merge01", OPTYPE_PS, FL_RC_BIT}},
+	{592,  &Jit64::ps_mergeXX}, //"ps_merge10", OPTYPE_PS, FL_RC_BIT}},
+	{624,  &Jit64::ps_mergeXX}, //"ps_merge11", OPTYPE_PS, FL_RC_BIT}},
 
-	{1014,      &Jit64::Default},
+	{1014, &Jit64::Default}, //"dcbz_l",     OPTYPE_SYSTEM, 0}},
 };		
 
 static GekkoOPTemplate table4_2[] = 
 {
-	{10,    &Jit64::ps_sum},
-	{11,    &Jit64::ps_sum},
-	{12,   &Jit64::ps_muls},
-	{13,   &Jit64::ps_muls},
-	{14,  &Jit64::ps_maddXX},
-	{15,  &Jit64::ps_maddXX},
-	{18,     &Jit64::ps_arith},
-	{20,     &Jit64::ps_arith},
-	{21,     &Jit64::ps_arith},
-	{23,     &Jit64::ps_sel},
-	{24,     &Jit64::Default},
-	{25,     &Jit64::ps_arith},
-	{26,  &Jit64::ps_rsqrte},
-	{28,    &Jit64::ps_maddXX},
-	{29,    &Jit64::ps_maddXX},
-	{30,   &Jit64::ps_maddXX},
-	{31,   &Jit64::ps_maddXX},
+	{10, &Jit64::ps_sum}, //"ps_sum0",   OPTYPE_PS, 0}},
+	{11, &Jit64::ps_sum}, //"ps_sum1",   OPTYPE_PS, 0}},
+	{12, &Jit64::ps_muls}, //"ps_muls0",  OPTYPE_PS, 0}},
+	{13, &Jit64::ps_muls}, //"ps_muls1",  OPTYPE_PS, 0}},
+	{14, &Jit64::ps_maddXX}, //"ps_madds0", OPTYPE_PS, 0}},
+	{15, &Jit64::ps_maddXX}, //"ps_madds1", OPTYPE_PS, 0}},
+	{18, &Jit64::ps_arith}, //"ps_div",    OPTYPE_PS, 0, 16}},
+	{20, &Jit64::ps_arith}, //"ps_sub",    OPTYPE_PS, 0}},
+	{21, &Jit64::ps_arith}, //"ps_add",    OPTYPE_PS, 0}},
+	{23, &Jit64::ps_sel}, //"ps_sel",    OPTYPE_PS, 0}},
+	{24, &Jit64::Default}, //"ps_res",    OPTYPE_PS, 0}},
+	{25, &Jit64::ps_arith}, //"ps_mul",    OPTYPE_PS, 0}},
+	{26, &Jit64::ps_rsqrte}, //"ps_rsqrte", OPTYPE_PS, 0, 1}},
+	{28, &Jit64::ps_maddXX}, //"ps_msub",   OPTYPE_PS, 0}},
+	{29, &Jit64::ps_maddXX}, //"ps_madd",   OPTYPE_PS, 0}},
+	{30, &Jit64::ps_maddXX}, //"ps_nmsub",  OPTYPE_PS, 0}},
+	{31, &Jit64::ps_maddXX}, //"ps_nmadd",  OPTYPE_PS, 0}},
 };
 
 
 static GekkoOPTemplate table4_3[] = 
 {
-	{6,     &Jit64::Default},
-	{7,    &Jit64::Default},
-	{38,   &Jit64::Default},
-	{39,  &Jit64::Default}, 
+	{6,  &Jit64::Default}, //"psq_lx",   OPTYPE_PS, 0}},
+	{7,  &Jit64::Default}, //"psq_stx",  OPTYPE_PS, 0}},
+	{38, &Jit64::Default}, //"psq_lux",  OPTYPE_PS, 0}},
+	{39, &Jit64::Default}, //"psq_stux", OPTYPE_PS, 0}}, 
 };
 
 static GekkoOPTemplate table19[] = 
 {
-	{528,  &Jit64::bcctrx},
-	{16,    &Jit64::bclrx},
-	{257,   &Jit64::Default},
-	{129,  &Jit64::Default},
-	{289,   &Jit64::Default},
-	{225,  &Jit64::Default},
-	{33,    &Jit64::Default},
-	{449,    &Jit64::Default},
-	{417,   &Jit64::Default},
-	{193,   &Jit64::Default},
+	{528, &Jit64::bcctrx}, //"bcctrx", OPTYPE_BRANCH, FL_ENDBLOCK}},
+	{16,  &Jit64::bclrx}, //"bclrx",  OPTYPE_BRANCH, FL_ENDBLOCK}},
+	{257, &Jit64::Default}, //"crand",  OPTYPE_CR, FL_EVIL}},
+	{129, &Jit64::Default}, //"crandc", OPTYPE_CR, FL_EVIL}},
+	{289, &Jit64::Default}, //"creqv",  OPTYPE_CR, FL_EVIL}},
+	{225, &Jit64::Default}, //"crnand", OPTYPE_CR, FL_EVIL}},
+	{33,  &Jit64::Default}, //"crnor",  OPTYPE_CR, FL_EVIL}},
+	{449, &Jit64::Default}, //"cror",   OPTYPE_CR, FL_EVIL}},
+	{417, &Jit64::Default}, //"crorc",  OPTYPE_CR, FL_EVIL}},
+	{193, &Jit64::Default}, //"crxor",  OPTYPE_CR, FL_EVIL}},
 												   
-	{150,   &Jit64::DoNothing},
-	{0,      &Jit64::Default},
+	{150, &Jit64::DoNothing}, //"isync",  OPTYPE_ICACHE, FL_EVIL}},
+	{0,   &Jit64::Default}, //"mcrf",   OPTYPE_SYSTEM, FL_EVIL}},
 												   
-	{50,      &Jit64::rfi},
-	{18,     &Jit64::Default}
+	{50,  &Jit64::rfi}, //"rfi",    OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 1}},
+	{18,  &Jit64::Default}, //"rfid",   OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS}}
 };
 
 
 static GekkoOPTemplate table31[] = 
 {
-	{28,      &Jit64::andx},
-	{60,     &Jit64::Default},
-	{444,      &Jit64::orx},
-	{124,     &Jit64::Default},
-	{316,     &Jit64::xorx},
-	{412,     &Jit64::Default},
-	{476,    &Jit64::Default},
-	{284,     &Jit64::Default},
-	{0,        &Jit64::cmpXX},
-	{32,      &Jit64::cmpXX},
-	{26,   &Jit64::cntlzwx},
-	{922,   &Jit64::extshx},
-	{954,   &Jit64::extsbx},
-	{536,     &Jit64::srwx},
-	{792,    &Jit64::srawx},
-	{824,   &Jit64::srawix},
-	{24,      &Jit64::slwx},
+	{28,  &Jit64::andx}, //"andx",   OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
+	{60,  &Jit64::Default}, //"andcx",  OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
+	{444, &Jit64::orx}, //"orx",    OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
+	{124, &Jit64::Default}, //"norx",   OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
+	{316, &Jit64::xorx}, //"xorx",   OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
+	{412, &Jit64::Default}, //"orcx",   OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
+	{476, &Jit64::Default}, //"nandx",  OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
+	{284, &Jit64::Default}, //"eqvx",   OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}},
+	{0,   &Jit64::cmpXX}, //"cmp",    OPTYPE_INTEGER, FL_IN_AB | FL_SET_CRn}},
+	{32,  &Jit64::cmpXX}, //"cmpl",   OPTYPE_INTEGER, FL_IN_AB | FL_SET_CRn}},
+	{26,  &Jit64::cntlzwx}, //"cntlzwx",OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_RC_BIT}},
+	{922, &Jit64::extshx}, //"extshx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_RC_BIT}},
+	{954, &Jit64::extsbx}, //"extsbx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_RC_BIT}},
+	{536, &Jit64::srwx}, //"srwx",   OPTYPE_INTEGER, FL_OUT_A | FL_IN_B | FL_IN_S | FL_RC_BIT}},
+	{792, &Jit64::srawx}, //"srawx",  OPTYPE_INTEGER, FL_OUT_A | FL_IN_B | FL_IN_S | FL_RC_BIT}},
+	{824, &Jit64::srawix}, //"srawix", OPTYPE_INTEGER, FL_OUT_A | FL_IN_B | FL_IN_S | FL_RC_BIT}},
+	{24,  &Jit64::slwx}, //"slwx",   OPTYPE_INTEGER, FL_OUT_A | FL_IN_B | FL_IN_S | FL_RC_BIT}},
 
-	{54,     &Jit64::Default},
-	{86,      &Jit64::DoNothing},
-	{246,   &Jit64::Default},
-	{278,     &Jit64::Default},
-	{470,     &Jit64::Default},
-	{758,     &Jit64::Default},
-	{1014,    &Jit64::dcbz},
+	{54,   &Jit64::Default}, //"dcbst",  OPTYPE_DCACHE, 0, 4}},
+	{86,   &Jit64::DoNothing}, //"dcbf",   OPTYPE_DCACHE, 0, 4}},
+	{246,  &Jit64::Default}, //"dcbtst", OPTYPE_DCACHE, 0, 1}},
+	{278,  &Jit64::Default}, //"dcbt",   OPTYPE_DCACHE, 0, 1}},
+	{470,  &Jit64::Default}, //"dcbi",   OPTYPE_DCACHE, 0, 4}},
+	{758,  &Jit64::Default}, //"dcba",   OPTYPE_DCACHE, 0, 4}},
+	{1014, &Jit64::dcbz}, //"dcbz",   OPTYPE_DCACHE, 0, 4}},
 #if JITTEST
 	//load word
-	{23,    &Jit64::lXzx},
-	{55,   &Jit64::lXzx},
+	{23,  &Jit64::lXzx}, //"lwzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
+	{55,  &Jit64::lXzx}, //"lwzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
 
 	//load halfword
-	{279,   &Jit64::lXzx},
-	{311,  &Jit64::lXzx},
+	{279, &Jit64::lXzx}, //"lhzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
+	{311, &Jit64::lXzx}, //"lhzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
 
 	//load halfword signextend
-	{343,   &Jit64::lhax},
-	{375,  &Jit64::Default},
+	{343, &Jit64::lhax}, //"lhax",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
+	{375, &Jit64::Default}, //"lhaux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
 
 	//load byte
-	{87,    &Jit64::lXzx},
-	{119,  &Jit64::lXzx},
+	{87,  &Jit64::lXzx}, //"lbzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
+	{119, &Jit64::lXzx}, //"lbzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
 #else
 	//load word
-	{23,    &Jit64::lwzx},
-	{55,   &Jit64::lwzux},
+	{23,  &Jit64::lwzx}, //"lwzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
+	{55,  &Jit64::lwzux}, //"lwzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
 
 	//load halfword
-	{279,   &Jit64::Default},
-	{311,  &Jit64::Default},
+	{279, &Jit64::Default}, //"lhzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
+	{311, &Jit64::Default}, //"lhzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
 
 	//load halfword signextend
-	{343,   &Jit64::lhax},
-	{375,  &Jit64::Default},
+	{343, &Jit64::lhax}, //"lhax",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
+	{375, &Jit64::Default}, //"lhaux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
 
 	//load byte
-	{87,    &Jit64::lbzx},
-	{119,  &Jit64::Default},
+	{87,  &Jit64::lbzx}, //"lbzx",  OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
+	{119, &Jit64::Default}, //"lbzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
 #endif
 	//load byte reverse
-	{534,  &Jit64::Default},
-	{790,  &Jit64::Default},
+	{534, &Jit64::Default}, //"lwbrx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
+	{790, &Jit64::Default}, //"lhbrx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
 
 	// Conditional load/store (Wii SMP)
-	{150,   &Jit64::Default},
-	{20,     &Jit64::Default},
+	{150, &Jit64::Default}, //"stwcxd", OPTYPE_STORE, FL_EVIL | FL_SET_CR0}},
+	{20,  &Jit64::Default}, //"lwarx",  OPTYPE_LOAD, FL_EVIL | FL_OUT_D | FL_IN_A0B | FL_SET_CR0}},
 
 	//load string (interpret these)
-	{533,   &Jit64::Default},
-	{597,   &Jit64::Default},
+	{533, &Jit64::Default}, //"lswx",  OPTYPE_LOAD, FL_EVIL | FL_IN_A | FL_OUT_D}},
+	{597, &Jit64::Default}, //"lswi",  OPTYPE_LOAD, FL_EVIL | FL_IN_AB | FL_OUT_D}},
 
 	//store word
-	{151,    &Jit64::stXx},
-	{183,   &Jit64::stXx},
+	{151, &Jit64::stXx}, //"stwx",   OPTYPE_STORE, FL_IN_A0 | FL_IN_B}},
+	{183, &Jit64::stXx}, //"stwux",  OPTYPE_STORE, FL_OUT_A | FL_IN_A | FL_IN_B}},
 
 	//store halfword
-	{407,    &Jit64::stXx},
-	{439,   &Jit64::stXx},
+	{407, &Jit64::stXx}, //"sthx",   OPTYPE_STORE, FL_IN_A0 | FL_IN_B}},
+	{439, &Jit64::stXx}, //"sthux",  OPTYPE_STORE, FL_OUT_A | FL_IN_A | FL_IN_B}},
 
 	//store byte
-	{215,    &Jit64::stXx},
-	{247,   &Jit64::stXx},
+	{215, &Jit64::stXx}, //"stbx",   OPTYPE_STORE, FL_IN_A0 | FL_IN_B}},
+	{247, &Jit64::stXx}, //"stbux",  OPTYPE_STORE, FL_OUT_A | FL_IN_A | FL_IN_B}},
 
 	//store bytereverse
-	{662,  &Jit64::Default},
-	{918,  &Jit64::Default},
+	{662, &Jit64::Default}, //"stwbrx", OPTYPE_STORE, FL_IN_A0 | FL_IN_B}},
+	{918, &Jit64::Default}, //"sthbrx", OPTYPE_STORE, FL_IN_A | FL_IN_B}},
 
-	{661,   &Jit64::Default},
-	{725,   &Jit64::Default},
+	{661, &Jit64::Default}, //"stswx",  OPTYPE_STORE, FL_EVIL}},
+	{725, &Jit64::Default}, //"stswi",  OPTYPE_STORE, FL_EVIL}},
 
 	// fp load/store	
-	{535,   &Jit64::lfsx},
-	{567,  &Jit64::Default},
-	{599,   &Jit64::Default},
-	{631,  &Jit64::Default},
+	{535, &Jit64::lfsx}, //"lfsx",  OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}},
+	{567, &Jit64::Default}, //"lfsux", OPTYPE_LOADFP, FL_IN_A | FL_IN_B}},
+	{599, &Jit64::Default}, //"lfdx",  OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}},
+	{631, &Jit64::Default}, //"lfdux", OPTYPE_LOADFP, FL_IN_A | FL_IN_B}},
 
-	{663,   &Jit64::stfsx},
-	{695,  &Jit64::Default},
-	{727,   &Jit64::Default},
-	{759,  &Jit64::Default},
-	{983,  &Jit64::Default},
+	{663, &Jit64::stfsx}, //"stfsx",  OPTYPE_STOREFP, FL_IN_A0 | FL_IN_B}},
+	{695, &Jit64::Default}, //"stfsux", OPTYPE_STOREFP, FL_IN_A | FL_IN_B}},
+	{727, &Jit64::Default}, //"stfdx",  OPTYPE_STOREFP, FL_IN_A0 | FL_IN_B}},
+	{759, &Jit64::Default}, //"stfdux", OPTYPE_STOREFP, FL_IN_A | FL_IN_B}},
+	{983, &Jit64::Default}, //"stfiwx", OPTYPE_STOREFP, FL_IN_A0 | FL_IN_B}},
 
-	{19,     &Jit64::mfcr},
-	{83,    &Jit64::mfmsr},
-	{144,   &Jit64::mtcrf},
-	{146,   &Jit64::mtmsr},
-	{210,    &Jit64::Default},
-	{242,  &Jit64::Default},
-	{339,   &Jit64::mfspr},
-	{467,   &Jit64::mtspr},
-	{371,    &Jit64::mftb},
-	{512,   &Jit64::Default},
-	{595,    &Jit64::Default},
-	{659,  &Jit64::Default},
+	{19,  &Jit64::mfcr}, //"mfcr",   OPTYPE_SYSTEM, FL_OUT_D}},
+	{83,  &Jit64::mfmsr}, //"mfmsr",  OPTYPE_SYSTEM, FL_OUT_D}},
+	{144, &Jit64::mtcrf}, //"mtcrf",  OPTYPE_SYSTEM, 0}},
+	{146, &Jit64::mtmsr}, //"mtmsr",  OPTYPE_SYSTEM, FL_ENDBLOCK}},
+	{210, &Jit64::Default}, //"mtsr",   OPTYPE_SYSTEM, 0}},
+	{242, &Jit64::Default}, //"mtsrin", OPTYPE_SYSTEM, 0}},
+	{339, &Jit64::mfspr}, //"mfspr",  OPTYPE_SPR, FL_OUT_D}},
+	{467, &Jit64::mtspr}, //"mtspr",  OPTYPE_SPR, 0, 2}},
+	{371, &Jit64::mftb}, //"mftb",   OPTYPE_SYSTEM, FL_OUT_D | FL_TIMER}},
+	{512, &Jit64::Default}, //"mcrxr",  OPTYPE_SYSTEM, 0}},
+	{595, &Jit64::Default}, //"mfsr",   OPTYPE_SYSTEM, FL_OUT_D, 2}},
+	{659, &Jit64::Default}, //"mfsrin", OPTYPE_SYSTEM, FL_OUT_D, 2}},
 
-	{4,         &Jit64::Default},
-	{598,     &Jit64::DoNothing},
-	{982,     &Jit64::Default},
+	{4,   &Jit64::Default}, //"tw",     OPTYPE_SYSTEM, 0, 1}},
+	{598, &Jit64::DoNothing}, //"sync",   OPTYPE_SYSTEM, 0, 2}},
+	{982, &Jit64::Default}, //"icbi",   OPTYPE_SYSTEM, 0, 3}},
 
 	// Unused instructions on GC
-	{310,    &Jit64::Default},
-	{438,    &Jit64::Default},
-	{854,    &Jit64::Default},
-	{306,    &Jit64::Default},
-	{370,    &Jit64::Default},
-	{566,  &Jit64::Default},
+	{310, &Jit64::Default}, //"eciwx",   OPTYPE_INTEGER, FL_RC_BIT}},
+	{438, &Jit64::Default}, //"ecowx",   OPTYPE_INTEGER, FL_RC_BIT}},
+	{854, &Jit64::Default}, //"eieio",   OPTYPE_INTEGER, FL_RC_BIT}},
+	{306, &Jit64::Default}, //"tlbie",   OPTYPE_SYSTEM, 0}},
+	{370, &Jit64::Default}, //"tlbia",   OPTYPE_SYSTEM, 0}},
+	{566, &Jit64::Default}, //"tlbsync", OPTYPE_SYSTEM, 0}},
 };
 
 static GekkoOPTemplate table31_2[] = 
 {	
-	{266,     &Jit64::addx},
-	{10,     &Jit64::Default},
-	{138,    &Jit64::addex},
-	{234,   &Jit64::Default},
+	{266, &Jit64::addx}, //"addx",    OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}},
+	{10,  &Jit64::Default}, //"addcx",   OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_SET_CA | FL_RC_BIT}},
+	{138, &Jit64::addex}, //"addex",   OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
+	{234, &Jit64::Default}, //"addmex",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
 #if JITTEST
-	{202,   &Jit64::addzex},
+	{202, &Jit64::addzex}, //"addzex",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
 #else
-	{202,   &Jit64::Default},
+	{202, &Jit64::Default}, //"addzex",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
 #endif
-	{491,    &Jit64::Default},
-	{459,   &Jit64::divwux},
-	{75,    &Jit64::Default},
-	{11,   &Jit64::mulhwux},
-	{235,   &Jit64::mullwx},
-	{104,     &Jit64::negx},
-	{40,     &Jit64::subfx},
-	{8,     &Jit64::subfcx},
-	{136,   &Jit64::subfex},
-	{232,  &Jit64::Default},
-	{200,  &Jit64::Default},
+	{491, &Jit64::Default}, //"divwx",   OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 39}},
+	{459, &Jit64::divwux}, //"divwux",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 39}},
+	{75,  &Jit64::Default}, //"mulhwx",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 4}},
+	{11,  &Jit64::mulhwux}, //"mulhwux", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 4}},
+	{235, &Jit64::mullwx}, //"mullwx",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 4}},
+	{104, &Jit64::negx}, //"negx",    OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}},
+	{40,  &Jit64::subfx}, //"subfx",   OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}},
+	{8,   &Jit64::subfcx}, //"subfcx",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_SET_CA | FL_RC_BIT}},
+	{136, &Jit64::subfex}, //"subfex",  OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
+	{232, &Jit64::Default}, //"subfmex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
+	{200, &Jit64::Default}, //"subfzex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
 };
 
 static GekkoOPTemplate table59[] = 
 {
-	{18,    &Jit64::Default}, 
-	{20,    &Jit64::fp_arith_s}, 
-	{21,    &Jit64::fp_arith_s}, 
-//	{22,   &Jit64::Default}, // Not implemented on gekko
-	{24,     &Jit64::Default}, 
-	{25,    &Jit64::fp_arith_s}, 
-	{28,   &Jit64::fmaddXX}, 
-	{29,   &Jit64::fmaddXX}, 
-	{30,  &Jit64::fmaddXX}, 
-	{31,  &Jit64::fmaddXX}, 
+	{18, &Jit64::Default},       //{"fdivsx",   OPTYPE_FPU, FL_RC_BIT_F, 16}}, 
+	{20, &Jit64::fp_arith_s}, //"fsubsx",   OPTYPE_FPU, FL_RC_BIT_F}}, 
+	{21, &Jit64::fp_arith_s}, //"faddsx",   OPTYPE_FPU, FL_RC_BIT_F}}, 
+//	{22, &Jit64::Default}, //"fsqrtsx",  OPTYPE_FPU, FL_RC_BIT_F}}, // Not implemented on gekko
+	{24, &Jit64::Default}, //"fresx",    OPTYPE_FPU, FL_RC_BIT_F}}, 
+	{25, &Jit64::fp_arith_s}, //"fmulsx",   OPTYPE_FPU, FL_RC_BIT_F}}, 
+	{28, &Jit64::fmaddXX}, //"fmsubsx",  OPTYPE_FPU, FL_RC_BIT_F}}, 
+	{29, &Jit64::fmaddXX}, //"fmaddsx",  OPTYPE_FPU, FL_RC_BIT_F}}, 
+	{30, &Jit64::fmaddXX}, //"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, 
+	{31, &Jit64::fmaddXX}, //"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, 
 };							    
 
 static GekkoOPTemplate table63[] = 
 {
-	{264,    &Jit64::Default},
-	{32,     &Jit64::fcmpx},
-	{0,      &Jit64::fcmpx},
-	{14,    &Jit64::Default},
-	{15,   &Jit64::Default},
-	{72,      &Jit64::fmrx},
-	{136,   &Jit64::Default},
-	{40,     &Jit64::Default},
-	{12,     &Jit64::Default},
+	{264, &Jit64::Default}, //"fabsx",   OPTYPE_FPU, FL_RC_BIT_F}},
+	{32,  &Jit64::fcmpx}, //"fcmpo",   OPTYPE_FPU, FL_RC_BIT_F}},
+	{0,   &Jit64::fcmpx}, //"fcmpu",   OPTYPE_FPU, FL_RC_BIT_F}},
+	{14,  &Jit64::Default}, //"fctiwx",  OPTYPE_FPU, FL_RC_BIT_F}},
+	{15,  &Jit64::Default}, //"fctiwzx", OPTYPE_FPU, FL_RC_BIT_F}},
+	{72,  &Jit64::fmrx}, //"fmrx",    OPTYPE_FPU, FL_RC_BIT_F}},
+	{136, &Jit64::Default}, //"fnabsx",  OPTYPE_FPU, FL_RC_BIT_F}},
+	{40,  &Jit64::Default}, //"fnegx",   OPTYPE_FPU, FL_RC_BIT_F}},
+	{12,  &Jit64::Default}, //"frspx",   OPTYPE_FPU, FL_RC_BIT_F}},
 
-	{64,     &Jit64::Default},
-	{583,    &Jit64::Default},
-	{70,   &Jit64::Default},
-	{38,   &Jit64::Default},
-	{134,  &Jit64::Default},
-	{711,   &Jit64::Default},
+	{64,  &Jit64::Default}, //"mcrfs",   OPTYPE_SYSTEMFP, 0}},
+	{583, &Jit64::Default}, //"mffsx",   OPTYPE_SYSTEMFP, 0}},
+	{70,  &Jit64::Default}, //"mtfsb0x", OPTYPE_SYSTEMFP, 0, 2}},
+	{38,  &Jit64::Default}, //"mtfsb1x", OPTYPE_SYSTEMFP, 0, 2}},
+	{134, &Jit64::Default}, //"mtfsfix", OPTYPE_SYSTEMFP, 0, 2}},
+	{711, &Jit64::Default}, //"mtfsfx",  OPTYPE_SYSTEMFP, 0, 2}},
 };
 
 static GekkoOPTemplate table63_2[] = 
 {
-	{18,    &Jit64::Default},
-	{20,    &Jit64::Default},
-	{21,    &Jit64::Default},
-	{22,   &Jit64::Default},
-	{23,    &Jit64::Default},
-	{25,    &Jit64::fp_arith_s},
-	{26, &Jit64::fp_arith_s},
-	{28,   &Jit64::fmaddXX},
-	{29,   &Jit64::fmaddXX},
-	{30,  &Jit64::fmaddXX},
-	{31,  &Jit64::fmaddXX},
+	{18, &Jit64::Default}, //"fdivx",    OPTYPE_FPU, FL_RC_BIT_F, 30}},
+	{20, &Jit64::Default}, //"fsubx",    OPTYPE_FPU, FL_RC_BIT_F}},
+	{21, &Jit64::Default}, //"faddx",    OPTYPE_FPU, FL_RC_BIT_F}},
+	{22, &Jit64::Default}, //"fsqrtx",   OPTYPE_FPU, FL_RC_BIT_F}},
+	{23, &Jit64::Default}, //"fselx",    OPTYPE_FPU, FL_RC_BIT_F}},
+	{25, &Jit64::fp_arith_s}, //"fmulx",    OPTYPE_FPU, FL_RC_BIT_F}},
+	{26, &Jit64::fp_arith_s}, //"frsqrtex", OPTYPE_FPU, FL_RC_BIT_F}},
+	{28, &Jit64::fmaddXX}, //"fmsubx",   OPTYPE_FPU, FL_RC_BIT_F}},
+	{29, &Jit64::fmaddXX}, //"fmaddx",   OPTYPE_FPU, FL_RC_BIT_F}},
+	{30, &Jit64::fmaddXX}, //"fnmsubx",  OPTYPE_FPU, FL_RC_BIT_F}},
+	{31, &Jit64::fmaddXX}, //"fnmaddx",  OPTYPE_FPU, FL_RC_BIT_F}},
 };
+
 namespace JitTables
 {
 void CompileInstruction(UGeckoInstruction _inst)
diff --git a/Source/Core/Core/Src/PowerPC/PPCTables.cpp b/Source/Core/Core/Src/PowerPC/PPCTables.cpp
index 6b31bcf81d..2979d1c9e0 100644
--- a/Source/Core/Core/Src/PowerPC/PPCTables.cpp
+++ b/Source/Core/Core/Src/PowerPC/PPCTables.cpp
@@ -23,6 +23,7 @@
 #include "StringUtil.h"
 #include "Interpreter/Interpreter.h"
 #include "Interpreter/Interpreter_Tables.h"
+#ifndef NOJIT
 #include "JitCommon/Jit_Tables.h"
 
 #if defined(_M_IX86) || defined(_M_X64)
@@ -30,6 +31,7 @@
 #else
 #error Unknown architecture!
 #endif
+#endif
 
 struct op_inf
 {
@@ -158,7 +160,10 @@ void InitTables()
 {
 	// Interpreter ALWAYS needs to be initialized
 	InterpreterTables::InitTables();
+	#ifndef NOJIT
+	// Should be able to do this a better way than defines in this function
 	JitTables::InitTables();
+	#endif
 }
 
 #define OPLOG
diff --git a/Source/Core/Core/Src/SConscript b/Source/Core/Core/Src/SConscript
index 7c8e41f4da..edd5049634 100644
--- a/Source/Core/Core/Src/SConscript
+++ b/Source/Core/Core/Src/SConscript
@@ -90,36 +90,36 @@ files = ["ActionReplay.cpp",
          "HLE/HLE_Misc.cpp",
          "HLE/HLE_OS.cpp",
         ]
-
-if env['JITTEST']:
-    files += ["PowerPC/Jit64IL/Jit.cpp",
-              "PowerPC/Jit64IL/JitAsm.cpp",
-              "PowerPC/Jit64IL/Jit_Branch.cpp",
-              "PowerPC/Jit64IL/Jit_Integer.cpp",
-              "PowerPC/Jit64IL/Jit_FloatingPoint.cpp",
-              "PowerPC/Jit64IL/Jit_LoadStorePaired.cpp",
-              "PowerPC/Jit64IL/Jit_Paired.cpp",
-              "PowerPC/Jit64IL/Jit_LoadStore.cpp",
-              "PowerPC/Jit64IL/Jit_LoadStoreFloating.cpp",
-              "PowerPC/Jit64IL/Jit_SystemRegisters.cpp",
-              "PowerPC/Jit64IL/IR.cpp",
-              "PowerPC/Jit64IL/IR_X86.cpp",
-			  "PowerPC/JitCommon//Jit_Tables.cpp",
-             ]
-else:
-    files += ["PowerPC/Jit64/Jit.cpp",
-              "PowerPC/Jit64/JitRegCache.cpp",
-              "PowerPC/Jit64/JitAsm.cpp",
-              "PowerPC/Jit64/Jit_Branch.cpp",
-              "PowerPC/Jit64/Jit_Integer.cpp",
-              "PowerPC/Jit64/Jit_FloatingPoint.cpp",
-              "PowerPC/Jit64/Jit_LoadStorePaired.cpp",
-              "PowerPC/Jit64/Jit_Paired.cpp",
-              "PowerPC/Jit64/Jit_LoadStore.cpp",
-              "PowerPC/Jit64/Jit_LoadStoreFloating.cpp",
-              "PowerPC/Jit64/Jit_SystemRegisters.cpp",
-			  "PowerPC/JitCommon/Jit_Tables.cpp",
-             ]
+if not env['NOJIT']:
+	if env['JITTEST']:
+		files += ["PowerPC/Jit64IL/Jit.cpp",
+				  "PowerPC/Jit64IL/JitAsm.cpp",
+				  "PowerPC/Jit64IL/Jit_Branch.cpp",
+				  "PowerPC/Jit64IL/Jit_Integer.cpp",
+				  "PowerPC/Jit64IL/Jit_FloatingPoint.cpp",
+				  "PowerPC/Jit64IL/Jit_LoadStorePaired.cpp",
+				  "PowerPC/Jit64IL/Jit_Paired.cpp",
+				  "PowerPC/Jit64IL/Jit_LoadStore.cpp",
+				  "PowerPC/Jit64IL/Jit_LoadStoreFloating.cpp",
+				  "PowerPC/Jit64IL/Jit_SystemRegisters.cpp",
+				  "PowerPC/Jit64IL/IR.cpp",
+				  "PowerPC/Jit64IL/IR_X86.cpp",
+				  "PowerPC/JitCommon//Jit_Tables.cpp",
+				 ]
+	else:
+		files += ["PowerPC/Jit64/Jit.cpp",
+				  "PowerPC/Jit64/JitRegCache.cpp",
+				  "PowerPC/Jit64/JitAsm.cpp",
+				  "PowerPC/Jit64/Jit_Branch.cpp",
+				  "PowerPC/Jit64/Jit_Integer.cpp",
+				  "PowerPC/Jit64/Jit_FloatingPoint.cpp",
+				  "PowerPC/Jit64/Jit_LoadStorePaired.cpp",
+				  "PowerPC/Jit64/Jit_Paired.cpp",
+				  "PowerPC/Jit64/Jit_LoadStore.cpp",
+				  "PowerPC/Jit64/Jit_LoadStoreFloating.cpp",
+				  "PowerPC/Jit64/Jit_SystemRegisters.cpp",
+				  "PowerPC/JitCommon/Jit_Tables.cpp",
+				 ]
 
 if sys.platform == 'win32':
     files += [ "stdafx.cpp",
diff --git a/Source/Core/DebuggerUICommon/Src/SConscript b/Source/Core/DebuggerUICommon/Src/SConscript
index 66df3477e4..f7be043239 100644
--- a/Source/Core/DebuggerUICommon/Src/SConscript
+++ b/Source/Core/DebuggerUICommon/Src/SConscript
@@ -1,12 +1,13 @@
 # -*- python -*-
 
 Import('env')
-
-files = [
-    'CodeView.cpp',
-    'MemoryView.cpp',
-    'DebuggerUIUtil.cpp',
-    ]
+files = [] #So it's declared outside the if
+if env['HAVE_WX']:
+	files += [
+		'CodeView.cpp',
+		'DebuggerUIUtil.cpp',
+		'MemoryView.cpp',
+		]
 
 acenv = env.Clone()
 acenv.Append(CXXFLAGS = [ '-fPIC' ])
diff --git a/Source/Core/DolphinWX/Src/MainNoGUI.cpp b/Source/Core/DolphinWX/Src/MainNoGUI.cpp
index 33cf89df4d..2138cda02b 100644
--- a/Source/Core/DolphinWX/Src/MainNoGUI.cpp
+++ b/Source/Core/DolphinWX/Src/MainNoGUI.cpp
@@ -3,8 +3,9 @@
 #include <stdarg.h>
 
 #ifndef _WIN32
-//#include <curses.h>
+#include <sys/param.h>
 #else
+
 #endif
 
 #include "Common.h"
@@ -208,7 +209,7 @@ int main(int argc, char* argv[])
 			if (!File::Exists(AppSupportDir) || !File::IsDirectory(AppSupportDir)) 
 				PanicAlert("Could not open ~/Library/Application Support");
 
-			strlcat(AppSupportDir, "/Dolphin", sizeof(AppSupportDir));
+			strncat(AppSupportDir, "/Dolphin", sizeof(AppSupportDir));
 			
 			if (!File::Exists(AppSupportDir))
 				File::CreateDir(AppSupportDir);
diff --git a/Source/Core/InputCommon/Src/X11InputBase.cpp b/Source/Core/InputCommon/Src/X11InputBase.cpp
index 9cd3edb3b1..6013e2f983 100644
--- a/Source/Core/InputCommon/Src/X11InputBase.cpp
+++ b/Source/Core/InputCommon/Src/X11InputBase.cpp
@@ -1,7 +1,12 @@
 
 #include "X11InputBase.h"
+#include <string.h>
+#include <stdio.h>
+#include <ctype.h>
 namespace InputCommon
 {
+#ifdef HAVE_WX
+#include <wx/wx.h>
 // Taken from wxw source code
 KeySym wxCharCodeWXToX(int id)
 {
@@ -84,7 +89,7 @@ KeySym wxCharCodeWXToX(int id)
 
     return keySym;
 }
-
+#endif
 void XKeyToString(unsigned int keycode, char *keyStr) {
   switch (keycode) {
     
@@ -128,4 +133,4 @@ void XKeyToString(unsigned int keycode, char *keyStr) {
     sprintf(keyStr, "%c", toupper(keycode));
   }
 }
-}
\ No newline at end of file
+}
diff --git a/Source/Core/InputCommon/Src/X11InputBase.h b/Source/Core/InputCommon/Src/X11InputBase.h
index 9176a28dd5..55e382cef9 100644
--- a/Source/Core/InputCommon/Src/X11InputBase.h
+++ b/Source/Core/InputCommon/Src/X11InputBase.h
@@ -4,7 +4,6 @@
 
 #include <X11/X.h>
 #include <X11/keysym.h>
-#include <wx/wx.h>
 namespace InputCommon
 {
 KeySym wxCharCodeWXToX(int id);
diff --git a/Source/Plugins/Plugin_DSP_LLE/Src/DSPHost.cpp b/Source/Plugins/Plugin_DSP_LLE/Src/DSPHost.cpp
index 89931eed9f..45aaf63616 100644
--- a/Source/Plugins/Plugin_DSP_LLE/Src/DSPHost.cpp
+++ b/Source/Plugins/Plugin_DSP_LLE/Src/DSPHost.cpp
@@ -102,14 +102,17 @@ u32 DSPHost_CodeLoaded(const u8 *ptr, int size)
 
 	// Always add the ROM.
 	DSPSymbols::AutoDisassembly(0x8000, 0x9000);
-
+#if defined(HAVE_WX) && HAVE_WX
 	if (m_DebuggerFrame)
 		m_DebuggerFrame->Refresh();
+#endif
 	return crc;
 }
 
 void DSPHost_UpdateDebugger()
 {
+#if defined(HAVE_WX) && HAVE_WX
 	if (m_DebuggerFrame)
 		m_DebuggerFrame->Refresh();
+#endif
 }
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp
index c4261ffb56..e254f13784 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp
@@ -1237,7 +1237,7 @@ bool Renderer::SaveRenderTarget(const char *filename, int W, int H, int YOffset)
 	OSD::AddMessage(StringFromFormat("Saved %i x %i %s\n", W, H, s_sScreenshotName.c_str()).c_str(), 2000);
 
 #else
-	bool result = SaveTGA(filename, w, h, data);
+	bool result = SaveTGA(filename, W, H, data);
 	free(data);
 #endif
 	return result;