diff --git a/native b/native
index 1150598ce4..2b6ed975e2 160000
--- a/native
+++ b/native
@@ -1 +1 @@
-Subproject commit 1150598ce463c99fbb08ba4177a7937692fe9bc0
+Subproject commit 2b6ed975e28de79d7dc34f225238eae631199afc
diff --git a/unittest/TestX64Emitter.cpp b/unittest/TestX64Emitter.cpp
new file mode 100644
index 0000000000..dd8fb3a54d
--- /dev/null
+++ b/unittest/TestX64Emitter.cpp
@@ -0,0 +1,43 @@
+#include "Common/X64Emitter.h"
+#include "Core/MIPS/x86/RegCacheFPU.h"
+#include "Core/MIPS/x86/Jit.h"
+#include "Core/MIPS/JitCommon/JitState.h"
+#include "Core/MIPS/JitCommon/JitCommon.h"
+#include "Core/MIPS/MIPSVFPUUtils.h"
+#include "ext/disarm.h"
+
+#include "UnitTest.h"
+
+static const u8 *prevStart = NULL;
+
+bool CheckLast(Gen::XEmitter &emit, const char *comp) {
+ auto vec = DisassembleX86(prevStart, emit.GetCodePtr() - prevStart);
+ EXPECT_EQ_STR(vec[0], std::string(comp));
+ return true;
+}
+
+void PrintLast(Gen::XEmitter &emit) {
+ for (const u8 *p = prevStart; p < emit.GetCodePtr(); p++) {
+ printf("%02x ", *p);
+ }
+ printf("\n");
+}
+
+bool TestX64Emitter() {
+ using namespace Gen;
+
+ u32 code[512];
+ XEmitter emitter((u8 *)code);
+
+ prevStart = emitter.GetCodePtr();
+ emitter.VADDSD(XMM0, XMM1, R(XMM7));
+ RET(CheckLast(emitter, "vaddsd xmm0, xmm1, xmm7"));
+
+ prevStart = emitter.GetCodePtr();
+ emitter.VMULSD(XMM0, XMM1, R(XMM7));
+ RET(CheckLast(emitter, "vmulsd xmm0, xmm1, xmm7"));
+
+ // Just for checking.
+ PrintLast(emitter);
+ return true;
+}
diff --git a/unittest/UnitTest.cpp b/unittest/UnitTest.cpp
index 7dfb2d17a8..77b1d60b3d 100644
--- a/unittest/UnitTest.cpp
+++ b/unittest/UnitTest.cpp
@@ -344,11 +344,14 @@ struct TestItem {
#define TEST_ITEM(name) { #name, &Test ##name, }
bool TestArmEmitter();
+bool TestX64Emitter();
+
TestItem availableTests[] = {
TEST_ITEM(Asin),
TEST_ITEM(SinCos),
TEST_ITEM(ArmEmitter),
+ TEST_ITEM(X64Emitter),
TEST_ITEM(VFPUSinCos),
TEST_ITEM(MathUtil),
TEST_ITEM(Parsers),
diff --git a/unittest/UnitTests.vcxproj b/unittest/UnitTests.vcxproj
index 0d1d2ab6b2..3ab743c220 100644
--- a/unittest/UnitTests.vcxproj
+++ b/unittest/UnitTests.vcxproj
@@ -177,6 +177,7 @@
+
diff --git a/unittest/UnitTests.vcxproj.filters b/unittest/UnitTests.vcxproj.filters
index 2da1297b3c..6ab9eba1d2 100644
--- a/unittest/UnitTests.vcxproj.filters
+++ b/unittest/UnitTests.vcxproj.filters
@@ -5,6 +5,7 @@
+