ref: d76feb058d14da86c5b4bd887dd8887f7034e73a
parent: c75921a96eb005b11144df5169064721e64d640b
author: Ori Bernstein <orib@google.com>
date: Tue Jul 17 10:20:57 EDT 2012
Fix code generation for compares.
The instruction format was overly strict.
--- a/8/insns.def
+++ b/8/insns.def
@@ -20,37 +20,37 @@
Insn(Inone, "BAD_INSN", Use(), Def())
/* Note, the mov instruction is specified in an overly general manner. */
-Insn(Imov, "\tmov%t %x,%x\n", Use(.l={1}), Def(.l={2}))-Insn(Imovz, "\tmovz%1t%2t %x,%x\n", Use(.l={1}), Def(.l={2}))-Insn(Imovs, "\tmovs%1t%2t %x,%x\n", Use(.l={1}), Def(.l={2}))-Insn(Ilea, "\tlea%t %m,%r\n", Use(.l={1}), Def(.l={2}))+Insn(Imov, "\tmov%t %x,%x\n", Use(.l={1}), Def(.l={2}))+Insn(Imovz, "\tmovz%1t%2t %x,%x\n", Use(.l={1}), Def(.l={2}))+Insn(Imovs, "\tmovs%1t%2t %x,%x\n", Use(.l={1}), Def(.l={2}))+Insn(Ilea, "\tlea%t %m,%r\n", Use(.l={1}), Def(.l={2}))-Insn(Iadd, "\tadd%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Isub, "\tsub%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Imul, "\tmul%t %r\n", Use(.l={1},.r={Reax}), Def(.r={Reax,Redx}))-Insn(Idiv, "\tdiv%t %r\n", Use(.l={1},.r={Reax,Redx}), Def(.r={Reax,Redx}))-Insn(Ineg, "\tneg%t %r\n", Use(.l={1}), Def(.l={1}))-Insn(Iand, "\tand%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Ior, "\tor%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Ixor, "\txor%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Inot, "\tnot%t %v\n", Use(.l={1}), Def(.l={1}))-Insn(Ishl, "\tsal%2t %u,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Isar, "\tshr%2t %u,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Ishr, "\tshr%2t %u,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Iadd, "\tadd%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Isub, "\tsub%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Imul, "\tmul%t %r\n", Use(.l={1},.r={Reax}), Def(.r={Reax,Redx}))+Insn(Idiv, "\tdiv%t %r\n", Use(.l={1},.r={Reax,Redx}), Def(.r={Reax,Redx}))+Insn(Ineg, "\tneg%t %r\n", Use(.l={1}), Def(.l={1}))+Insn(Iand, "\tand%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Ior, "\tor%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Ixor, "\txor%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Inot, "\tnot%t %v\n", Use(.l={1}), Def(.l={1}))+Insn(Ishl, "\tsal%2t %u,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Isar, "\tshr%2t %u,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Ishr, "\tshr%2t %u,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Itest, "\ttest%t %u,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Icmp, "\tcmp%t %u,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Itest, "\ttest%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))+Insn(Icmp, "\tcmp%t %x,%r\n", Use(.l={1,2}), Def(.l={2}))-Insn(Ipush, "\tpush%t %r\n", Use(.l={1}), Def())-Insn(Ipop, "\tpop%t %r\n", Use(.l={1}), Def())+Insn(Ipush, "\tpush%t %r\n", Use(.l={1}), Def())+Insn(Ipop, "\tpop%t %r\n", Use(.l={1}), Def())/* branch instructions */
-Insn(Isetz, "\tsetz %v\n", Use(), Def(.l={1}))-Insn(Isetnz, "\tsetnz %v\n", Use(), Def(.l={1}))-Insn(Isetlt, "\tsetlt %v\n", Use(), Def(.l={1}))-Insn(Isetle, "\tsetle %v\n", Use(), Def(.l={1}))-Insn(Isetgt, "\tsetgt %v\n", Use(), Def(.l={1}))-Insn(Isetge, "\tsetge %v\n", Use(), Def(.l={1}))+Insn(Isetz, "\tsetz %v\n", Use(), Def(.l={1}))+Insn(Isetnz, "\tsetnz %v\n", Use(), Def(.l={1}))+Insn(Isetlt, "\tsetlt %v\n", Use(), Def(.l={1}))+Insn(Isetle, "\tsetle %v\n", Use(), Def(.l={1}))+Insn(Isetgt, "\tsetgt %v\n", Use(), Def(.l={1}))+Insn(Isetge, "\tsetge %v\n", Use(), Def(.l={1}))/* branch instructions */
Insn(Icall, "\tcall %v\n", Use(.l={1}), Def())--
⑨