projects
/
platform
/
upstream
/
orc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
18983b2
)
sse: don't emit spurious moves
author
David Schleef
<ds@schleef.org>
Thu, 3 Jun 2010 06:00:23 +0000
(23:00 -0700)
committer
David Schleef
<ds@schleef.org>
Thu, 3 Jun 2010 06:00:23 +0000
(23:00 -0700)
orc/orcrules-sse.c
patch
|
blob
|
history
orc/orcsse.c
patch
|
blob
|
history
diff --git
a/orc/orcrules-sse.c
b/orc/orcrules-sse.c
index
4a0618f
..
1e6b5ad
100644
(file)
--- a/
orc/orcrules-sse.c
+++ b/
orc/orcrules-sse.c
@@
-90,6
+90,10
@@
orc_sse_emit_loadpq (OrcCompiler *p, int reg, int param)
static void
sse_rule_copyx (OrcCompiler *p, void *user, OrcInstruction *insn)
{
+ if (p->vars[insn->src_args[0]].alloc == p->vars[insn->dest_args[0]].alloc) {
+ return;
+ }
+
orc_sse_emit_movdqa (p,
p->vars[insn->src_args[0]].alloc,
p->vars[insn->dest_args[0]].alloc);
diff --git
a/orc/orcsse.c
b/orc/orcsse.c
index
1522ee6
..
d250950
100644
(file)
--- a/
orc/orcsse.c
+++ b/
orc/orcsse.c
@@
-239,6
+239,10
@@
orc_x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int o
void orc_x86_emit_mov_sse_reg_reg (OrcCompiler *compiler, int reg1, int reg2)
{
+ if (reg1 == reg2) {
+ return;
+ }
+
ORC_ASM_CODE(compiler," movdqa %%%s, %%%s\n", orc_x86_get_regname_sse(reg1),
orc_x86_get_regname_sse(reg2));