diff options
author | John van Groningen | 2006-01-20 15:11:38 +0000 |
---|---|---|
committer | John van Groningen | 2006-01-20 15:11:38 +0000 |
commit | 68be263f0412aab91f28950f84df4357c2ba040d (patch) | |
tree | cf2bdb2b481684c7d02b9b9ab006901944a09b02 /cgiwas.c | |
parent | fix 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.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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"); |