Added some patterns and fixed error in constant multiplication
This commit is contained in:
parent
6f8002f540
commit
256151c7e4
2 changed files with 10 additions and 1 deletions
|
@ -374,6 +374,10 @@ loe loe $1==$2: loe $1 dup w
|
||||||
#endif
|
#endif
|
||||||
loe ste $1==$2:
|
loe ste $1==$2:
|
||||||
LLP blm $2==w: loi w sil $1
|
LLP blm $2==w: loi w sil $1
|
||||||
|
lol loc sbi stl $1==$4 && $2==1: del $1
|
||||||
|
lol loc sbi stl $1==$4 && $2==-1: inl $1
|
||||||
|
lol loc adi stl $1==$4 && $2==1: inl $1
|
||||||
|
lol loc adi stl $1==$4 && $2==-1: del $1
|
||||||
lol dec stl $1==$3: del $1
|
lol dec stl $1==$3: del $1
|
||||||
lol inc stl $1==$3: inl $1
|
lol inc stl $1==$3: inl $1
|
||||||
lol loc mli $2==0 && $3==w: loc 0
|
lol loc mli $2==0 && $3==w: loc 0
|
||||||
|
|
|
@ -777,7 +777,12 @@ repl_mul(lp, b, e)
|
||||||
} else {
|
} else {
|
||||||
if (virgin) {
|
if (virgin) {
|
||||||
newinstr(b, op_dup, sz); b = &((*b)->l_next);
|
newinstr(b, op_dup, sz); b = &((*b)->l_next);
|
||||||
newinstr(b, op_loc, 0); b = &((*b)->l_next);
|
if (sz == wordsize) {
|
||||||
|
newinstr(b, op_loc, 0); b = &((*b)->l_next);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
newinstr(b, op_ldc, 0); b = &((*b)->l_next);
|
||||||
|
}
|
||||||
newinstr(b, op_exg, sz); b = &((*b)->l_next);
|
newinstr(b, op_exg, sz); b = &((*b)->l_next);
|
||||||
virgin = 0;
|
virgin = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue