sse_emit_660f38 (p, names[((int)user)], codes[((int)user)], src, dest);
}
-#if 0
-static void
-sse_rule_shlw (OrcCompiler *p, void *user, OrcInstruction *insn)
-{
- if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) {
- ORC_ASM_CODE(p," psllw $%d, %%%s\n",
- p->vars[insn->src_args[1]].value,
- x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
-
- *p->codeptr++ = 0x66;
- *p->codeptr++ = 0x0f;
- *p->codeptr++ = 0x71;
- x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 6);
- *p->codeptr++ = p->vars[insn->src_args[1]].value;
- } else if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_PARAM) {
- /* FIXME this is a gross hack to reload the register with a
- * 64-bit version of the parameter. */
- ORC_ASM_CODE(p," movd %d(%%%s), %%%s\n",
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]),
- x86_get_regname_ptr(x86_exec_ptr),
- x86_get_regname_sse(p->vars[insn->src_args[1]].alloc));
- *p->codeptr++ = 0x66;
- *p->codeptr++ = 0x0f;
- *p->codeptr++ = 0x6e;
- x86_emit_modrm_memoffset (p,
- p->vars[insn->src_args[1]].alloc,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]),
- x86_exec_ptr);
-
- ORC_ASM_CODE(p," psllw %%%s, %%%s\n",
- x86_get_regname_sse(p->vars[insn->src_args[1]].alloc),
- x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
-
- *p->codeptr++ = 0x66;
- *p->codeptr++ = 0x0f;
- *p->codeptr++ = 0xf1;
- x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc,
- p->vars[insn->src_args[1]].alloc);
- } else {
- ORC_PROGRAM_ERROR(p,"rule only works with constants or params");
- }
-}
-
-static void
-sse_rule_shrsw (OrcCompiler *p, void *user, OrcInstruction *insn)
-{
- if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) {
- ORC_ASM_CODE(p," psraw $%d, %%%s\n",
- p->vars[insn->src_args[1]].value,
- x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
-
- *p->codeptr++ = 0x66;
- *p->codeptr++ = 0x0f;
- *p->codeptr++ = 0x71;
- x86_emit_modrm_reg (p, p->vars[insn->dest_args[0]].alloc, 4);
- *p->codeptr++ = p->vars[insn->src_args[1]].value;
- } else if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_PARAM) {
- /* FIXME this is a gross hack to reload the register with a
- * 64-bit version of the parameter. */
- ORC_ASM_CODE(p," movd %d(%%%s), %%%s\n",
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]),
- x86_get_regname_ptr(x86_exec_ptr),
- x86_get_regname_sse(p->vars[insn->src_args[1]].alloc));
- *p->codeptr++ = 0x66;
- *p->codeptr++ = 0x0f;
- *p->codeptr++ = 0x6e;
- x86_emit_modrm_memoffset (p,
- p->vars[insn->src_args[1]].alloc,
- (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]),
- x86_exec_ptr);
-
- ORC_ASM_CODE(p," psraw %%%s, %%%s\n",
- x86_get_regname_sse(p->vars[insn->src_args[1]].alloc),
- x86_get_regname_sse(p->vars[insn->dest_args[0]].alloc));
-
- *p->codeptr++ = 0x66;
- *p->codeptr++ = 0x0f;
- *p->codeptr++ = 0xe1;
- x86_emit_modrm_reg (p, p->vars[insn->src_args[1]].alloc,
- p->vars[insn->dest_args[0]].alloc);
- } else {
- ORC_PROGRAM_ERROR(p,"rule only works with constants or params");
- }
-}
-#endif
-
static void
sse_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn)
{