From 9d66bc32583238b30c10720a3744edfc276d0477 Mon Sep 17 00:00:00 2001 From: ceriel Date: Wed, 8 Jul 1987 16:36:45 +0000 Subject: [PATCH] fix: sometimes the index mode was used in the wrong way --- mach/vax4/cg/table | 54 +++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/mach/vax4/cg/table b/mach/vax4/cg/table index 1cc4aae78..48b9ae484 100644 --- a/mach/vax4/cg/table +++ b/mach/vax4/cg/table @@ -180,6 +180,8 @@ adispldefind8 = {REGISTER ireg,reg; STRING ind;} 4 cost=(3,13) TOKENEXPRESSIONS: CONST = CONST1 + CONST2 + CONST4 +ind2 = extind2 + displind2 + extdefind2 + displdefind2 +ind4 = extind4 + displind4 + extdefind4 + displdefind4 Xsource1 = regdef1 + displ1 + displdef1 + EXTERNAL1 + reldef1 + CONST1 + LOCAL1 + displind1 + extdefind1 + displdefind1 @@ -188,15 +190,13 @@ source1 = Xsource1 + reginc1 + regdec1 #endif REGVARS Xsource2 = regdef2 + displ2 + displdef2 + - EXTERNAL2 + reldef2 + CONST2 + LOCAL2 - + extind2 + displind2 + extdefind2 + displdefind2 + EXTERNAL2 + reldef2 + CONST2 + LOCAL2 + ind2 source2 = Xsource2 #ifdef REGVARS + reginc2 + regdec2 #endif REGVARS Xsource4 = REG + regdef4 + displ4 + displdef4 + LocaLBase + - EXTERNAL4 + reldef4 + CONST + DOUBLE + LOCAL4 + FCONST4 - + extind4 + displind4 + extdefind4 + displdefind4 + EXTERNAL4 + reldef4 + CONST + DOUBLE + LOCAL4 + FCONST4 + ind4 source4 = Xsource4 #ifdef REGVARS + RREG + reginc4 + regdec4 @@ -211,16 +211,14 @@ source8 = Xsource8 #ifdef REGVARS + reginc8 + regdec8 #endif REGVARS -source1or2 = source1 + source2 -source1or2or4 = source1or2 + source4 -source2or4 = source2 + source4 +source1or2 = source1 + source2 - ind2 +source1or2or4 = source1or2 + source4 - (ind2 + ind4) +source2or4 = source2 + source4 - ind4 nonexist1 = adispl + ADDR_EXTERNAL + ADDR_LOCAL aextind = aextind2 + aextind4 + aextind8 adisplind = adisplind1 + adisplind2 + adisplind4 + adisplind8 aextdefind = aextdefind1 + aextdefind2 + aextdefind4 + aextdefind8 adispldefind = adispldefind1 + adispldefind2 + adispldefind4 + adispldefind8 -ind2 = extind2 + displind2 + extdefind2 + displdefind2 -ind4 = extind4 + displind4 + extdefind4 + displdefind4 aind1 = adisplind1 + aextdefind1 + adispldefind1 aind2 = aextind2 + adisplind2 + aextdefind2 + adispldefind2 aind4 = aextind4 + adisplind4 + aextdefind4 + adispldefind4 @@ -258,7 +256,7 @@ reg8 = QREG #endif REGVARS sreg4 = REG * SCRATCH sreg8 = QREG * SCRATCH -bigsource4 = source1or2or4 + nonexist +bigsource4 = source1or2or4 + nonexist + ind2 + ind4 bigsource8 = source8 all = bigsource4 + bigsource8 scr = ALL - (EXTERNALS + LOCALS + ADDR_LOCAL + ADDR_EXTERNAL + CONST @@ -1023,57 +1021,57 @@ ngi !defined($1) | source4 | remove(ALL) move(%[1],R0) "jsb\t.ngi" | | | -sli $1==4 | source1or2or4 source1or2or4 | +sli $1==4 | source1or2or4 source4 | allocate(%[1],%[2],REG) "ashl\t%[1],%[2],%[a]" setcc(%[a]) | %[a] | | (4,4)+%[1]+%[2] #ifdef REGVARS sli stl $1==4 && inreg($2)==2 - | source4 source4 | + | source1or2or4 source4 | remove(regvar($2)) "ashl\t%[1],%[2],%(regvar($2)%)" erase(regvar($2)) setcc(regvar($2)) | | | #endif REGVARS sli stl $1==4 && $2<0 - | source4 source4 | + | source1or2or4 source4 | remove(displaced) remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2)) "ashl\t%[1],%[2],$2(fp)" setcc({LOCAL4,LB,$2,4}) | | | sli stl $1==4 && $2>=0 - | source4 source4 | + | source1or2or4 source4 | remove(displaced) remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2)) "ashl\t%[1],%[2],$2(ap)" setcc({LOCAL4,AP,$2,4}) | | | #ifdef REGVARS sli sil $1==4 && inreg($2)==2 - | source4 source4 | + | source1or2or4 source4 | REMEXTANDLOC "ashl\t%[1],%[2],(%(regvar($2)%))" setcc({regdef4,regvar($2)}) | | | sli lol stf $1==4 && inreg($2)==2 - | source4 source4 | + | source1or2or4 source4 | REMEXTANDLOC "ashl\t%[1],%[2],$3(%(regvar($2)%))" setcc({displ4,regvar($2),tostring($3)}) | | | #endif REGVARS sli sil $1==4 && $2<0 - | source4 source4 | + | source1or2or4 source4 | REMEXTANDLOC "ashl\t%[1],%[2],*$2(fp)" setcc({displdef4,LB,tostring($2)}) | | | sli sil $1==4 && $2>=0 - | source4 source4 | + | source1or2or4 source4 | REMEXTANDLOC "ashl\t%[1],%[2],*$2(ap)" setcc({displdef4,AP,tostring($2)}) | | | -sli ste $1==4 | source4 source4 | +sli ste $1==4 | source1or2or4 source4 | remove(externals) "ashl\t%[1],%[2],$2" setcc({EXTERNAL4,$2}) | | | (8,10)+%[1]+%[2] -sli !defined($1) | source4 | +sli !defined($1) | source1or2or4 | remove(ALL) move(%[1],R0) "jsb\t.sli" @@ -1770,12 +1768,12 @@ adp dup sil adp $1==(0-$4) && $2==4 adp dup loe sti adp $1==(0-$5) && $2==4 && $4==4 | reg4 | | %[1] %[1] | adp $1 loe $3 sti 4 | dup adp lol sti $1==4 && $4==4 - | bigsource4 | + | bigsource4-regch4 | allocate(REG=%[1]) | %[a] %[1] {CONST4,$2} | adi 4 lol $3 sti 4 | dup adp loe sti $1==4 && $4==4 - | bigsource4 | + | bigsource4-regch4 | allocate(REG=%[1]) | %[a] %[1] {CONST4,$2} | adi 4 loe $3 sti 4 | @@ -2111,10 +2109,6 @@ cuu | STACK | ciu | | | | cuu | cui | STACK | "jsb\t.cui" | | | -loc loc cii $1==1 && $2==2 | source1or2or4 | - allocate(%[1],REG) - "cvtbw\t%[1],%[a]" - setcc(%[a]) | %[a] | | #ifdef REGVARS loc loc cii stl $1==1 && $2==4 && inreg($4)==2 | source1or2or4 | @@ -3222,7 +3216,7 @@ tlt | source4 | #endif erase(%[a]) setcc(%[a]) | %[a] | | -... | NC source1or2 | | {CONST1,0} | | +... | NC source1or2-regch4 | | {CONST1,0} | | tlt and $2==4 | source4 sreg4 | test(%[1]) #ifdef LOCLABS @@ -3292,7 +3286,7 @@ tge | source4 | #endif erase(%[a]) setcc(%[a]) | %[a] | | -... | NC source1or2 | | {CONST1,1} | | +... | NC source1or2-regch4 | | {CONST1,1} | | tge and $2==4 | source4 sreg4 | test(%[1]) #ifdef LOCLABS @@ -4418,8 +4412,8 @@ dus !defined($1) | source4 | move(%[1],R0) "jsb\t.dus" erase(R0) | | | -exg $1==4 | bigsource4-source4+Xsource4 bigsource4-source4+Xsource4 | | %[1] %[2] | | -exg $1==8 | bigsource8-source8+Xsource8 bigsource8-source8+Xsource8 | | %[1] %[2] | | +exg $1==4 | bigsource4-regch4 bigsource4-regch4 | | %[1] %[2] | | +exg $1==8 | bigsource8-regch8 bigsource8-regch8 | | %[1] %[2] | | exg defined($1) | STACK | move({CONST4,$1},R0) "jsb\t.exg" -- 2.34.1