Sfoglia il codice sorgente

jit more sse instructions (660F6*)

Fabian 3 anni fa
parent
commit
03d0c02a56
2 ha cambiato i file con 70 aggiunte e 11 eliminazioni
  1. 10 10
      gen/x86_table.js
  2. 60 1
      src/rust/jit_instructions.rs

+ 10 - 10
gen/x86_table.js

@@ -723,30 +723,30 @@ const encodings = [
     { sse: 1, opcode: 0x0F60, e: 1 },
     { sse: 1, opcode: 0x660F61, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F61, e: 1 },
-    { sse: 1, opcode: 0x660F62, e: 1 },
+    { sse: 1, opcode: 0x660F62, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F62, e: 1 },
-    { sse: 1, opcode: 0x660F63, e: 1 },
+    { sse: 1, opcode: 0x660F63, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F63, e: 1 },
-    { sse: 1, opcode: 0x660F64, e: 1 },
+    { sse: 1, opcode: 0x660F64, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F64, e: 1 },
-    { sse: 1, opcode: 0x660F65, e: 1 },
+    { sse: 1, opcode: 0x660F65, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F65, e: 1 },
-    { sse: 1, opcode: 0x660F66, e: 1 },
+    { sse: 1, opcode: 0x660F66, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F66, e: 1 },
     { sse: 1, opcode: 0x660F67, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F67, e: 1 },
 
     { sse: 1, opcode: 0x660F68, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F68, e: 1 },
-    { sse: 1, opcode: 0x660F69, e: 1 },
+    { sse: 1, opcode: 0x660F69, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F69, e: 1 },
-    { sse: 1, opcode: 0x660F6A, e: 1 },
+    { sse: 1, opcode: 0x660F6A, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F6A, e: 1 },
-    { sse: 1, opcode: 0x660F6B, e: 1 },
+    { sse: 1, opcode: 0x660F6B, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F6B, e: 1 },
-    { sse: 1, opcode: 0x660F6C, e: 1 },
+    { sse: 1, opcode: 0x660F6C, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F6C, e: 1, block_boundary: 1, }, // ud
-    { sse: 1, opcode: 0x660F6D, e: 1 },
+    { sse: 1, opcode: 0x660F6D, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F6D, e: 1, block_boundary: 1, }, // ud
     { sse: 1, opcode: 0x660F6E, e: 1, custom: 1 },
     { sse: 1, opcode: 0x0F6E, e: 1, custom: 1 },

+ 60 - 1
src/rust/jit_instructions.rs

@@ -4449,7 +4449,36 @@ pub fn instr_660F61_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32)
 pub fn instr_660F61_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
     sse_read128_xmm_xmm(ctx, "instr_660F61", r1, r2);
 }
-
+pub fn instr_660F62_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F62", modrm_byte, r);
+}
+pub fn instr_660F62_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F62", r1, r2);
+}
+pub fn instr_660F63_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F63", modrm_byte, r);
+}
+pub fn instr_660F63_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F63", r1, r2);
+}
+pub fn instr_660F64_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F64", modrm_byte, r);
+}
+pub fn instr_660F64_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F64", r1, r2);
+}
+pub fn instr_660F65_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F65", modrm_byte, r);
+}
+pub fn instr_660F65_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F65", r1, r2);
+}
+pub fn instr_660F66_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F66", modrm_byte, r);
+}
+pub fn instr_660F66_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F66", r1, r2);
+}
 pub fn instr_660F67_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
     sse_read128_xmm_mem(ctx, "instr_660F67", modrm_byte, r);
 }
@@ -4462,6 +4491,36 @@ pub fn instr_660F68_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32)
 pub fn instr_660F68_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
     sse_read128_xmm_xmm(ctx, "instr_660F68", r1, r2);
 }
+pub fn instr_660F69_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F69", modrm_byte, r);
+}
+pub fn instr_660F69_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F69", r1, r2);
+}
+pub fn instr_660F6A_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F6A", modrm_byte, r);
+}
+pub fn instr_660F6A_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F6A", r1, r2);
+}
+pub fn instr_660F6B_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F6B", modrm_byte, r);
+}
+pub fn instr_660F6B_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F6B", r1, r2);
+}
+pub fn instr_660F6C_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F6C", modrm_byte, r);
+}
+pub fn instr_660F6C_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F6C", r1, r2);
+}
+pub fn instr_660F6D_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
+    sse_read128_xmm_mem(ctx, "instr_660F6D", modrm_byte, r);
+}
+pub fn instr_660F6D_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
+    sse_read128_xmm_xmm(ctx, "instr_660F6D", r1, r2);
+}
 
 pub fn instr_0F6E_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
     codegen::gen_modrm_resolve_safe_read32(ctx, modrm_byte);