about summary refs log tree commit diff stats
path: root/src/emu/x64run_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/x64run_private.h')
-rw-r--r--src/emu/x64run_private.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/emu/x64run_private.h b/src/emu/x64run_private.h
index 01cf3e4d..659b76bf 100644
--- a/src/emu/x64run_private.h
+++ b/src/emu/x64run_private.h
@@ -21,6 +21,22 @@ typedef struct rex_s {
     int     is32bits;
 } rex_t;
 
+#define VEX_P_NONE  0
+#define VEX_P_66    1
+#define VEX_P_F3    2
+#define VEX_P_F2    3
+#define VEX_M_NONE  0
+#define VEX_M_0F    1
+#define VEX_M_OF38  2
+#define VEX_M_0F3A  3
+typedef struct vex_s {
+    rex_t       rex;
+    uint16_t    l:1;
+    uint16_t    p:2;    //0: none, 1: 0x66, 2:0xF3, 3: 0xF2
+    uint16_t    v:4;    // src register
+    uint16_t    m:5;    // opcode map
+} vex_t;
+
 static inline uint8_t Peek(x64emu_t *emu, int offset){return *(uint8_t*)(R_RIP + offset);}
 
 #ifdef TEST_INTERPRETER
@@ -155,6 +171,8 @@ uintptr_t RunDF(x64emu_t *emu, rex_t rex, uintptr_t addr);
 uintptr_t RunF0(x64emu_t *emu, rex_t rex, uintptr_t addr);
 uintptr_t RunF20F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step);
 uintptr_t RunF30F(x64emu_t *emu, rex_t rex, uintptr_t addr);
+uintptr_t RunAVX(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step);
+
 
 uintptr_t Test0F(x64test_t *test, rex_t rex, uintptr_t addr, int *step);
 uintptr_t Test64(x64test_t *test, rex_t rex, int seg, uintptr_t addr);
@@ -183,6 +201,7 @@ uintptr_t TestDF(x64test_t *test, rex_t rex, uintptr_t addr);
 uintptr_t TestF0(x64test_t *test, rex_t rex, uintptr_t addr);
 uintptr_t TestF20F(x64test_t *test, rex_t rex, uintptr_t addr, int *step);
 uintptr_t TestF30F(x64test_t *test, rex_t rex, uintptr_t addr);
+uintptr_t TestAVX(x64test_t *test, vex_t vex, uintptr_t addr, int *step);
 
 
 void x64Syscall(x64emu_t *emu);