From 8bdb699d718665e72128b0a48350265b594bc2c7 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Thu, 7 Oct 2010 16:47:26 -0700 Subject: [PATCH] sse,mmx: Fix mululq rule (SSE2-only) --- orc/orcrules-mmx.c | 6 +++++- orc/orcrules-sse.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/orc/orcrules-mmx.c b/orc/orcrules-mmx.c index 20ecc9c..8a00523 100644 --- a/orc/orcrules-mmx.c +++ b/orc/orcrules-mmx.c @@ -1604,6 +1604,7 @@ mmx_rule_mulslq (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_pmuldq (p, tmp, dest); } +#ifndef MMX static void mmx_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn) { @@ -1616,6 +1617,7 @@ mmx_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_punpckldq (p, tmp, tmp); orc_mmx_emit_pmuludq (p, tmp, dest); } +#endif static void mmx_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) @@ -2796,13 +2798,15 @@ orc_compiler_mmx_register_rules (OrcTarget *target) orc_rule_register (rule_set, "mulubw", mmx_rule_mulubw, NULL); orc_rule_register (rule_set, "mulswl", mmx_rule_mulswl, NULL); orc_rule_register (rule_set, "muluwl", mmx_rule_muluwl, NULL); - orc_rule_register (rule_set, "mululq", mmx_rule_mululq, NULL); orc_rule_register (rule_set, "accw", mmx_rule_accw, NULL); orc_rule_register (rule_set, "accl", mmx_rule_accl, NULL); orc_rule_register (rule_set, "accsadubl", mmx_rule_accsadubl, NULL); #ifndef MMX + /* These require the SSE2 flag, although could be used with MMX. + That flag is not yet handled. */ + orc_rule_register (rule_set, "mululq", mmx_rule_mululq, NULL); REG(addq); REG(subq); diff --git a/orc/orcrules-sse.c b/orc/orcrules-sse.c index 1d3599e..96bfb6c 100644 --- a/orc/orcrules-sse.c +++ b/orc/orcrules-sse.c @@ -1604,6 +1604,7 @@ sse_rule_mulslq (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_pmuldq (p, tmp, dest); } +#ifndef MMX static void sse_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn) { @@ -1616,6 +1617,7 @@ sse_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_punpckldq (p, tmp, tmp); orc_sse_emit_pmuludq (p, tmp, dest); } +#endif static void sse_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) @@ -2796,13 +2798,15 @@ orc_compiler_sse_register_rules (OrcTarget *target) orc_rule_register (rule_set, "mulubw", sse_rule_mulubw, NULL); orc_rule_register (rule_set, "mulswl", sse_rule_mulswl, NULL); orc_rule_register (rule_set, "muluwl", sse_rule_muluwl, NULL); - orc_rule_register (rule_set, "mululq", sse_rule_mululq, NULL); orc_rule_register (rule_set, "accw", sse_rule_accw, NULL); orc_rule_register (rule_set, "accl", sse_rule_accl, NULL); orc_rule_register (rule_set, "accsadubl", sse_rule_accsadubl, NULL); #ifndef MMX + /* These require the SSE2 flag, although could be used with MMX. + That flag is not yet handled. */ + orc_rule_register (rule_set, "mululq", sse_rule_mululq, NULL); REG(addq); REG(subq); -- 2.7.4