summaryrefslogtreecommitdiff
path: root/cgawas.c
diff options
context:
space:
mode:
authorJohn van Groningen2006-01-20 15:11:38 +0000
committerJohn van Groningen2006-01-20 15:11:38 +0000
commit68be263f0412aab91f28950f84df4357c2ba040d (patch)
treecf2bdb2b481684c7d02b9b9ab006901944a09b02 /cgawas.c
parentfix incorrect code generation for return with > 7 floating point parameters (diff)
optimize cmp $0,r , generate test r,r instead
Diffstat (limited to 'cgawas.c')
-rw-r--r--cgawas.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/cgawas.c b/cgawas.c
index ca61f3b..eda248a 100644
--- a/cgawas.c
+++ b/cgawas.c
@@ -1451,6 +1451,14 @@ static void w_as_cmp_instruction (struct instruction *instruction,int size_flag)
parameter_0.parameter_type=P_REGISTER;
parameter_0.parameter_data.reg.r=REGISTER_O0;
}
+ case P_IMMEDIATE:
+ if (parameter_0.parameter_data.i==0 && parameter_1.parameter_type==P_REGISTER && size_flag==SIZE_LONG){
+ w_as_opcode (intel_asm ? "test" : "testl");
+ w_as_register (parameter_1.parameter_data.reg.r);
+ w_as_comma_register (parameter_1.parameter_data.reg.r);
+ w_as_newline();
+ return;
+ }
}
w_as_opcode (intel_asm ? "cmp" : "cmpl");