From eebc7533067e1c7d72d8cde8a94207000fc117f2 Mon Sep 17 00:00:00 2001 From: sater Date: Mon, 23 Jul 1984 11:29:59 +0000 Subject: [PATCH] removed all calls to blm~ from table 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 | 50 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/mach/pdp/cg/table b/mach/pdp/cg/table index 6f14e0385..1ca9d1743 100644 --- a/mach/pdp/cg/table +++ b/mach/pdp/cg/table @@ -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) -- 2.34.1