Added some patterns and fixed error in constant multiplication
authorceriel <none@none>
Wed, 3 Feb 1993 10:10:07 +0000 (10:10 +0000)
committerceriel <none@none>
Wed, 3 Feb 1993 10:10:07 +0000 (10:10 +0000)
util/opt/patterns
util/opt/peephole.c

index ca0079e..f8285d5 100644 (file)
@@ -374,6 +374,10 @@ loe loe $1==$2: loe $1  dup w
 #endif
 loe ste $1==$2:
 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 inc stl $1==$3:     inl $1
 lol loc mli $2==0 && $3==w:     loc 0
index d7513de..753b439 100644 (file)
@@ -777,7 +777,12 @@ repl_mul(lp, b, e)
                } else {
                        if (virgin) {
                                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);
                                virgin = 0;
                        }