removed all calls to blm~ from table
authorsater <none@none>
Mon, 23 Jul 1984 11:29:59 +0000 (11:29 +0000)
committersater <none@none>
Mon, 23 Jul 1984 11:29:59 +0000 (11:29 +0000)
duplicated some patterns for in[lc] to deal with de[lc]
extra rule for adi 2 to deal with source1 cleverly

mach/pdp/cg/table

index 6f14e03..1ca9d17 100644 (file)
@@ -571,6 +571,9 @@ adi $1==2       | NC SCR_REG CONST2 | | {regconst2,%[1],tostring(%[2.num])} | |
                                                | %[1] %[2]     | adi 2 |
 ...            | NC source2-REG CONST2+ADDR_EXTERNAL+ADDR_LOCAL |
                        allocate(%[1],REG=%[1]) | %[2] %[a] | adi 2 |
+...            | NC source1 CONST2+ADDR_EXTERNAL+ADDR_LOCAL |
+                       allocate(%[1],REG={CONST2, 0})
+                       "bisb %[1],%[a]"        | %[2] %[a] | adi 2 |
 ...            | NC regconst2 CONST2 | |
                                           {regconst2,%[1.reg],
                                              tostring(%[2.num])+"+"+%[1.ind]} | |
@@ -1050,6 +1053,8 @@ lil ngi sil $1==$3 && $2==2 && inreg($1)==2 | |
                        "neg *%(regvar($1)%)"           |       | |
 lil inc sil $1==$3 && inreg($1)==2 | | INDSTORE
                        "inc *%(regvar($1)%)"           |       | |
+lil dec sil $1==$3 && inreg($1)==2 | | INDSTORE
+                       "dec *%(regvar($1)%)"           |       | |
 lol adi stl $2==2 && $1==$3 && inreg($1)==2 | source2 |
                        remove(regvar($1))
                        "add %[1],%(regvar($1)%)"
@@ -1080,6 +1085,12 @@ lol inl $1==$2 && inreg($1)==2 | |
 lol inl $1==$2 | |
                        allocate(REG={LOCAL2, $1, 2})   | %[a] 
                                                        | inl $2 |
+lol del $1==$2 && inreg($1)==2 | |
+                       allocate(REG=regvar($1))        | %[a] 
+                                                       | del $2 |
+lol del $1==$2 | |
+                       allocate(REG={LOCAL2, $1, 2})   | %[a] 
+                                                       | del $2 |
 lol adp dup stl $1==$4 && $3==2 && inreg($1)==2        | | |
                                        | lol $1 adp $2 stl $1 lol $1 |
 lol adp stl $1==$3 && $2==1 && inreg($1)==2 | |
@@ -1109,6 +1120,8 @@ lil ngi sil $1==$3 && $2==2 | | INDSTORE
                        "neg *$1(r5)"                   |       | |
 lil inc sil $1==$3 | | INDSTORE
                        "inc *$1(r5)"                   |       | |
+lil dec sil $1==$3 | | INDSTORE
+                       "dec *$1(r5)"                   |       | |
 lol adi stl $2==2 && $1==$3 | source2 |
                        remove(indordef)
                        remove(locals, %[ind] <= $1 && %[ind]+%[size] > $1)
@@ -2312,11 +2325,27 @@ cmf zge $1==8   | DBL_REG double8 |
                        "cmpf %[1],%[2]\ncfcc"
                        "jle $2"                                | | |
 
-and zeq $1==2  | source2 source2 |
+and zeq $1==2  | source1 source1or2 |
+                       remove(all)
+                       "bitb %[1],%[2]"
+                       "jeq $2"                                | | |
+...            | source1or2 source1 |
+                       remove(all)
+                       "bitb %[1],%[2]"
+                       "jeq $2"                                | | |
+...            | source2 source2 |
                        remove(all)
                        "bit %[1],%[2]"
                        "jeq $2"                                | | |
-and zne $1==2  | source2 source2 |
+and zne $1==2  | source1 source1or2 |
+                       remove(all)
+                       "bitb %[1],%[2]"
+                       "jne $2"                                | | |
+...            | source1or2 source1 |
+                       remove(all)
+                       "bitb %[1],%[2]"
+                       "jne $2"                                | | |
+...            | source2 source2 |
                        remove(all)
                        "bit %[1],%[2]"
                        "jne $2"                                | | |
@@ -2414,19 +2443,18 @@ blm             | SCR_REG SCR_REG |
                        allocate(REG={CONST2,$1/2})
                        "1:mov (%[2])+,(%[1])+\nsob %[a],1b"
                        erase(%[1]) erase (%[2]) erase(%[a])    |       | |
-bls $1==2       | source2 |
-                       remove(all)
-                       move(%[1],r0)
-                       "jsr pc,blm~"
-                       erase(r01)                              |       | |
+bls $1==2       | SCR_REG SCR_REG SCR_REG |
+                       "asr %[1]\nbeq 2f"
+                       "1:mov (%[3])+,(%[2])+\nsob %[1],1b\n2:"
+                       erase(%[1]) erase (%[2]) erase(%[3])    |       | |
 #ifdef UNTESTED
-bls !defined($1)| source2 source2 |
+bls !defined($1)| source2 SCR_REG SCR_REG SCR_REG |
                        remove(all)
                        "cmp %[1],$$2"
                        "beq 1f;jmp unknown~;1:"
-                       move(%[2],r0)
-                       "jsr pc,blm~"
-                       erase(r01)                              |       | |
+                       "asr %[2]\nbeq 2f"
+                       "1:mov (%[4])+,(%[3])+\nsob %[2],1b\n2:"
+                       erase(%[2]) erase (%[3]) erase(%[4])    |       | |
 #endif
 lae csa $2==2 | source2 |
                        remove(all)