From: David Schleef Date: Mon, 30 Aug 2010 01:09:20 +0000 (-0700) Subject: orcc: Fix code generation of test X-Git-Tag: orc-0.4.8~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c3501e2ad006a979be15a55cb429a1f0f803b056;p=platform%2Fupstream%2Forc.git orcc: Fix code generation of test --- diff --git a/tools/orcc.c b/tools/orcc.c index 1f6c189..099c180 100644 --- a/tools/orcc.c +++ b/tools/orcc.c @@ -1058,15 +1058,29 @@ output_code_test (OrcProgram *p, FILE *output) enumnames[insn->src_args[0]]); } } else { - if (p->vars[insn->src_args[1]].size != 0) { - fprintf(output, " orc_program_append_2 (p, \"%s\", %d, %s, %s, %s, -1);\n", - insn->opcode->name, insn->flags, enumnames[insn->dest_args[0]], - enumnames[insn->src_args[0]], enumnames[insn->src_args[1]]); - } else { - fprintf(output, " orc_program_append_2 (p, \"%s\", %d, %s, %s, -1, -1);\n", - insn->opcode->name, insn->flags, enumnames[insn->dest_args[0]], - enumnames[insn->src_args[0]]); + int args[4] = { 0, 0, 0, 0 }; + int n_args = 0; + + if (insn->opcode->dest_size[0] != 0) { + args[n_args++] = insn->dest_args[0]; + } + if (insn->opcode->dest_size[1] != 0) { + args[n_args++] = insn->dest_args[1]; + } + if (insn->opcode->src_size[0] != 0) { + args[n_args++] = insn->src_args[0]; } + if (insn->opcode->src_size[1] != 0) { + args[n_args++] = insn->src_args[1]; + } + if (insn->opcode->src_size[2] != 0) { + args[n_args++] = insn->src_args[2]; + } + + fprintf(output, " orc_program_append_2 (p, \"%s\", %d, %s, %s, %s, %s);\n", + insn->opcode->name, insn->flags, enumnames[args[0]], + enumnames[args[1]], enumnames[args[2]], + enumnames[args[3]]); } }