Some extra patterns added.

This commit is contained in:
ceriel 1987-02-13 12:41:31 +00:00
parent 3378831ba5
commit 629c0a315c

View file

@ -193,6 +193,8 @@ loc | | | {ANYCON, $1} | |
ldc | | | {ANYCON, highw(1)} {ANYCON, loww(1)} | |
lol | | | {LOCAL2, $1, 2} | |
loe | | | {EXTERN2, $1} | |
loe loe $1==$2 | | allocate(ADDREG={EXTERN2, $1}) | %[a] %[a] | |
lol lol $1==$2 | | allocate(ADDREG={LOCAL2, $1, 2})| %[a] %[a] | |
lil | | allocate(ADDREG={ind_regoff2, bp, tostring($1)})
| {ind_reg2, %[a]} | |
lof | nocoercions : reg_off |
@ -804,6 +806,7 @@ adp $1==1 | nocoercions : reg_off | |
... | X_REG |
"inc %[1]"
erase(%[1]) setcc(%[1]) | %[1] | | (1,2)
... | X_ADDREG | | {reg_off, %[1], tostring($1)} | |
adp $1 == 0-1 | nocoercions : reg_off | |
{reg_off, %[1.reg],%[1.off]+tostring($1)} | |
... | nocoercions : ADDR_EXTERN | |
@ -814,6 +817,7 @@ adp $1 == 0-1 | nocoercions : reg_off | |
... | X_REG |
"dec %[1]"
erase(%[1]) setcc(%[1]) | %[1] | | (1,2)
... | X_ADDREG | | {reg_off, %[1], tostring($1)} | |
adp | nocoercions : reg_off | |
{reg_off, %[1.reg],%[1.off]+"+"+tostring($1)} | |
... | nocoercions : ADDR_EXTERN | |
@ -975,21 +979,29 @@ lol adi stl $1==$3 && $2==2 | regorconst |
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"add $1(bp),%[1]"
setcc({LOCAL2, $1, 2}) | | |
ldl adi sdl $1==$3 && $2==4 | regorconst regorconst |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+4 )
"add $1(bp),%[1]"
"adc %($1+2%)(bp),%[2]" | | |
lol ngi stl $1==$3 && $2==2 | |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"neg $1(bp)"
setcc({LOCAL2, $1, 2}) | | |
ldl ngi sdl $1==$3 && $2==4 | |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+4 )
"neg $1(bp)"
"neg %($1+2%)(bp)"
"sbb %($1+2%)(bp,0" | | |
lol ads stl $1==$3 && $2==2 | regorconst |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"add $1(bp),%[1]"
setcc({LOCAL2, $1, 2}) | | |
lol adp stl $1==$3 | |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"add $1(bp),$2"
setcc({LOCAL2, $1, 2}) | | |
lol lol adp stl $1==$2 && $1==$4 | |
allocate(ADDREG={LOCAL2,$1,2}) | %[a] | lol $2 adp $3 stl $2 |
lol adp stl $1==$3 && $2==1 | |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
@ -1000,6 +1012,11 @@ lol adp stl $1==$3 && $2==0-1 | |
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"dec $1(bp)"
setcc({LOCAL2, $1, 2}) | | |
lol adp stl $1==$3 | |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"add $1(bp),$2"
setcc({LOCAL2, $1, 2}) | | |
lol and stl $1==$3 && $2==2 | regorconst |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
@ -1030,11 +1047,6 @@ lil ads sil $1==$3 && $2==2 | regorconst |
remove(referals)
"add (%[a]),%[1]"
setcc({ind_reg2, %[a]}) | | |
lil adp sil $1==$3 | |
allocate(ADDREG={LOCAL2, $1, 2})
remove(referals)
"add (%[a]),$2"
setcc({ind_reg2, %[a]}) | | |
lil adp sil $1==$3 && $2==1 | |
allocate(ADDREG={LOCAL2, $1, 2})
remove(referals)
@ -1045,6 +1057,11 @@ lil adp sil $1==$3 && $2==0-1 | |
remove(referals)
"dec (%[a])"
setcc({ind_reg2, %[a]}) | | |
lil adp sil $1==$3 | |
allocate(ADDREG={LOCAL2, $1, 2})
remove(referals)
"add (%[a]),$2"
setcc({ind_reg2, %[a]}) | | |
lil and sil $1==$3 && $2==2 | regorconst |
allocate(ADDREG={LOCAL2, $1, 2})
remove(referals)
@ -1064,18 +1081,25 @@ loe adi ste $1==$3 && $2==2 | regorconst |
remove(indirects)
"add ($1),%[1]"
setcc({EXTERN2, $1}) | | |
lde adi sde $1==$3 && $2==4 | regorconst regorconst |
remove(indirects)
"add ($1),%[1]"
"adc ($1+2),%[2]" | | |
loe ngi ste $1==$3 && $2==2 | |
remove(indirects)
"neg ($1)"
setcc({EXTERN2, $1}) | | |
lde ngi sde $1==$3 && $2==4 | |
remove(indirects)
"neg ($1)"
"neg ($1+2)"
"sbb ($1+2),0" | | |
loe ads ste $1==$3 && $2==2 | regorconst |
remove(indirects)
"add ($1),%[1]"
setcc({EXTERN2, $1}) | | |
loe adp ste $1==$3 | |
remove(indirects)
"add ($1),$2"
setcc({EXTERN2, $1}) | | |
loe loe adp ste $1==$4 && $1==$4 | |
allocate(ADDREG={EXTERN2,$1}) | %[a] | loe $1 adp $3 ste $1 |
loe adp ste $1==$3 && $2==1 | |
remove(indirects)
"inc ($1)"
@ -1084,6 +1108,10 @@ loe adp ste $1==$3 && $2==0-1 | |
remove(indirects)
"dec ($1)"
setcc({EXTERN2, $1}) | | |
loe adp ste $1==$3 | |
remove(indirects)
"add ($1),$2"
setcc({EXTERN2, $1}) | | |
loe and ste $1==$3 && $2==2 | regorconst |
remove(indirects)
"and ($1),%[1]"
@ -1129,11 +1157,19 @@ cff | CXREG DXREG |
loc loc cii $1==1 && $2==2 | ACC |
"cbw"
samecc | ax | |(1,2)
... | ACC1 |
"cbw"
samecc | ax | |(1,2)
loc loc cii $1==1 && $2==4 | ACC |
allocate(DXREG)
"cbw"
"cwd"
samecc | dx ax | |(2,7)
... | ACC1 |
allocate(DXREG)
"cbw"
"cwd"
samecc | dx ax | |(2,7)
loc loc cii $1==2 && $2==4 | ACC |
allocate(DXREG)
"cwd"
@ -2135,6 +2171,7 @@ csb !defined($1)| rm-SIREG-DIREG X_SIREG X_DXREG |
"jmp .csb2"
erase(%[2]) erase(%[3]) | | |
dup $1==2 | REG | | %[1] %[1] | |
... | ACC1 | | %[1] %[1] | |
dup $1==4 | REG REG | | %[2] %[1] %[2] %[1] | |
dup | | remove(ALL)
move({ANYCON, $1}, cx)