summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2016-11-29 19:30:38 +0000
committerCamil Staps2016-11-29 19:30:38 +0000
commit4242ee7ea091df89cae8e424e2c9532648883a6a (patch)
treef9bfc7e865ebce256b9148d0b7729e118a99053d
parentOne more fix for too large negative offsets (diff)
Fixed some conditional instructions without IT block
-rw-r--r--cgthumb2was.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/cgthumb2was.c b/cgthumb2was.c
index d6f74c1..2e9a333 100644
--- a/cgthumb2was.c
+++ b/cgthumb2was.c
@@ -38,8 +38,13 @@ static void w_as_opcode (char *opcode)
fprintf (assembly_file,"\t%s\t",opcode);
}
-static void w_as_opcode_condition (char *opcode,char *condition)
+static void w_as_opcode_condition (char *opcode,char *condition,int with_it)
{
+ if (with_it)
+ {
+ fprintf (assembly_file,"\tit\t%s",condition);
+ w_as_newline();
+ }
fprintf (assembly_file,"\t%s%s\t",opcode,condition);
}
@@ -1630,12 +1635,12 @@ static void w_as_set_condition_instruction (struct instruction *instruction,char
w_as_newline_after_instruction();
}
- w_as_opcode_condition (opcode,condition);
+ w_as_opcode_condition (opcode,condition,0);
w_as_register (r);
fprintf (assembly_file,",#1");
w_as_newline_after_instruction();
- w_as_opcode_condition (opcode,invert_condition(condition));
+ w_as_opcode_condition (opcode,invert_condition(condition),0);
w_as_register (r);
fprintf (assembly_file,",#0");
w_as_newline_after_instruction();
@@ -1722,7 +1727,7 @@ static void w_as_div_instruction (struct instruction *instruction)
w_as_immediate_newline (0);
if (log2i<=8){
- w_as_opcode ("addlt");
+ w_as_opcode_condition ("add","lt",1);
w_as_register_comma (d_reg);
w_as_register_comma (d_reg);
w_as_immediate_newline (abs_i-1);
@@ -1732,7 +1737,7 @@ static void w_as_div_instruction (struct instruction *instruction)
w_as_register_comma (d_reg);
w_as_immediate_newline (abs_i);
- w_as_opcode ("sublt");
+ w_as_opcode_condition ("sub","lt",1);
w_as_register_comma (d_reg);
w_as_scratch_register_comma();
w_as_immediate_newline (1);