Fixes Fedora bug #742534.
orc_x86_emit_mov_memoffset_mmx (p, 16, offset, p->exec_reg,
p->vars[insn->dest_args[0]].alloc, FALSE);
- orc_x86_emit_mov_memoffset_reg (p, 8, offset + 32, p->exec_reg, X86_EAX);
- orc_x86_emit_mov_memoffset_reg (p, 8, offset + 40, p->exec_reg, X86_EDX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX);
}
#endif
orc_x86_emit_mov_memoffset_mmx (p, 16, offset + 16, p->exec_reg,
p->vars[insn->dest_args[0]].alloc, FALSE);
- orc_x86_emit_mov_memoffset_reg (p, 8, offset + 32, p->exec_reg, X86_EAX);
- orc_x86_emit_mov_memoffset_reg (p, 8, offset + 40, p->exec_reg, X86_EDX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX);
}
#endif
orc_x86_emit_mov_memoffset_sse (p, 16, offset, p->exec_reg,
p->vars[insn->dest_args[0]].alloc, FALSE);
- orc_x86_emit_mov_memoffset_reg (p, 8, offset + 32, p->exec_reg, X86_EAX);
- orc_x86_emit_mov_memoffset_reg (p, 8, offset + 40, p->exec_reg, X86_EDX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX);
}
#endif
orc_x86_emit_mov_memoffset_sse (p, 16, offset + 16, p->exec_reg,
p->vars[insn->dest_args[0]].alloc, FALSE);
- orc_x86_emit_mov_memoffset_reg (p, 8, offset + 32, p->exec_reg, X86_EAX);
- orc_x86_emit_mov_memoffset_reg (p, 8, offset + 40, p->exec_reg, X86_EDX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX);
+ orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX);
}
#endif
reg1, offset, reg2);
break;
case 8:
- orc_x86_emit_cpuinsn_reg_memoffset (compiler, ORC_X86_mov_r_rm,
+ orc_x86_emit_cpuinsn_reg_memoffset_8 (compiler, ORC_X86_mov_r_rm,
reg1, offset, reg2);
break;
default:
int imm, int offset, int dest);
void orc_x86_emit_cpuinsn_reg_memoffset (OrcCompiler *p, int index, int src,
int offset, int dest);
+void orc_x86_emit_cpuinsn_reg_memoffset_8 (OrcCompiler *p, int index, int src,
+ int offset, int dest);
void orc_x86_emit_cpuinsn_memoffset_reg (OrcCompiler *p, int index, int size,
int offset, int src, int dest);
void orc_x86_emit_cpuinsn_memoffset (OrcCompiler *p, int index, int size,
}
void
+orc_x86_emit_cpuinsn_reg_memoffset_8 (OrcCompiler *p, int index, int src,
+ int offset, int dest)
+{
+ OrcX86Insn *xinsn = orc_x86_get_output_insn (p);
+ const OrcSysOpcode *opcode = orc_x86_opcodes + index;
+ int size = 8;
+
+ xinsn->opcode_index = index;
+ xinsn->opcode = opcode;
+ xinsn->src = src;
+ xinsn->dest = dest;
+ xinsn->type = ORC_X86_RM_MEMOFFSET;
+ xinsn->offset = offset;
+ xinsn->size = size;
+}
+
+void
orc_x86_emit_cpuinsn_memoffset_reg (OrcCompiler *p, int index, int size,
int offset, int src, int dest)
{