divided time costs by 10, because of overflow
This commit is contained in:
parent
02ae5e4d7c
commit
61a5c8ce08
1 changed files with 125 additions and 125 deletions
|
@ -55,7 +55,7 @@ EM_WSIZE=2
|
||||||
EM_PSIZE=2
|
EM_PSIZE=2
|
||||||
EM_BSIZE=SL
|
EM_BSIZE=SL
|
||||||
|
|
||||||
TIMEFACTOR= 1/300
|
TIMEFACTOR= 1/30
|
||||||
|
|
||||||
REGISTERS:
|
REGISTERS:
|
||||||
r0 = ("r0", 2), REG.
|
r0 = ("r0", 2), REG.
|
||||||
|
@ -95,31 +95,31 @@ TOKENS:
|
||||||
* Types on the EM-machine *
|
* Types on the EM-machine *
|
||||||
********************************/
|
********************************/
|
||||||
|
|
||||||
CONST2 = {INT num;} 2 cost=(2,300) "$%[num]"
|
CONST2 = {INT num;} 2 cost=(2,30) "$%[num]"
|
||||||
LOCAL2 = {INT ind,size;} 2 cost=(2,600) "%[ind](r5)"
|
LOCAL2 = {INT ind,size;} 2 cost=(2,60) "%[ind](r5)"
|
||||||
LOCAL4 = {INT ind,size;} 4 cost=(2,1200) "%[ind](r5)"
|
LOCAL4 = {INT ind,size;} 4 cost=(2,120) "%[ind](r5)"
|
||||||
ADDR_LOCAL = {INT ind;} 2
|
ADDR_LOCAL = {INT ind;} 2
|
||||||
ADDR_EXTERNAL = {STRING ind;} 2 cost=(2,300) "$%[ind]"
|
ADDR_EXTERNAL = {STRING ind;} 2 cost=(2,30) "$%[ind]"
|
||||||
|
|
||||||
/********************************************************
|
/********************************************************
|
||||||
* Now mostly addressing modes of target machine *
|
* Now mostly addressing modes of target machine *
|
||||||
********************************************************/
|
********************************************************/
|
||||||
|
|
||||||
regdef2 = {REGISTER reg;} 2 cost=(0,300) "(%[reg])"
|
regdef2 = {REGISTER reg;} 2 cost=(0,30) "(%[reg])"
|
||||||
regind2 = {REGISTER reg; STRING ind;} 2 cost=(2,600) "%[ind](%[reg])"
|
regind2 = {REGISTER reg; STRING ind;} 2 cost=(2,60) "%[ind](%[reg])"
|
||||||
reginddef2 = {REGISTER reg; STRING ind;} 2 cost=(2,1050) "*%[ind](%[reg])"
|
reginddef2 = {REGISTER reg; STRING ind;} 2 cost=(2,105) "*%[ind](%[reg])"
|
||||||
regconst2 = {REGISTER reg; STRING ind;} 2
|
regconst2 = {REGISTER reg; STRING ind;} 2
|
||||||
/********************************************************
|
/********************************************************
|
||||||
* This means : add "reg" and "ind" to get address. *
|
* This means : add "reg" and "ind" to get address. *
|
||||||
* Not really addressable on the PDP 11 *
|
* Not really addressable on the PDP 11 *
|
||||||
********************************************************/
|
********************************************************/
|
||||||
relative2 = {STRING ind;} 2 cost=(2,600) "%[ind]"
|
relative2 = {STRING ind;} 2 cost=(2,60) "%[ind]"
|
||||||
reldef2 = {STRING ind;} 2 cost=(2,1050) "*%[ind]"
|
reldef2 = {STRING ind;} 2 cost=(2,105) "*%[ind]"
|
||||||
regdef1 = {REGISTER reg;} 2 cost=(0,300) "(%[reg])"
|
regdef1 = {REGISTER reg;} 2 cost=(0,30) "(%[reg])"
|
||||||
regind1 = {REGISTER reg; STRING ind;} 2 cost=(2,600) "%[ind](%[reg])"
|
regind1 = {REGISTER reg; STRING ind;} 2 cost=(2,60) "%[ind](%[reg])"
|
||||||
reginddef1 = {REGISTER reg; STRING ind;} 2 cost=(2,1050) "*%[ind](%[reg])"
|
reginddef1 = {REGISTER reg; STRING ind;} 2 cost=(2,105) "*%[ind](%[reg])"
|
||||||
relative1 = {STRING ind;} 2 cost=(2,600) "%[ind]"
|
relative1 = {STRING ind;} 2 cost=(2,60) "%[ind]"
|
||||||
reldef1 = {STRING ind;} 2 cost=(2,1050) "*%[ind]"
|
reldef1 = {STRING ind;} 2 cost=(2,105) "*%[ind]"
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* fto* are floats converted to *, conversion is delayed to be combined *
|
* fto* are floats converted to *, conversion is delayed to be combined *
|
||||||
|
@ -133,12 +133,12 @@ ftolong = {REGISTER reg;} 4
|
||||||
* ...4 and ...8 are only addressable by the floating point processor. *
|
* ...4 and ...8 are only addressable by the floating point processor. *
|
||||||
************************************************************************/
|
************************************************************************/
|
||||||
|
|
||||||
regind4 = {REGISTER reg; STRING ind; } 4 cost=(2,3630) "%[ind](%[reg])"
|
regind4 = {REGISTER reg; STRING ind; } 4 cost=(2,363) "%[ind](%[reg])"
|
||||||
relative4 = {STRING ind; } 4 cost=(2,3630) "%[ind]"
|
relative4 = {STRING ind; } 4 cost=(2,363) "%[ind]"
|
||||||
regdef4 = {REGISTER reg;} 4 cost=(2,3240) "(%[reg])"
|
regdef4 = {REGISTER reg;} 4 cost=(2,324) "(%[reg])"
|
||||||
regdef8 = {REGISTER reg;} 8 cost=(2,5220) "(%[reg])"
|
regdef8 = {REGISTER reg;} 8 cost=(2,522) "(%[reg])"
|
||||||
relative8 = {STRING ind; } 8 cost=(2,5610) "%[ind]"
|
relative8 = {STRING ind; } 8 cost=(2,561) "%[ind]"
|
||||||
regind8 = {REGISTER reg; STRING ind;} 8 cost=(2,5610) "%[ind](%[reg])"
|
regind8 = {REGISTER reg; STRING ind;} 8 cost=(2,561) "%[ind](%[reg])"
|
||||||
|
|
||||||
TOKENEXPRESSIONS:
|
TOKENEXPRESSIONS:
|
||||||
SCR_REG = REG * SCRATCH
|
SCR_REG = REG * SCRATCH
|
||||||
|
@ -438,7 +438,7 @@ sti $1==4 | NC dadres2 FLT_REG |
|
||||||
... | SCR_REG STACK |
|
... | SCR_REG STACK |
|
||||||
"mov (sp)+,(%[1])+"
|
"mov (sp)+,(%[1])+"
|
||||||
"mov (sp)+,(%[1])"
|
"mov (sp)+,(%[1])"
|
||||||
erase(%[1]) | | | (4,2040)
|
erase(%[1]) | | | (4,204)
|
||||||
sti $1==8 | NC dadres2 DBL_REG |
|
sti $1==8 | NC dadres2 DBL_REG |
|
||||||
INDSTORE
|
INDSTORE
|
||||||
"movf %[2],*%[1]"
|
"movf %[2],*%[1]"
|
||||||
|
@ -483,13 +483,13 @@ sti $1==8 | NC dadres2 DBL_REG |
|
||||||
"mov (sp)+,(%[1])+"
|
"mov (sp)+,(%[1])+"
|
||||||
"mov (sp)+,(%[1])+"
|
"mov (sp)+,(%[1])+"
|
||||||
"mov (sp)+,(%[1])"
|
"mov (sp)+,(%[1])"
|
||||||
erase(%[1]) | | | (8,4080)
|
erase(%[1]) | | | (8,408)
|
||||||
sti | SCR_REG |
|
sti | SCR_REG |
|
||||||
remove(all)
|
remove(all)
|
||||||
allocate(REG={CONST2,$1/2})
|
allocate(REG={CONST2,$1/2})
|
||||||
"1:\tmov (sp)+,(%[1])+"
|
"1:\tmov (sp)+,(%[1])+"
|
||||||
"sob %[a],1b"
|
"sob %[a],1b"
|
||||||
erase(%[1]) erase(%[a]) | | | (8,1500+$1*825)
|
erase(%[1]) erase(%[a]) | | | (8,150+$1*82)
|
||||||
lal sti $2>2 && $2<=8 | NC xsource2 | | %[1] | stl $1 lal $1+2 sti $2-2 |
|
lal sti $2>2 && $2<=8 | NC xsource2 | | %[1] | stl $1 lal $1+2 sti $2-2 |
|
||||||
... | | | {ADDR_LOCAL,$1} | sti $2 |
|
... | | | {ADDR_LOCAL,$1} | sti $2 |
|
||||||
sts $1==2 | |
|
sts $1==2 | |
|
||||||
|
@ -557,15 +557,15 @@ adi $1==2 | NC SCR_REG CONST2 | | {regconst2,%[1],tostring(%[2.num])} | |
|
||||||
... | NC SCR_REG ADDR_EXTERNAL | | {regconst2,%[1],%[2.ind]} | |
|
... | NC SCR_REG ADDR_EXTERNAL | | {regconst2,%[1],%[2.ind]} | |
|
||||||
... | NC SCR_REG ADDR_LOCAL |
|
... | NC SCR_REG ADDR_LOCAL |
|
||||||
"add r5,%[1]" erase(%[1]) |
|
"add r5,%[1]" erase(%[1]) |
|
||||||
{regconst2,%[1],tostring(%[2.ind])} | | (2,450)
|
{regconst2,%[1],tostring(%[2.ind])} | | (2,45)
|
||||||
... | NC REG ADDR_LOCAL |
|
... | NC REG ADDR_LOCAL |
|
||||||
allocate(REG)
|
allocate(REG)
|
||||||
"mov r5,%[a]"
|
"mov r5,%[a]"
|
||||||
"add %[1],%[a]"
|
"add %[1],%[a]"
|
||||||
erase(%[a]) | {regconst2,%[a],tostring(%[2.ind])} | | (4,900)
|
erase(%[a]) | {regconst2,%[a],tostring(%[2.ind])} | | (4,90)
|
||||||
... | NC SCR_REG regconst2 |
|
... | NC SCR_REG regconst2 |
|
||||||
"add %[2.reg],%[1]" erase(%[1]) |
|
"add %[2.reg],%[1]" erase(%[1]) |
|
||||||
{regconst2,%[1],%[2.ind]} | | (2,450)
|
{regconst2,%[1],%[2.ind]} | | (2,45)
|
||||||
... | NC CONST2+ADDR_EXTERNAL+ADDR_LOCAL+regconst2 SCR_REG |
|
... | NC CONST2+ADDR_EXTERNAL+ADDR_LOCAL+regconst2 SCR_REG |
|
||||||
| %[1] %[2] | adi 2 |
|
| %[1] %[2] | adi 2 |
|
||||||
... | NC source2-REG CONST2+ADDR_EXTERNAL+ADDR_LOCAL |
|
... | NC source2-REG CONST2+ADDR_EXTERNAL+ADDR_LOCAL |
|
||||||
|
@ -583,24 +583,24 @@ adi $1==2 | NC SCR_REG CONST2 | | {regconst2,%[1],tostring(%[2.num])} | |
|
||||||
... | NC regconst2 ADDR_LOCAL |
|
... | NC regconst2 ADDR_LOCAL |
|
||||||
"add r5,%[1.reg]" erase(%[1.reg]) |
|
"add r5,%[1.reg]" erase(%[1.reg]) |
|
||||||
{regconst2,%[1.reg],
|
{regconst2,%[1.reg],
|
||||||
tostring(%[2.ind])+"+"+%[1.ind]} | | (2,450)
|
tostring(%[2.ind])+"+"+%[1.ind]} | | (2,45)
|
||||||
... | NC regconst2 regconst2 |
|
... | NC regconst2 regconst2 |
|
||||||
"add %[2.reg],%[1.reg]" erase(%[1.reg]) |
|
"add %[2.reg],%[1.reg]" erase(%[1.reg]) |
|
||||||
{regconst2,%[1.reg],%[2.ind]+"+"+%[1.ind]} | | (2,450)
|
{regconst2,%[1.reg],%[2.ind]+"+"+%[1.ind]} | | (2,45)
|
||||||
... | NC regconst2 noconst2 |
|
... | NC regconst2 noconst2 |
|
||||||
"add %[2],%[1.reg]" erase(%[1.reg]) | %[1] | | (2,450)+%[2]
|
"add %[2],%[1.reg]" erase(%[1.reg]) | %[1] | | (2,45)+%[2]
|
||||||
... | NC SCR_REG noconst2 |
|
... | NC SCR_REG noconst2 |
|
||||||
"add %[2],%[1]"
|
"add %[2],%[1]"
|
||||||
setcc(%[1]) erase(%[1]) | %[1] | | (2,450)+%[2]
|
setcc(%[1]) erase(%[1]) | %[1] | | (2,45)+%[2]
|
||||||
... | NC source2 regconst2 |
|
... | NC source2 regconst2 |
|
||||||
"add %[1],%[2.reg]"
|
"add %[1],%[2.reg]"
|
||||||
erase(%[2.reg]) | %[2] | | (2,450)+%[1]
|
erase(%[2.reg]) | %[2] | | (2,45)+%[1]
|
||||||
... | NC regconst2 source2 |
|
... | NC regconst2 source2 |
|
||||||
"add %[2],%[1.reg]"
|
"add %[2],%[1.reg]"
|
||||||
erase(%[1.reg]) | %[1] | | (2,450)+%[2]
|
erase(%[1.reg]) | %[1] | | (2,45)+%[2]
|
||||||
... | source2 SCR_REG |
|
... | source2 SCR_REG |
|
||||||
"add %[1],%[2]"
|
"add %[1],%[2]"
|
||||||
setcc(%[2]) erase(%[2]) | %[2] | | (2,450)+%[1]
|
setcc(%[2]) erase(%[2]) | %[2] | | (2,45)+%[1]
|
||||||
|
|
||||||
ldc adi $2==4 && highw(1)==0 | SCR_REG SCR_REG |
|
ldc adi $2==4 && highw(1)==0 | SCR_REG SCR_REG |
|
||||||
"add $$%(loww(1)%),%[2]"
|
"add $$%(loww(1)%),%[2]"
|
||||||
|
@ -616,25 +616,25 @@ adi $1==4 | SCR_REG SCR_REG source2 source2 |
|
||||||
"adc %[1]"
|
"adc %[1]"
|
||||||
"add %[3],%[1]"
|
"add %[3],%[1]"
|
||||||
setcc(%[1]) erase(%[1]) erase(%[2])
|
setcc(%[1]) erase(%[1]) erase(%[2])
|
||||||
| %[2] %[1] | | (6,1200)+%[4]+%[3]
|
| %[2] %[1] | | (6,120)+%[4]+%[3]
|
||||||
... | SCR_REG SCR_REG source2 STACK |
|
... | SCR_REG SCR_REG source2 STACK |
|
||||||
"add (sp)+,%[2]"
|
"add (sp)+,%[2]"
|
||||||
"adc %[1]"
|
"adc %[1]"
|
||||||
"add %[3],%[1]"
|
"add %[3],%[1]"
|
||||||
setcc(%[1]) erase(%[1]) erase(%[2])
|
setcc(%[1]) erase(%[1]) erase(%[2])
|
||||||
| %[2] %[1] | | (6,1900)+%[3]
|
| %[2] %[1] | | (6,190)+%[3]
|
||||||
... | SCR_REG SCR_REG STACK |
|
... | SCR_REG SCR_REG STACK |
|
||||||
"add (sp)+,%[1]"
|
"add (sp)+,%[1]"
|
||||||
"add (sp)+,%[2]"
|
"add (sp)+,%[2]"
|
||||||
"adc %[1]"
|
"adc %[1]"
|
||||||
setcc(%[1]) erase(%[1]) erase(%[2])
|
setcc(%[1]) erase(%[1]) erase(%[2])
|
||||||
| %[2] %[1] | | (6,2800)
|
| %[2] %[1] | | (6,280)
|
||||||
... | source2 source2 SCR_REG SCR_REG |
|
... | source2 source2 SCR_REG SCR_REG |
|
||||||
"add %[2],%[4]"
|
"add %[2],%[4]"
|
||||||
"adc %[3]"
|
"adc %[3]"
|
||||||
"add %[1],%[3]"
|
"add %[1],%[3]"
|
||||||
setcc(%[3]) erase(%[3]) erase(%[4])
|
setcc(%[3]) erase(%[3]) erase(%[4])
|
||||||
| %[4] %[3] | | (6,1200)+%[1]+%[2]
|
| %[4] %[3] | | (6,120)+%[1]+%[2]
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
adi !defined($1)| source2 |
|
adi !defined($1)| source2 |
|
||||||
remove(all)
|
remove(all)
|
||||||
|
@ -644,11 +644,11 @@ adi !defined($1)| source2 |
|
||||||
loc sbi $2==2 | | | | loc 0-$1 adi 2 |
|
loc sbi $2==2 | | | | loc 0-$1 adi 2 |
|
||||||
sbi $1==2 | source2 SCR_REG |
|
sbi $1==2 | source2 SCR_REG |
|
||||||
"sub %[1],%[2]"
|
"sub %[1],%[2]"
|
||||||
setcc(%[2]) erase(%[2]) | %[2] | | (2,450)+%[1]
|
setcc(%[2]) erase(%[2]) | %[2] | | (2,45)+%[1]
|
||||||
... | NC SCR_REG source2-REG |
|
... | NC SCR_REG source2-REG |
|
||||||
"sub %[2],%[1]"
|
"sub %[2],%[1]"
|
||||||
"neg %[1]"
|
"neg %[1]"
|
||||||
setcc(%[1]) erase(%[1]) | %[1] | | (4,750)+%[2]
|
setcc(%[1]) erase(%[1]) | %[1] | | (4,75)+%[2]
|
||||||
ldc sbi $2==4 && highw(1)==0 | SCR_REG SCR_REG |
|
ldc sbi $2==4 && highw(1)==0 | SCR_REG SCR_REG |
|
||||||
"sub $$%(loww(1)%),%[2]"
|
"sub $$%(loww(1)%),%[2]"
|
||||||
"sbc %[1]"
|
"sbc %[1]"
|
||||||
|
@ -663,11 +663,11 @@ sbi $1==4 | source2-REG source2-REG SCR_REG SCR_REG |
|
||||||
"sbc %[3]"
|
"sbc %[3]"
|
||||||
"sub %[1],%[3]"
|
"sub %[1],%[3]"
|
||||||
setcc(%[3]) erase(%[3]) erase(%[4])
|
setcc(%[3]) erase(%[3]) erase(%[4])
|
||||||
| %[4] %[3] | | (6,1200)+%[1]+%[2]
|
| %[4] %[3] | | (6,120)+%[1]+%[2]
|
||||||
... | source2 source2 STACK |
|
... | source2 source2 STACK |
|
||||||
"sub %[2],2(sp)"
|
"sub %[2],2(sp)"
|
||||||
"sbc (sp)"
|
"sbc (sp)"
|
||||||
"sub %[1],(sp)" | | | (10,2800)+%[1]+%[2]
|
"sub %[1],(sp)" | | | (10,280)+%[1]+%[2]
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
sbi !defined($1)| source2 |
|
sbi !defined($1)| source2 |
|
||||||
remove(all)
|
remove(all)
|
||||||
|
@ -676,10 +676,10 @@ sbi !defined($1)| source2 |
|
||||||
#endif
|
#endif
|
||||||
mli $1==2 | SCR_ODD_REG source2 |
|
mli $1==2 | SCR_ODD_REG source2 |
|
||||||
"mul %[2],%[1]"
|
"mul %[2],%[1]"
|
||||||
setcc(%[1]) erase(%[1]) | %[1] | |(2,3300)+%[2]
|
setcc(%[1]) erase(%[1]) | %[1] | |(2,330)+%[2]
|
||||||
... | source2 SCR_ODD_REG |
|
... | source2 SCR_ODD_REG |
|
||||||
"mul %[1],%[2]"
|
"mul %[1],%[2]"
|
||||||
setcc(%[2]) erase(%[2]) | %[2] | |(2,3300)+%[1]
|
setcc(%[2]) erase(%[2]) | %[2] | |(2,330)+%[1]
|
||||||
mli $1==4 | | remove(all)
|
mli $1==4 | | remove(all)
|
||||||
"jsr pc,mli4~"
|
"jsr pc,mli4~"
|
||||||
| r1 r0 | |
|
| r1 r0 | |
|
||||||
|
@ -699,7 +699,7 @@ dvi $1==2 | source2 source2 |
|
||||||
"mov %[1],-(sp)"
|
"mov %[1],-(sp)"
|
||||||
"mov %[2],r1"
|
"mov %[2],r1"
|
||||||
"sxt r0"
|
"sxt r0"
|
||||||
"div (sp)+,r0" | r0 | |(100,10000)
|
"div (sp)+,r0" | r0 | |(100,1000)
|
||||||
dvi $1==4 | | remove(all)
|
dvi $1==4 | | remove(all)
|
||||||
"jsr pc,dvi4~" | r1 r0 | |
|
"jsr pc,dvi4~" | r1 r0 | |
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
|
@ -718,7 +718,7 @@ rmi $1==2 | source2 source2 |
|
||||||
"mov %[1],-(sp)"
|
"mov %[1],-(sp)"
|
||||||
"mov %[2],r1"
|
"mov %[2],r1"
|
||||||
"sxt r0"
|
"sxt r0"
|
||||||
"div (sp)+,r0" | r1 | |(100,10000)
|
"div (sp)+,r0" | r1 | |(100,1000)
|
||||||
rmi $1==4 | | remove(all)
|
rmi $1==4 | | remove(all)
|
||||||
"jsr pc,rmi4~" | r1 r0 | |
|
"jsr pc,rmi4~" | r1 r0 | |
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
|
@ -729,13 +729,13 @@ rmi !defined($1)| source2 |
|
||||||
#endif
|
#endif
|
||||||
ngi $1==2 | SCR_REG |
|
ngi $1==2 | SCR_REG |
|
||||||
"neg %[1]"
|
"neg %[1]"
|
||||||
setcc(%[1]) erase(%[1]) | %[1] | | (2,750)
|
setcc(%[1]) erase(%[1]) | %[1] | | (2,75)
|
||||||
ngi $1==4 | SCR_REG SCR_REG |
|
ngi $1==4 | SCR_REG SCR_REG |
|
||||||
"neg %[1]"
|
"neg %[1]"
|
||||||
"neg %[2]"
|
"neg %[2]"
|
||||||
"sbc %[1]"
|
"sbc %[1]"
|
||||||
setcc(%[1]) erase(%[1]) erase(%[2])
|
setcc(%[1]) erase(%[1]) erase(%[2])
|
||||||
| %[2] %[1] | | (6,1800)
|
| %[2] %[1] | | (6,180)
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
ngi !defined($1)| source2 |
|
ngi !defined($1)| source2 |
|
||||||
remove(all)
|
remove(all)
|
||||||
|
@ -866,16 +866,16 @@ sru !defined($1)| source2 |
|
||||||
|
|
||||||
adf $1==4 | FLT_REG SCR_FLT_REG |
|
adf $1==4 | FLT_REG SCR_FLT_REG |
|
||||||
"addf %[1],%[2]"
|
"addf %[1],%[2]"
|
||||||
samecc erase(%[2]) | %[2] | | (2,5000)+%[1]
|
samecc erase(%[2]) | %[2] | | (2,500)+%[1]
|
||||||
... | SCR_FLT_REG FLT_REG |
|
... | SCR_FLT_REG FLT_REG |
|
||||||
"addf %[2],%[1]"
|
"addf %[2],%[1]"
|
||||||
samecc erase(%[1]) | %[1] | | (2,5000)+%[2]
|
samecc erase(%[1]) | %[1] | | (2,500)+%[2]
|
||||||
adf $1==8 | double8 SCR_DBL_REG |
|
adf $1==8 | double8 SCR_DBL_REG |
|
||||||
"addf %[1],%[2]"
|
"addf %[1],%[2]"
|
||||||
samecc erase(%[2]) | %[2] | | (2,6000)+%[1]
|
samecc erase(%[2]) | %[2] | | (2,600)+%[1]
|
||||||
... | SCR_DBL_REG double8 |
|
... | SCR_DBL_REG double8 |
|
||||||
"addf %[2],%[1]"
|
"addf %[2],%[1]"
|
||||||
samecc erase(%[1]) | %[1] | | (2,6000)+%[2]
|
samecc erase(%[1]) | %[1] | | (2,600)+%[2]
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
adf !defined($1)| source2 |
|
adf !defined($1)| source2 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
|
@ -884,10 +884,10 @@ adf !defined($1)| source2 |
|
||||||
#endif
|
#endif
|
||||||
sbf $1==4 | FLT_REG SCR_FLT_REG |
|
sbf $1==4 | FLT_REG SCR_FLT_REG |
|
||||||
"subf %[1],%[2]"
|
"subf %[1],%[2]"
|
||||||
samecc erase(%[2]) | %[2] | | (2,5000)+%[1]
|
samecc erase(%[2]) | %[2] | | (2,500)+%[1]
|
||||||
sbf $1==8 | double8 SCR_DBL_REG |
|
sbf $1==8 | double8 SCR_DBL_REG |
|
||||||
"subf %[1],%[2]"
|
"subf %[1],%[2]"
|
||||||
samecc erase(%[2]) | %[2] | | (2,6000)+%[1]
|
samecc erase(%[2]) | %[2] | | (2,600)+%[1]
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
sbf !defined($1)| source2 |
|
sbf !defined($1)| source2 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
|
@ -896,16 +896,16 @@ sbf !defined($1)| source2 |
|
||||||
#endif
|
#endif
|
||||||
mlf $1==4 | FLT_REG SCR_FLT_REG |
|
mlf $1==4 | FLT_REG SCR_FLT_REG |
|
||||||
"mulf %[1],%[2]"
|
"mulf %[1],%[2]"
|
||||||
samecc erase(%[2]) | %[2] | | (2,7000)+%[1]
|
samecc erase(%[2]) | %[2] | | (2,700)+%[1]
|
||||||
... | SCR_FLT_REG FLT_REG |
|
... | SCR_FLT_REG FLT_REG |
|
||||||
"mulf %[2],%[1]"
|
"mulf %[2],%[1]"
|
||||||
samecc erase(%[1]) | %[1] | | (2,7000)+%[2]
|
samecc erase(%[1]) | %[1] | | (2,700)+%[2]
|
||||||
mlf $1==8 | double8 SCR_DBL_REG |
|
mlf $1==8 | double8 SCR_DBL_REG |
|
||||||
"mulf %[1],%[2]"
|
"mulf %[1],%[2]"
|
||||||
samecc erase(%[2]) | %[2] | | (2,10000)+%[1]
|
samecc erase(%[2]) | %[2] | | (2,1000)+%[1]
|
||||||
... | SCR_DBL_REG double8 |
|
... | SCR_DBL_REG double8 |
|
||||||
"mulf %[2],%[1]"
|
"mulf %[2],%[1]"
|
||||||
samecc erase(%[1]) | %[1] | | (2,10000)+%[2]
|
samecc erase(%[1]) | %[1] | | (2,1000)+%[2]
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
mlf !defined($1)| source2 |
|
mlf !defined($1)| source2 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
|
@ -914,10 +914,10 @@ mlf !defined($1)| source2 |
|
||||||
#endif
|
#endif
|
||||||
dvf $1==4 | FLT_REG SCR_FLT_REG |
|
dvf $1==4 | FLT_REG SCR_FLT_REG |
|
||||||
"divf %[1],%[2]"
|
"divf %[1],%[2]"
|
||||||
samecc erase(%[2]) | %[2] | | (2,8000)+%[1]
|
samecc erase(%[2]) | %[2] | | (2,800)+%[1]
|
||||||
dvf $1==8 | double8 SCR_DBL_REG |
|
dvf $1==8 | double8 SCR_DBL_REG |
|
||||||
"divf %[1],%[2]"
|
"divf %[1],%[2]"
|
||||||
samecc erase(%[2]) | %[2] | | (2,12000)+%[1]
|
samecc erase(%[2]) | %[2] | | (2,1200)+%[1]
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
dvf !defined($1)| source2 |
|
dvf !defined($1)| source2 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
|
@ -926,10 +926,10 @@ dvf !defined($1)| source2 |
|
||||||
#endif
|
#endif
|
||||||
ngf $1==4 | SCR_FLT_REG |
|
ngf $1==4 | SCR_FLT_REG |
|
||||||
"negf %[1]"
|
"negf %[1]"
|
||||||
samecc erase(%[1]) | %[1] | |(2,2700)
|
samecc erase(%[1]) | %[1] | |(2,270)
|
||||||
ngf $1==8 | SCR_DBL_REG |
|
ngf $1==8 | SCR_DBL_REG |
|
||||||
"negf %[1]"
|
"negf %[1]"
|
||||||
samecc erase(%[1]) | %[1] | |(2,2700)
|
samecc erase(%[1]) | %[1] | |(2,270)
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
ngf !defined($1)| source2 |
|
ngf !defined($1)| source2 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
|
@ -940,12 +940,12 @@ fif $1==4 | longf4 FLT_REG |
|
||||||
allocate(FLT_REG_PAIR)
|
allocate(FLT_REG_PAIR)
|
||||||
move(%[1],%[a.1])
|
move(%[1],%[a.1])
|
||||||
"modf %[2],%[a]"
|
"modf %[2],%[a]"
|
||||||
samecc erase(%[a.1]) | %[a.1] %[a.2] | | (2,7500)+%[2]
|
samecc erase(%[a.1]) | %[a.1] %[a.2] | | (2,750)+%[2]
|
||||||
fif $1==8 | double8 double8 |
|
fif $1==8 | double8 double8 |
|
||||||
allocate(DBL_REG_PAIR)
|
allocate(DBL_REG_PAIR)
|
||||||
move(%[1],%[a.1])
|
move(%[1],%[a.1])
|
||||||
"modf %[2],%[a]"
|
"modf %[2],%[a]"
|
||||||
samecc erase(%[a.1]) | %[a.1] %[a.2] | | (2,15000)+%[2]
|
samecc erase(%[a.1]) | %[a.1] %[a.2] | | (2,1500)+%[2]
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
fif !defined($1)| source2 |
|
fif !defined($1)| source2 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
|
@ -957,13 +957,13 @@ fef $1==4 | FLT_REG |
|
||||||
"movei %[1],%[a]"
|
"movei %[1],%[a]"
|
||||||
"movie $$0,%[1]"
|
"movie $$0,%[1]"
|
||||||
samecc
|
samecc
|
||||||
erase(%[1]) |%[1] %[a] | | (4,5000)
|
erase(%[1]) |%[1] %[a] | | (4,500)
|
||||||
fef $1==8 | DBL_REG |
|
fef $1==8 | DBL_REG |
|
||||||
allocate(REG)
|
allocate(REG)
|
||||||
"movei %[1],%[a]"
|
"movei %[1],%[a]"
|
||||||
"movie $$0,%[1]"
|
"movie $$0,%[1]"
|
||||||
samecc
|
samecc
|
||||||
erase(%[1]) |%[1] %[a] | | (4,5000)
|
erase(%[1]) |%[1] %[a] | | (4,500)
|
||||||
#ifdef UNTESTED
|
#ifdef UNTESTED
|
||||||
fef !defined($1)| source2 |
|
fef !defined($1)| source2 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
|
@ -1037,7 +1037,7 @@ del | | remove(indordef)
|
||||||
setcc({LOCAL2,$1,2}) | | |
|
setcc({LOCAL2,$1,2}) | | |
|
||||||
dee | | remove(posextern)
|
dee | | remove(posextern)
|
||||||
"dec $1"
|
"dec $1"
|
||||||
setcc({relative2,$1}) | | | (4,900)
|
setcc({relative2,$1}) | | | (4,90)
|
||||||
|
|
||||||
#ifdef REGVARS
|
#ifdef REGVARS
|
||||||
lol loc sbi stl $1==$4 && $3==2 && inreg($1)==2 | |
|
lol loc sbi stl $1==$4 && $3==2 && inreg($1)==2 | |
|
||||||
|
@ -1341,19 +1341,19 @@ loc loe and ste $3==2 && $2==$4 | |
|
||||||
#ifdef REGVARS
|
#ifdef REGVARS
|
||||||
zrl inreg($1)==2| | remove(regvar($1))
|
zrl inreg($1)==2| | remove(regvar($1))
|
||||||
"clr %(regvar($1)%)"
|
"clr %(regvar($1)%)"
|
||||||
erase(regvar($1)) | | | (4,900)
|
erase(regvar($1)) | | | (4,90)
|
||||||
#endif
|
#endif
|
||||||
zrl | | remove(indordef)
|
zrl | | remove(indordef)
|
||||||
remove(locals, %[ind] <= $1 && %[ind]+%[size] > $1)
|
remove(locals, %[ind] <= $1 && %[ind]+%[size] > $1)
|
||||||
"clr $1(r5)"
|
"clr $1(r5)"
|
||||||
setcc({LOCAL2,$1,2}) | | | (4,900)
|
setcc({LOCAL2,$1,2}) | | | (4,90)
|
||||||
zre | | remove(posextern)
|
zre | | remove(posextern)
|
||||||
"clr $1"
|
"clr $1"
|
||||||
setcc({relative2,$1}) | | | (4,900)
|
setcc({relative2,$1}) | | | (4,90)
|
||||||
zrf $1==4 | | allocate(FLT_REG)
|
zrf $1==4 | | allocate(FLT_REG)
|
||||||
"clrf %[a]" | %[a] | | (2,2200)
|
"clrf %[a]" | %[a] | | (2,220)
|
||||||
zrf $1==8 | | allocate(DBL_REG)
|
zrf $1==8 | | allocate(DBL_REG)
|
||||||
"clrf %[a]" | %[a] | | (2,2400)
|
"clrf %[a]" | %[a] | | (2,240)
|
||||||
zrf !defined($1)| | | | zer |
|
zrf !defined($1)| | | | zer |
|
||||||
zrf defined($1) | | | | zer $1 |
|
zrf defined($1) | | | | zer $1 |
|
||||||
zer $1==2 | | | {CONST2, 0} | |
|
zer $1==2 | | | {CONST2, 0} | |
|
||||||
|
@ -1366,7 +1366,7 @@ zer defined($1) | | remove(all)
|
||||||
move({CONST2,$1/2},r0)
|
move({CONST2,$1/2},r0)
|
||||||
"1:\tclr -(sp)"
|
"1:\tclr -(sp)"
|
||||||
"sob r0,1b"
|
"sob r0,1b"
|
||||||
erase(r0) | | |(8,1500+$1*375)
|
erase(r0) | | |(8,150+$1*37)
|
||||||
zer !defined($1)| SCR_REG |
|
zer !defined($1)| SCR_REG |
|
||||||
remove(all)
|
remove(all)
|
||||||
"asr %[1]"
|
"asr %[1]"
|
||||||
|
@ -1498,16 +1498,16 @@ loc loc cff $1==8 && $2==4 | DBL_REG | | %[1.1] | |
|
||||||
and $1==2 | CONST2 SCR_REG |
|
and $1==2 | CONST2 SCR_REG |
|
||||||
"bic $$%(~%[1.num]%),%[2]"
|
"bic $$%(~%[1.num]%),%[2]"
|
||||||
setcc(%[2])
|
setcc(%[2])
|
||||||
erase(%[2]) | %[2] | | (4,750)
|
erase(%[2]) | %[2] | | (4,75)
|
||||||
... | SCR_REG CONST2 |
|
... | SCR_REG CONST2 |
|
||||||
"bic $$%(~%[2.num]%),%[1]"
|
"bic $$%(~%[2.num]%),%[1]"
|
||||||
setcc(%[1])
|
setcc(%[1])
|
||||||
erase(%[1]) | %[1] | | (4,750)
|
erase(%[1]) | %[1] | | (4,75)
|
||||||
... | SCR_REG SCR_REG |
|
... | SCR_REG SCR_REG |
|
||||||
"com %[1]"
|
"com %[1]"
|
||||||
"bic %[1],%[2]"
|
"bic %[1],%[2]"
|
||||||
setcc(%[2])
|
setcc(%[2])
|
||||||
erase(%[1]) erase(%[2]) | %[2] | | (4,600)
|
erase(%[1]) erase(%[2]) | %[2] | | (4,60)
|
||||||
ldc and $2==4 && highw(1)==0 | source2 SCR_REG |
|
ldc and $2==4 && highw(1)==0 | source2 SCR_REG |
|
||||||
"bic $$%(~loww(1)%),%[2]"
|
"bic $$%(~loww(1)%),%[2]"
|
||||||
erase(%[2]) | %[2] {CONST2, 0} | |
|
erase(%[2]) | %[2] {CONST2, 0} | |
|
||||||
|
@ -1530,11 +1530,11 @@ and !defined($1)| source2 |
|
||||||
ior $1==2 | SCR_REG source2 |
|
ior $1==2 | SCR_REG source2 |
|
||||||
"bis %[2],%[1]"
|
"bis %[2],%[1]"
|
||||||
setcc(%[1])
|
setcc(%[1])
|
||||||
erase(%[1]) | %[1] | | (2,450)+%[2]
|
erase(%[1]) | %[1] | | (2,45)+%[2]
|
||||||
... | source2 SCR_REG |
|
... | source2 SCR_REG |
|
||||||
"bis %[1],%[2]"
|
"bis %[1],%[2]"
|
||||||
setcc(%[2])
|
setcc(%[2])
|
||||||
erase(%[2]) | %[2] | | (2,450)+%[1]
|
erase(%[2]) | %[2] | | (2,45)+%[1]
|
||||||
ldc ior $2==4 && highw(1)==0 | source2 SCR_REG |
|
ldc ior $2==4 && highw(1)==0 | source2 SCR_REG |
|
||||||
"bis $$%(loww(1)%),%[2]"
|
"bis $$%(loww(1)%),%[2]"
|
||||||
erase(%[2]) | %[2] %[1] | |
|
erase(%[2]) | %[2] %[1] | |
|
||||||
|
@ -1564,7 +1564,7 @@ ior defined($1) | | remove(all)
|
||||||
"add sp,%[a]"
|
"add sp,%[a]"
|
||||||
"1:\tbis (sp)+,(%[a])+"
|
"1:\tbis (sp)+,(%[a])+"
|
||||||
"sob %[b],1b"
|
"sob %[b],1b"
|
||||||
erase(%[a]) erase(%[b]) | | | (12,2100+$1*975)
|
erase(%[a]) erase(%[b]) | | | (12,210+$1*97)
|
||||||
ior !defined($1)| SCR_REG |
|
ior !defined($1)| SCR_REG |
|
||||||
remove(all)
|
remove(all)
|
||||||
allocate(REG=%[1])
|
allocate(REG=%[1])
|
||||||
|
@ -1576,11 +1576,11 @@ ior !defined($1)| SCR_REG |
|
||||||
xor $1==2 | REG SCR_REG |
|
xor $1==2 | REG SCR_REG |
|
||||||
"xor %[1],%[2]"
|
"xor %[1],%[2]"
|
||||||
setcc(%[2])
|
setcc(%[2])
|
||||||
erase(%[2]) | %[2] | | (2,300)
|
erase(%[2]) | %[2] | | (2,30)
|
||||||
... | SCR_REG REG |
|
... | SCR_REG REG |
|
||||||
"xor %[2],%[1]"
|
"xor %[2],%[1]"
|
||||||
setcc(%[1])
|
setcc(%[1])
|
||||||
erase(%[1]) | %[1] | | (2,300)
|
erase(%[1]) | %[1] | | (2,30)
|
||||||
xor defined($1) | | remove(all)
|
xor defined($1) | | remove(all)
|
||||||
move({CONST2,$1},r0)
|
move({CONST2,$1},r0)
|
||||||
"jsr pc,xor~"
|
"jsr pc,xor~"
|
||||||
|
@ -1593,13 +1593,13 @@ xor !defined($1)| source2 |
|
||||||
com $1==2 | SCR_REG |
|
com $1==2 | SCR_REG |
|
||||||
"com %[1]"
|
"com %[1]"
|
||||||
setcc(%[1])
|
setcc(%[1])
|
||||||
erase(%[1]) | %[1] | | (2,300)
|
erase(%[1]) | %[1] | | (2,30)
|
||||||
com defined($1) | | remove(all)
|
com defined($1) | | remove(all)
|
||||||
allocate(REG={CONST2,$1/2},REG)
|
allocate(REG={CONST2,$1/2},REG)
|
||||||
"mov sp,%[b]"
|
"mov sp,%[b]"
|
||||||
"1:\tcom (%[b])+"
|
"1:\tcom (%[b])+"
|
||||||
"sob %[a],1b"
|
"sob %[a],1b"
|
||||||
erase(%[a]) | | | (10,1800+$1*825)
|
erase(%[a]) | | | (10,180+$1*82)
|
||||||
com !defined($1)| SCR_REG |
|
com !defined($1)| SCR_REG |
|
||||||
remove(all)
|
remove(all)
|
||||||
allocate(REG)
|
allocate(REG)
|
||||||
|
@ -1650,7 +1650,7 @@ ror !defined($1)| source2 |
|
||||||
com and $1==2 && $2==2 | source2 SCR_REG |
|
com and $1==2 && $2==2 | source2 SCR_REG |
|
||||||
"bic %[1],%[2]"
|
"bic %[1],%[2]"
|
||||||
setcc(%[2])
|
setcc(%[2])
|
||||||
erase(%[2]) | %[2] | | (2,450)+%[1]
|
erase(%[2]) | %[2] | | (2,45)+%[1]
|
||||||
com and $1==$2 | | remove(all)
|
com and $1==$2 | | remove(all)
|
||||||
allocate(REG={CONST2,$1},REG)
|
allocate(REG={CONST2,$1},REG)
|
||||||
"mov sp,%[b]"
|
"mov sp,%[b]"
|
||||||
|
@ -1658,7 +1658,7 @@ com and $1==$2 | | remove(all)
|
||||||
"asr %[a]"
|
"asr %[a]"
|
||||||
"1:\tbic (sp)+,(%[b])+"
|
"1:\tbic (sp)+,(%[b])+"
|
||||||
"sob %[a],1b"
|
"sob %[a],1b"
|
||||||
erase(%[a]) | | | (12,2100+$1*975)
|
erase(%[a]) | | | (12,210+$1*97)
|
||||||
|
|
||||||
/********************************
|
/********************************
|
||||||
* Group 10 : Set instructions *
|
* Group 10 : Set instructions *
|
||||||
|
@ -2730,18 +2730,18 @@ lol lal sti $1==$2 && $3==1| | | | | /* throw away funny C-proc-prolog */
|
||||||
|
|
||||||
| regconst2 | allocate(%[1],REG=%[1.reg])
|
| regconst2 | allocate(%[1],REG=%[1.reg])
|
||||||
"add $$%[1.ind],%[a]"
|
"add $$%[1.ind],%[a]"
|
||||||
setcc(%[a]) | %[a] | |(6,1050)
|
setcc(%[a]) | %[a] | |(6,105)
|
||||||
| ADDR_LOCAL | allocate(REG)
|
| ADDR_LOCAL | allocate(REG)
|
||||||
"mov r5,%[a]"
|
"mov r5,%[a]"
|
||||||
"add $$%[1.ind],%[a]"
|
"add $$%[1.ind],%[a]"
|
||||||
setcc(%[a]) | %[a] | |(6,1050)
|
setcc(%[a]) | %[a] | |(6,105)
|
||||||
| REG | | {regconst2, %[1], "0"} | | (2,600)
|
| REG | | {regconst2, %[1], "0"} | | (2,60)
|
||||||
| xsource2 | allocate(%[1], REG=%[1]) | %[a] | |
|
| xsource2 | allocate(%[1], REG=%[1]) | %[a] | |
|
||||||
| xsource2 | allocate(%[1], REG=%[1]) | {regconst2, %[a], "0"} | |
|
| xsource2 | allocate(%[1], REG=%[1]) | {regconst2, %[a], "0"} | |
|
||||||
| longf4 | allocate(FLT_REG)
|
| longf4 | allocate(FLT_REG)
|
||||||
move( %[1],%[a]) | %[a] | | (20,20000) + %[1]
|
move( %[1],%[a]) | %[a] | | (20,2000) + %[1]
|
||||||
| double8 | allocate(DBL_REG)
|
| double8 | allocate(DBL_REG)
|
||||||
move(%[1],%[a]) | %[a] | | (20,30000) + %[1]
|
move(%[1],%[a]) | %[a] | | (20,3000) + %[1]
|
||||||
|
|
||||||
/********************************
|
/********************************
|
||||||
* From source1 to source2 *
|
* From source1 to source2 *
|
||||||
|
@ -2749,7 +2749,7 @@ lol lal sti $1==$2 && $3==1| | | | | /* throw away funny C-proc-prolog */
|
||||||
|
|
||||||
| source1 | allocate(REG={CONST2,0})
|
| source1 | allocate(REG={CONST2,0})
|
||||||
"bisb %[1],%[a]"
|
"bisb %[1],%[a]"
|
||||||
erase(%[a]) setcc(%[a]) | %[a] | | (6,1050)+%[1]
|
erase(%[a]) setcc(%[a]) | %[a] | | (6,105)+%[1]
|
||||||
|
|
||||||
/********************************
|
/********************************
|
||||||
* From long4 to source2 *
|
* From long4 to source2 *
|
||||||
|
@ -2777,80 +2777,80 @@ lol lal sti $1==$2 && $3==1| | | | | /* throw away funny C-proc-prolog */
|
||||||
|
|
||||||
| STACK | allocate(REG)
|
| STACK | allocate(REG)
|
||||||
"mov (sp)+,%[a]"
|
"mov (sp)+,%[a]"
|
||||||
setcc(%[a]) | %[a] | | (2,750)
|
setcc(%[a]) | %[a] | | (2,75)
|
||||||
| STACK | allocate(REG)
|
| STACK | allocate(REG)
|
||||||
"mov (sp)+,%[a]"
|
"mov (sp)+,%[a]"
|
||||||
setcc(%[a]) | {regconst2, %[a], "0"} | | (2,750)
|
setcc(%[a]) | {regconst2, %[a], "0"} | | (2,75)
|
||||||
| STACK | allocate(FLT_REG)
|
| STACK | allocate(FLT_REG)
|
||||||
"movof (sp)+,%[a]"
|
"movof (sp)+,%[a]"
|
||||||
samecc | %[a] | | (20,47400) /* /10 */
|
samecc | %[a] | | (20,4740) /* /10 */
|
||||||
| STACK | allocate(DBL_REG)
|
| STACK | allocate(DBL_REG)
|
||||||
"movf (sp)+,%[a]"
|
"movf (sp)+,%[a]"
|
||||||
samecc | %[a] | | (20,69200) /* /10 */
|
samecc | %[a] | | (20,6920) /* /10 */
|
||||||
| STACK | allocate(REG_PAIR)
|
| STACK | allocate(REG_PAIR)
|
||||||
"mov (sp)+,%[a.1]"
|
"mov (sp)+,%[a.1]"
|
||||||
"mov (sp)+,%[a.2]"
|
"mov (sp)+,%[a.2]"
|
||||||
setcc(%[a.2]) | %[a] | | (4,1500)
|
setcc(%[a.2]) | %[a] | | (4,150)
|
||||||
|
|
||||||
MOVES:
|
MOVES:
|
||||||
(CONST2 %[num] == 0, source2, "clr %[2]" setcc(%[2]),(2,300))
|
(CONST2 %[num] == 0, source2, "clr %[2]" setcc(%[2]),(2,30))
|
||||||
(source2, source2, "mov %[1],%[2]" setcc(%[2]),(2,300)+%[1]+%[2])
|
(source2, source2, "mov %[1],%[2]" setcc(%[2]),(2,30)+%[1]+%[2])
|
||||||
(FLT_REG, longf4-FLT_REG,"movfo %[1],%[2]" samecc, (2,880) + %[2])
|
(FLT_REG, longf4-FLT_REG,"movfo %[1],%[2]" samecc, (2,88) + %[2])
|
||||||
(longf4-FLT_REG,FLT_REG, "movof %[1],%[2]" samecc, (2,1500) + %[2])
|
(longf4-FLT_REG,FLT_REG, "movof %[1],%[2]" samecc, (2,150) + %[2])
|
||||||
(FLT_REG, FLT_REG, "movf %[1],%[2]" samecc,(2,880))
|
(FLT_REG, FLT_REG, "movf %[1],%[2]" samecc,(2,88))
|
||||||
(DBL_REG,double8, "movf %[1],%[2]" samecc,(2,880) + %[2])
|
(DBL_REG,double8, "movf %[1],%[2]" samecc,(2,88) + %[2])
|
||||||
(double8,DBL_REG, "movf %[1],%[2]" samecc,(2,1700) + %[1])
|
(double8,DBL_REG, "movf %[1],%[2]" samecc,(2,170) + %[1])
|
||||||
(CONST2 %[num] == 0,source1, "clrb %[2]" setcc(%[2]),(2,450)+%[2])
|
(CONST2 %[num] == 0,source1, "clrb %[2]" setcc(%[2]),(2,45)+%[2])
|
||||||
(source1or2,source1, "movb %[1],%[2]" setcc(%[2]),(2,300)+%[1]+%[2])
|
(source1or2,source1, "movb %[1],%[2]" setcc(%[2]),(2,30)+%[1]+%[2])
|
||||||
(ftoint,source2, "movfi %[1.reg],%[2]" samecc)
|
(ftoint,source2, "movfi %[1.reg],%[2]" samecc)
|
||||||
|
|
||||||
TESTS:
|
TESTS:
|
||||||
(source2, "tst %[1]" ,(2,300) + %[1])
|
(source2, "tst %[1]" ,(2,30) + %[1])
|
||||||
(source1, "tstb %[1]",(2,400) + %[1])
|
(source1, "tstb %[1]",(2,40) + %[1])
|
||||||
(FLT_REG+DBL_REG, "tstf %[1]\ncfcc" ,(4,2600))
|
(FLT_REG+DBL_REG, "tstf %[1]\ncfcc" ,(4,260))
|
||||||
/* (DBL_REG, "tstf %[1]\ncfcc" ,(4,2600)) */
|
/* (DBL_REG, "tstf %[1]\ncfcc" ,(4,260)) */
|
||||||
|
|
||||||
STACKS:
|
STACKS:
|
||||||
( CONST2 %[num]==0 ,, "clr -(sp)" )
|
( CONST2 %[num]==0 ,, "clr -(sp)" )
|
||||||
( source2 ,, "mov %[1],-(sp)" setcc(%[1]), (2,900)+%[1])
|
( source2 ,, "mov %[1],-(sp)" setcc(%[1]), (2,90)+%[1])
|
||||||
( regconst2 ,, "mov %[1.reg],-(sp)\nadd $$%[1.ind],(sp)" , (6,2250))
|
( regconst2 ,, "mov %[1.reg],-(sp)\nadd $$%[1.ind],(sp)" , (6,225))
|
||||||
( ADDR_LOCAL,, "mov r5,-(sp)" "add $$%[1.ind],(sp)", (6,2250))
|
( ADDR_LOCAL,, "mov r5,-(sp)" "add $$%[1.ind],(sp)", (6,225))
|
||||||
( DBL_REG ,, "movf %[1],-(sp)" samecc , (2,6100))
|
( DBL_REG ,, "movf %[1],-(sp)" samecc , (2,610))
|
||||||
( FLT_REG ,, "movfo %[1],-(sp)" samecc , (2,4120))
|
( FLT_REG ,, "movfo %[1],-(sp)" samecc , (2,412))
|
||||||
( REG_PAIR ,, "mov %[1.2],-(sp)" "mov %[1.1],-(sp)" , (4,1800))
|
( REG_PAIR ,, "mov %[1.2],-(sp)" "mov %[1.1],-(sp)" , (4,180))
|
||||||
( regind4 ,, "mov 2+%[1.ind](%[1.reg]),-(sp)"
|
( regind4 ,, "mov 2+%[1.ind](%[1.reg]),-(sp)"
|
||||||
"mov %[1.ind](%[1.reg]),-(sp)" , (8,3000))
|
"mov %[1.ind](%[1.reg]),-(sp)" , (8,300))
|
||||||
( relative4 ,, "mov 2+%[1.ind],-(sp)"
|
( relative4 ,, "mov 2+%[1.ind],-(sp)"
|
||||||
"mov %[1.ind],-(sp)" , (8,3000))
|
"mov %[1.ind],-(sp)" , (8,300))
|
||||||
( regdef4 ,, "mov 2(%[1.reg]),-(sp)"
|
( regdef4 ,, "mov 2(%[1.reg]),-(sp)"
|
||||||
"mov (%[1.reg]),-(sp)" , (6,2700))
|
"mov (%[1.reg]),-(sp)" , (6,270))
|
||||||
( regind8 ,REG, move(%[1.reg],%[a])
|
( regind8 ,REG, move(%[1.reg],%[a])
|
||||||
"add $$%(8%)+%[1.ind],%[a]"
|
"add $$%(8%)+%[1.ind],%[a]"
|
||||||
"mov -(%[a]),-(sp)"
|
"mov -(%[a]),-(sp)"
|
||||||
"mov -(%[a]),-(sp)"
|
"mov -(%[a]),-(sp)"
|
||||||
"mov -(%[a]),-(sp)"
|
"mov -(%[a]),-(sp)"
|
||||||
"mov -(%[a]),-(sp)"
|
"mov -(%[a]),-(sp)"
|
||||||
erase(%[a]) , (14,6000))
|
erase(%[a]) , (14,600))
|
||||||
( regind8 ,, "mov 6+%[1.ind](%[1.reg]),-(sp)"
|
( regind8 ,, "mov 6+%[1.ind](%[1.reg]),-(sp)"
|
||||||
"mov 4+%[1.ind](%[1.reg]),-(sp)"
|
"mov 4+%[1.ind](%[1.reg]),-(sp)"
|
||||||
"mov 2+%[1.ind](%[1.reg]),-(sp)"
|
"mov 2+%[1.ind](%[1.reg]),-(sp)"
|
||||||
"mov %[1.ind](%[1.reg]),-(sp)" , (16,6000))
|
"mov %[1.ind](%[1.reg]),-(sp)" , (16,600))
|
||||||
( relative8 ,REG,"mov $$%(8%)+%[1.ind],%[a]"
|
( relative8 ,REG,"mov $$%(8%)+%[1.ind],%[a]"
|
||||||
"mov -(%[a]),-(sp)"
|
"mov -(%[a]),-(sp)"
|
||||||
"mov -(%[a]),-(sp)"
|
"mov -(%[a]),-(sp)"
|
||||||
"mov -(%[a]),-(sp)"
|
"mov -(%[a]),-(sp)"
|
||||||
"mov -(%[a]),-(sp)" , (12,5000))
|
"mov -(%[a]),-(sp)" , (12,500))
|
||||||
( relative8 ,, "mov 6+%[1.ind],-(sp)"
|
( relative8 ,, "mov 6+%[1.ind],-(sp)"
|
||||||
"mov 4+%[1.ind],-(sp)"
|
"mov 4+%[1.ind],-(sp)"
|
||||||
"mov 2+%[1.ind],-(sp)"
|
"mov 2+%[1.ind],-(sp)"
|
||||||
"mov %[1.ind],-(sp)" , (16,6000))
|
"mov %[1.ind],-(sp)" , (16,600))
|
||||||
( regdef8 ,, "mov 6(%[1.reg]),-(sp)"
|
( regdef8 ,, "mov 6(%[1.reg]),-(sp)"
|
||||||
"mov 4(%[1.reg]),-(sp)"
|
"mov 4(%[1.reg]),-(sp)"
|
||||||
"mov 2(%[1.reg]),-(sp)"
|
"mov 2(%[1.reg]),-(sp)"
|
||||||
"mov (%[1.reg]),-(sp)" , (14,5700))
|
"mov (%[1.reg]),-(sp)" , (14,570))
|
||||||
( LOCAL4 ,, "mov 2+%[1.ind](r5),-(sp)"
|
( LOCAL4 ,, "mov 2+%[1.ind](r5),-(sp)"
|
||||||
"mov %[1.ind](r5),-(sp)" , (8,3000))
|
"mov %[1.ind](r5),-(sp)" , (8,300))
|
||||||
( source1 ,, "clr -(sp)"
|
( source1 ,, "clr -(sp)"
|
||||||
"movb %[1],(sp)" , (4,1800)+%[1])
|
"movb %[1],(sp)" , (4,180)+%[1])
|
||||||
( ftoint ,, "movfi %[1.reg],-(sp)" )
|
( ftoint ,, "movfi %[1.reg],-(sp)" )
|
||||||
( ftolong ,, "setl\nmovfi %[1.reg],-(sp)\nseti" )
|
( ftolong ,, "setl\nmovfi %[1.reg],-(sp)\nseti" )
|
||||||
|
|
Loading…
Add table
Reference in a new issue