summaryrefslogtreecommitdiff
path: root/cgiwas.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 /cgiwas.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 'cgiwas.c')
-rw-r--r--cgiwas.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/cgiwas.c b/cgiwas.c
index fe96a4c..eef34df 100644
--- a/cgiwas.c
+++ b/cgiwas.c
@@ -1223,6 +1223,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");