Some improvements
This commit is contained in:
parent
9d2bfee634
commit
876026bedf
1 changed files with 191 additions and 221 deletions
|
@ -135,6 +135,14 @@ ABS4 = {STRING addr;} 4 cost=(3,7) "%[addr]"
|
|||
IMMEDIATE4 = {INT cc;} 4 cost=(4,4) "#%[cc]"
|
||||
DOUBLE = {STRING cc;} 4 cost=(4,4) "#%[cc]"
|
||||
DOUBLEZERO = { } 4
|
||||
EXTENDED4 = {REGISTER reg;} 4 cost=(0,0) "%[reg]"
|
||||
|
||||
REGINC1 = {REGISTER reg;} 2 cost=(0,3) "(%[reg])+"
|
||||
REGINC2 = {REGISTER reg;} 2 cost=(0,3) "(%[reg])+"
|
||||
REGINC4 = {REGISTER reg;} 4 cost=(0,3) "(%[reg])+"
|
||||
REGDEC1 = {REGISTER reg;} 2 cost=(0,3) "-(%[reg])"
|
||||
REGDEC2 = {REGISTER reg;} 2 cost=(0,3) "-(%[reg])"
|
||||
REGDEC4 = {REGISTER reg;} 4 cost=(0,3) "-(%[reg])"
|
||||
|
||||
|
||||
|
||||
|
@ -144,12 +152,16 @@ DOUBLEZERO = { } 4
|
|||
*************************************/
|
||||
|
||||
TOKENEXPRESSIONS:
|
||||
REGCH1 = REGINC1 + REGDEC1
|
||||
REGCH2 = REGINC2 + REGDEC2
|
||||
REGCH4 = REGINC4 + REGDEC4
|
||||
REGCH = REGCH1 + REGCH2 + REGCH4
|
||||
DATA = DATAREG + IADDREG + DISPL + INDEXED +
|
||||
ABS + IMMEDIATE
|
||||
ABS + IMMEDIATE + REGCH2
|
||||
MEMORY = DATA - DATAREG
|
||||
CONTROL = MEMORY - IMMEDIATE
|
||||
ALTERABLE = DATAREG + IADDREG + DISPL +
|
||||
INDEXED + ABS
|
||||
INDEXED + ABS + REGCH2
|
||||
ANY = DATA + MEMORY + CONTROL + ALTERABLE
|
||||
DATA_ALT = DATA * ALTERABLE
|
||||
ALT_MEM = ALTERABLE * MEMORY
|
||||
|
@ -158,27 +170,27 @@ DATASCR = DATAREG * SCRATCH
|
|||
ADDSCR = ADDREG * SCRATCH
|
||||
MEM_ALL = ALL - DATAREG - DATAREG4 - ADDREG - IMMEDIATE - IMMEDIATE4
|
||||
- LOCAL_ADDR -REGOFF_ADDR - EXTERNAL_ADDR - DOUBLE - DOUBLEZERO
|
||||
ALL_ACCESSIBLE = IADDREG + IADDREG4 + IADDREG1 + INDEXED + INDEXED4
|
||||
ALL_ACCESSIBLE = IADDREG + IADDREG4 + IADDREG1 + INDEXED + INDEXED4 + REGCH
|
||||
|
||||
ANY1 = DISPL1 + ABS1 + IADDREG1
|
||||
ANY1 = DISPL1 + ABS1 + IADDREG1 + REGCH1 + IMMEDIATE
|
||||
DATA_ALT1 = ANY1
|
||||
DATA_ALT_1OR2 = DATA_ALT + DATA_ALT1
|
||||
|
||||
|
||||
REG4 = DATAREG4 + ADDREG
|
||||
REG4 = DATAREG4 + ADDREG + EXTENDED4
|
||||
DATA4 = DATAREG4 + IADDREG4 + DISPL4 + INDEXED4 +
|
||||
ABS4 + IMMEDIATE4 + DOUBLE
|
||||
ABS4 + IMMEDIATE4 + DOUBLE + REGCH4 + EXTENDED4
|
||||
MEMORY4 = DATA4 - DATAREG4
|
||||
CONTROL4 = MEMORY4 - IMMEDIATE4 - DOUBLE
|
||||
ALTERABLE4 = DATAREG4 + ADDREG + IADDREG4 + DISPL4 +
|
||||
INDEXED4 + ABS4
|
||||
INDEXED4 + ABS4 + REGCH4 + EXTENDED4
|
||||
ANY4 = DATA4 + MEMORY4 + CONTROL4 + ALTERABLE4 + LOCALBASE +
|
||||
EXTERNAL_ADDR
|
||||
DATA_ALT4 = DATA4 * ALTERABLE4
|
||||
ALT_MEM4 = ALTERABLE4 * MEMORY4
|
||||
|
||||
DATASCR4 = DATAREG4 * SCRATCH
|
||||
|
||||
NO_ADDREG = EXTERNAL_ADDR + ABS4 + IMMEDIATE4 + EXTENDED4 + DATAREG4
|
||||
|
||||
|
||||
|
||||
|
@ -199,7 +211,8 @@ lol inreg($1)==2 | | | regvar($1) | |
|
|||
#endif
|
||||
lol | | | {DISPL,LB,$1} | |
|
||||
#ifdef REGVARS
|
||||
ldl inreg($1)==2 | | | regvar($1) | |
|
||||
ldl inreg($1)==2 | | remove(REGCH, %[reg] == regvar($1))
|
||||
| regvar($1) | |
|
||||
#endif
|
||||
ldl | | | {DISPL4,LB,$1} | |
|
||||
loe | | | {ABS,$1} | |
|
||||
|
@ -390,7 +403,7 @@ sti $1 == 1
|
|||
remove(MEM_ALL)
|
||||
move({IMMEDIATE,(%[2.cc]-((%[2.cc]>>8)<<8)+128)%256-128},
|
||||
{IADDREG1,%[1]}) | | |
|
||||
... | ADDREG ANY1 |
|
||||
... | ADDREG ANY1+DATAREG |
|
||||
remove(MEM_ALL)
|
||||
move(%[2],{IADDREG1,%[1]}) | | |
|
||||
... | nocoercions: LOCAL_ADDR DATAREG |
|
||||
|
@ -413,7 +426,7 @@ sti $1 == 1
|
|||
remove(MEM_ALL)
|
||||
move({IMMEDIATE,(%[2.cc]-((%[2.cc]>>8)<<8)+128)%256-128},
|
||||
{DISPL1,LB,%[1.off]}) | | |
|
||||
... | nocoercions: LOCAL_ADDR ANY1 |
|
||||
... | nocoercions: LOCAL_ADDR ANY1+DATAREG |
|
||||
remove(MEM_ALL)
|
||||
move(%[2],{DISPL1,LB,%[1.off]}) | | |
|
||||
... | nocoercions: REGOFF_ADDR DATAREG |
|
||||
|
@ -436,7 +449,7 @@ sti $1 == 1
|
|||
remove(MEM_ALL)
|
||||
move({IMMEDIATE,(%[2.cc]-((%[2.cc]>>8)<<8)+128)%256-128},
|
||||
{DISPL1,%[1.reg],%[1.off]}) | | |
|
||||
... | nocoercions: REGOFF_ADDR ANY1 |
|
||||
... | nocoercions: REGOFF_ADDR ANY1+DATAREG |
|
||||
remove(MEM_ALL)
|
||||
move(%[2],{DISPL1,%[1.reg],%[1.off]}) | | |
|
||||
... | nocoercions: EXTERNAL_ADDR DATAREG |
|
||||
|
@ -459,7 +472,7 @@ sti $1 == 1
|
|||
remove(MEM_ALL)
|
||||
move({IMMEDIATE,(%[2.cc]-((%[2.cc]>>8)<<8)+128)%256-128},
|
||||
{ABS1,%[1.off]}) | | |
|
||||
... | nocoercions: EXTERNAL_ADDR ANY1 |
|
||||
... | nocoercions: EXTERNAL_ADDR ANY1+DATAREG |
|
||||
remove(MEM_ALL)
|
||||
move(%[2],{ABS1,%[1.off]}) | | |
|
||||
sti $1 == 2 | ADDREG ANY | remove(MEM_ALL)
|
||||
|
@ -516,19 +529,51 @@ sdf | ADDREG ANY4 | remove(MEM_ALL)
|
|||
*/
|
||||
|
||||
ldl ldl adp sdl loi $1==$2 && $2==$4 && inreg($1)==2 && $3==1 && $5==1 | |
|
||||
allocate(DATAREG={IMMEDIATE,0})
|
||||
remove(regvar($1))
|
||||
"move.b (%(regvar($1)%))+,%[a]" | %[a] | |
|
||||
| { REGINC1, regvar($1)} | |
|
||||
ldl ldl adp sdl loi $1==$2 && $2==$4 && inreg($1)==2 && $3==2 && $5==2 | |
|
||||
allocate(DATAREG)
|
||||
remove(regvar($1))
|
||||
"move.w (%(regvar($1)%))+,%[a]" | %[a] | |
|
||||
ldl ldl adp sdl sti $1==$2 && $2==$4 && inreg($1)==2 && $3==1 && $5==1 | DATAREG |
|
||||
| { REGINC2, regvar($1)} | |
|
||||
ldl ldl adp sdl loi $1==$2 && $2==$4 && inreg($1)==2 && $3==4 && $5==4 | |
|
||||
remove(regvar($1))
|
||||
| { REGINC4, regvar($1)} | |
|
||||
ldl adp sdl ldl loi $1==$3 && $1==$4 && $2==(0-1) && inreg($1)==2 && $5==1
|
||||
| | remove(regvar($1))
|
||||
| {REGDEC1,regvar($1)} | |
|
||||
ldl adp sdl ldl loi $1==$4 && $2==(0-2) && inreg($1)==2 && $3==$4 && $5==2
|
||||
| | remove(regvar($1))
|
||||
| {REGDEC2,regvar($1)} | |
|
||||
ldl adp sdl ldl loi $1==$4 && $2==(0-4) && inreg($1)==2 && $3==$4 && $5==4
|
||||
| | remove(regvar($1))
|
||||
| {REGDEC4,regvar($1)} | |
|
||||
ldl sti ldl adp sdl $1==$3 && $3==$5 && inreg($1)==2 && $2==1 && $4==1 | ANY1+DATAREG |
|
||||
remove(regvar($1))
|
||||
remove(MEM_ALL)
|
||||
"move.b %[1],(%(regvar($1)%))+" | | |
|
||||
ldl ldl adp sdl sti $1==$2 && $2==$4 && inreg($1)==2 && $3==2 && $5==2 | ANY |
|
||||
ldl sti ldl adp sdl $1==$3 && $3==$5 && inreg($1)==2 && $2==2 && $4==2 | ANY |
|
||||
remove(regvar($1))
|
||||
remove(MEM_ALL)
|
||||
"move.w %[1],(%(regvar($1)%))+" | | |
|
||||
ldl sti ldl adp sdl $1==$3 && $3==$5 && inreg($1)==2 && $2==4 && $4==4 | ANY4 |
|
||||
remove(regvar($1))
|
||||
remove(MEM_ALL)
|
||||
"move.l %[1],(%(regvar($1)%))+" | | |
|
||||
ldl adp sdl ldl sti $1==$4 && inreg($1)==2 && $2==(0-1) && $5==1 && $3==$4
|
||||
| ANY1+DATAREG |
|
||||
remove(regvar($1))
|
||||
remove(MEM_ALL)
|
||||
"move.b %[1],-(%(regvar($1)%))" | | |
|
||||
ldl adp sdl ldl sti $1==$4 && inreg($1)==2 && $2==(0-2) && $5==2 && $3==$4
|
||||
| ANY |
|
||||
remove(regvar($1))
|
||||
remove(MEM_ALL)
|
||||
"move.w %[1],-(%(regvar($1)%))" | | |
|
||||
ldl adp sdl ldl sti $1==$4 && inreg($1)==2 && $2==(0-4) && $5==4 && $3==$4
|
||||
| ANY4 |
|
||||
remove(regvar($1))
|
||||
remove(MEM_ALL)
|
||||
"move.l %[1],-(%(regvar($1)%))" | | |
|
||||
|
||||
ldl ldl adp sdl $1==$2 && $2==$4 && inreg($1)==2 | |
|
||||
allocate(ADDREG=regvar($1)) | %[a]
|
||||
| ldl $2 adp $3 sdl $2 |
|
||||
|
@ -555,21 +600,14 @@ lol adi stl $1 == $3 && $2 == 2 && inreg($1)==2 | ANY |
|
|||
remove(regvar($1))
|
||||
"add.w %[1],%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
loc lil adi sil $2 == $4 && $3 == 2 && inreg($2)==2 | |
|
||||
lil adi sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"add.w #$1,(%(regvar($2)%))" | | |
|
||||
lil adi sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG |
|
||||
remove(ALL)
|
||||
"add.w %[1],(%(regvar($1)%))" | | |
|
||||
ldl ldc adi sdl $1 == $4 && $3 == 4 && inreg($1)==2 | |
|
||||
remove(regvar($1))
|
||||
"add.l #$2,%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
ldc ldl adi sdl $2 == $4 && $3 == 4 && inreg($2)==2 | |
|
||||
remove(regvar($2))
|
||||
"add.l #$1,%(regvar($2)%)"
|
||||
erase(regvar($2)) | | |
|
||||
ldl adi sdl $1 == $3 && $2 == 4 && inreg($1)==2 | DATAREG4 |
|
||||
ldl adi sdl $1 == $3 && $2 == 4 && inreg($1)==2 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(regvar($1))
|
||||
"add.l %[1],%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
|
@ -615,21 +653,14 @@ lol adu stl $1 == $3 && $2 == 2 && inreg($1)==2 | ANY |
|
|||
remove(regvar($1))
|
||||
"add.w %[1],%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
loc lil adu sil $2 == $4 && $3 == 2 && inreg($2)==2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #$1,(%(regvar($2)%))" | | |
|
||||
lil adu sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG |
|
||||
lil adu sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"add.w %[1],(%(regvar($1)%))" | | |
|
||||
ldl ldc adu sdl $1 == $4 && $3 == 4 && inreg($1)==2 | |
|
||||
remove(regvar($1))
|
||||
"add.l #$2,%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
ldc ldl adu sdl $2 == $4 && $3 == 4 && inreg($2)==2 | |
|
||||
remove(regvar($2))
|
||||
"add.l #$1,%(regvar($2)%)"
|
||||
erase(regvar($2)) | | |
|
||||
ldl adu sdl $1 == $3 && $2 == 4 && inreg($1)==2 | DATAREG4 |
|
||||
ldl adu sdl $1 == $3 && $2 == 4 && inreg($1)==2 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(regvar($1))
|
||||
"add.l %[1],%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
|
@ -651,8 +682,6 @@ lol loc slu stl $1 == $4 && $2 == 1 && $3 == 2 && inreg($1)==2 | |
|
|||
ldl adp sdl $1 == $3 && inreg($1)==2 | | remove(regvar($1))
|
||||
"add.l #$2,%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
ldl adp dup sdl loi inreg($1) == 2 && $1 == $4 && $3 == 4 && $5 == 4 | | | |
|
||||
ldl $1 adp $2 sdl $1 ldl $1 loi 4 |
|
||||
ldl loi ldl loi adp ldl sti $2==4&&$4==4&&$7==4&&$1==$3&&$1==$6&&inreg($1)==2
|
||||
| | remove(MEM_ALL)
|
||||
allocate(ADDREG = {IADDREG4,regvar($1)})
|
||||
|
@ -665,10 +694,6 @@ ldl ldc ads sdl $1 == $4 && $3 == 4 && inreg($1)==2 | |
|
|||
remove(regvar($1))
|
||||
"add.l #$2,%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
ldc ldl ads sdl $2 == $4 && $3 == 4 && inreg($2)==2 | |
|
||||
remove(regvar($2))
|
||||
"add.l #$1,%(regvar($2)%)"
|
||||
erase(regvar($2)) | | |
|
||||
lil inc sil $1==$3 && inreg($1)==2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #1,(%(regvar($1)%))"
|
||||
|
@ -681,40 +706,49 @@ lol and stl $1 == $3 && $2 == 2 && inreg($1)==2 | ANY |
|
|||
remove(regvar($1))
|
||||
"and.w %[1],%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
loc lil and sil $2 == $4 && $3 == 2 && inreg($2)==2 | |
|
||||
remove(MEM_ALL)
|
||||
"and.w #$1,(%(regvar($2)%))" | | |
|
||||
lil and sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG |
|
||||
lil and sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"and.w %[1],(%(regvar($1)%))" | | |
|
||||
lol ior stl $1 == $3 && $2 == 2 && inreg($1)==2 | ANY |
|
||||
remove(regvar($1))
|
||||
"or.w %[1],%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
lil ior sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG |
|
||||
lil ior sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"or.w %[1],(%(regvar($1)%))" | | |
|
||||
loc lil ior sil $2 == $4 && $3 == 2 && inreg($2)==2 | |
|
||||
remove(MEM_ALL)
|
||||
"or.w #$1,(%(regvar($2)%))" | | |
|
||||
lol loc xor stl $1 == $4 && $3 == 2 && inreg($1)==2 | |
|
||||
remove(regvar($1))
|
||||
"eor.w #$2,%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
loc lol xor stl $2 == $4 && $3 == 2 && inreg($2)==2 | |
|
||||
remove(regvar($2))
|
||||
"eor.w #$1,%(regvar($2)%)"
|
||||
erase(regvar($2)) | | |
|
||||
loc lil xor sil $2 == $4 && $3 == 2 && inreg($2)==2 | |
|
||||
remove(MEM_ALL)
|
||||
"eor.w #$1,(%(regvar($2)%))" | | |
|
||||
lol xor stl $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG |
|
||||
lol xor stl $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG+IMMEDIATE |
|
||||
remove(regvar($1))
|
||||
"eor.w %[1],%(regvar($1)%)"
|
||||
erase(regvar($1)) | | |
|
||||
lil xor sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG |
|
||||
lil xor sil $1 == $3 && $2 == 2 && inreg($1)==2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"eor.w %[1],(%(regvar($1)%))" | | |
|
||||
ldl ldf adp ldl sdf inreg($1)==2 && $1==$4 && $2==$5 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$3,$2(%(regvar($1)%))" | | |
|
||||
ldl ldf dup adp ldl sdf inreg($1)==2 && $1==$5 && $2==$6 && $3==4 | |
|
||||
remove(MEM_ALL)
|
||||
allocate(ADDREG={DISPL4,regvar($1), $2})
|
||||
"add.l #$4,$2(%(regvar($1)%))"
|
||||
erase(%[a]) | %[a] | |
|
||||
ldl lof inc ldl stf inreg($1)==2 && $1==$4 && $2==$5 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #1,$2(%(regvar($1)%))" | | |
|
||||
ldl lof dec ldl stf inreg($1)==2 && $1==$4 && $2==$5 | |
|
||||
remove(MEM_ALL)
|
||||
"sub.w #1,$2(%(regvar($1)%))" | | |
|
||||
ldl lof adi ldl stf inreg($1)==2 && $1==$4 && $2==$5 && $3==2
|
||||
| IMMEDIATE+DATAREG |
|
||||
remove(MEM_ALL)
|
||||
"add.w %[1],$2(%(regvar($1)%))" | | |
|
||||
ldl lof sbi ldl stf inreg($1)==2 && $1==$4 && $2==$5 && $3==2
|
||||
| IMMEDIATE+DATAREG |
|
||||
remove(MEM_ALL)
|
||||
"sub.w %[1],$2(%(regvar($1)%))" | | |
|
||||
#endif
|
||||
/* G R O U P III AND IV : I N T E G E R A R I T H M E T I C */
|
||||
|
||||
|
@ -724,29 +758,19 @@ adi $1 == 2 | ANY DATASCR | "add.w %[1],%[2]"
|
|||
... | DATASCR ANY | "add.w %[2],%[1]"
|
||||
erase(%[1])
|
||||
setcc(%[1]) | %[1] | | (2,2)+%[2]
|
||||
loc lol adi stl $2 == $4 && $3 == 2 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #$1,$2(a6)" | | | (6,10)
|
||||
loc lil adi sil $2 == $4 && $3 == 2 | |
|
||||
allocate(ADDREG = {DISPL4,LB,$2})
|
||||
remove(MEM_ALL)
|
||||
"add.w #$1,(%[a])" | | |
|
||||
lol adi stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG |
|
||||
lol adi stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"add.w %[1],$1(a6)" | | |
|
||||
loe adi ste $1 == $3 && $2 == 2 | DATAREG |
|
||||
loe adi ste $1 == $3 && $2 == 2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"add.w %[1],$1" | | |
|
||||
lil adi sil $1 == $3 && $2 == 2 | DATAREG |
|
||||
lil adi sil $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG+IMMEDIATE |
|
||||
allocate(ADDREG={DISPL4,LB,$1})
|
||||
remove(ALL)
|
||||
"add.w %[1],(%[a])" | | |
|
||||
loe loc adi ste $3 == 2 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #$2,$1" | | | (7,11)
|
||||
loc loe adi ste $3 == 2 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #$1,$2" | | | (7,11)
|
||||
adi $1 == 4 | ANY4 DATASCR4 | "add.l %[1],%[2]"
|
||||
erase(%[2])
|
||||
setcc(%[2]) | %[2] | | (2,3)+%[1]
|
||||
|
@ -756,19 +780,13 @@ adi $1 == 4 | ANY4 DATASCR4 | "add.l %[1],%[2]"
|
|||
ldl ldc adi sdl $1 == $4 && $3 == 4 && inreg($1) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$2,$1(a6)" | | | (8,16)
|
||||
ldc ldl adi sdl $2 == $4 && $3 == 4 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$1,$2(a6)" | | | (8,16)
|
||||
lde ldc adi sde $3 == 4 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$2,$1" | | | (9,17)
|
||||
ldc lde adi sde $3 == 4 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$1,$2" | | | (9,17)
|
||||
ldl adi sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4 |
|
||||
ldl adi sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"add.l %[1],$1(a6)" | | |
|
||||
lde adi sde $1 == $3 && $2 == 4 | DATAREG4 |
|
||||
lde adi sde $1 == $3 && $2 == 4 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"add.l %[1],$1" | | |
|
||||
sbi $1 == 2 | ANY DATASCR | "sub.w %[1],%[2]"
|
||||
|
@ -936,45 +954,29 @@ sru $1 == 4 | DATAREG DATASCR4 | "lsr.l %[1],%[2]"
|
|||
lol loc adu stl $1 == $4 && $3 == 2 && inreg($1) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #$2,$1(a6)" | | |
|
||||
loc lol adu stl $2 == $4 && $3 == 2 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #$1,$2(a6)" | | |
|
||||
loc lil adu sil $2 == $4 && $3 == 2 | |
|
||||
allocate(ADDREG = {DISPL4,LB,$2})
|
||||
remove(MEM_ALL)
|
||||
"add.w #$1,(%[a])" | | |
|
||||
lol adu stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG |
|
||||
lol adu stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"add.w %[1],$1(a6)" | | |
|
||||
loe adu ste $1 == $3 && $2 == 2 | DATAREG |
|
||||
loe adu ste $1 == $3 && $2 == 2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"add.w %[1],$1" | | |
|
||||
lil adu sil $1 == $3 && $2 == 2 | DATAREG |
|
||||
lil adu sil $1 == $3 && $2 == 2 | DATAREG+IMMEDIATE |
|
||||
allocate(ADDREG={DISPL4,LB,$1})
|
||||
remove(MEM_ALL)
|
||||
"add.w %[1],(%[a])" | | |
|
||||
loe loc adu ste $3 == 2 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #$2,$1" | | | (7,11)
|
||||
loc loe adu ste $3 == 2 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"add.w #$1,$2" | | | (7,11)
|
||||
ldl ldc adu sdl $1 == $4 && $3 == 4 && inreg($1) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$2,$1(a6)" | | | (8,16)
|
||||
ldc ldl adu sdl $2 == $4 && $3 == 4 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$1,$2(a6)" | | | (8,16)
|
||||
lde ldc adu sde $3 == 4 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$2,$1" | | | (9,17)
|
||||
ldc lde adu sde $3 == 4 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$1,$2" | | | (9,17)
|
||||
ldl adu sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4 |
|
||||
ldl adu sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"add.l %[1],$1(a6)" | | |
|
||||
lde adu sde $1 == $3 && $2 == 4 | DATAREG4 |
|
||||
lde adu sde $1 == $3 && $2 == 4 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"add.l %[1],$1" | | |
|
||||
lol loc sbu stl $1 == $4 && $3 == 2 && inreg($1) < 2 | |
|
||||
|
@ -1117,7 +1119,9 @@ ldl adp sdl $1 == $3 && inreg($1) < 2 | | remove(MEM_ALL)
|
|||
lde adp sde $1 == $3 | | remove(MEM_ALL)
|
||||
"add.l #$2,$1" | | | (9,17)
|
||||
ldc ads loww(1) == 0 && highw(1) == 0 && $2 == 4 | | | | |
|
||||
ldc ads highw(1) == 0 && $2 == 4 | ADDREG |
|
||||
ldc ads highw(1) == 0 && loww(1) > 0 && loww(1) <= 32767 && $2 == 4 | ADDREG |
|
||||
| {REGOFF_ADDR,%[1],loww(1)} | |
|
||||
ldc ads highw(1) == (0-1) && (loww(1) < 0 || loww(1) > 32767) && $2 == 4 | ADDREG |
|
||||
| {REGOFF_ADDR,%[1],loww(1)} | |
|
||||
ads $1 == 2 | ANY ADDSCR | "add.w %[1],%[2]"
|
||||
erase(%[2])
|
||||
|
@ -1125,6 +1129,25 @@ ads $1 == 2 | ANY ADDSCR | "add.w %[1],%[2]"
|
|||
ads $1 == 4 | ANY4 ADDSCR | "add.l %[1],%[2]"
|
||||
erase(%[2])
|
||||
setcc(%[2]) | %[2] | |
|
||||
#ifdef REGVARS
|
||||
ldl ads sdl $1==$3 && inreg($1)==2 && $2==4 | ANY4 |
|
||||
remove(regvar($1))
|
||||
"add.l %[1],%(regvar($1)%)" | | |
|
||||
ads sdl inreg($2)==2 && $1==4 | ANY4 NO_ADDREG |
|
||||
remove(regvar($2))
|
||||
move(%[1],regvar($2))
|
||||
"add.l %[2],%(regvar($2)%)"
|
||||
erase(regvar($2)) | | | (2,8)+%[2]
|
||||
... | NO_ADDREG ANY4 |
|
||||
remove(regvar($2))
|
||||
move(%[2],regvar($2))
|
||||
"add.l %[1],%(regvar($2)%)"
|
||||
erase(regvar($2)) | | | (2,8)+%[1]
|
||||
... | nocoercions : ANY4 STACK |
|
||||
remove(regvar($2))
|
||||
"move.l (sp)+,%(regvar($2)%)"
|
||||
"add.l %[1],%(regvar($2)%)" | | | (4,8)+%[1]
|
||||
#endif
|
||||
loc ldl ads sdl $2 == $4 && $3 == 2 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$1,$2(a6)" | | | (8,16)
|
||||
|
@ -1134,15 +1157,15 @@ lde loc ads sde $3 == 2 && $1 == $4 | |
|
|||
ldl ldc ads sdl $1 == $4 && $3 == 4 && inreg($1) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$2,$1(a6)" | | | (8,16)
|
||||
ldc ldl ads sdl $2 == $4 && $3 == 4 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$1,$2(a6)" | | | (8,16)
|
||||
lde ldc ads sde $3 == 4 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$2,$1" | | | (9,17)
|
||||
ldc lde ads sde $3 == 4 && $2 == $4 | |
|
||||
ldl ads sdl $1==$3 && inreg($1)<2 && $2==4 | DOUBLE+DATAREG4+EXTENDED4 |
|
||||
remove(MEM_ALL)
|
||||
"add.l #$1,$2" | | | (9,17)
|
||||
"add.l %[1],$1(a6)" | | |
|
||||
lde ads sde $1==$3 && $2==4 | DOUBLE+DATAREG4+EXTENDED4 |
|
||||
remove(MEM_ALL)
|
||||
"add.l %[1],$1" | | |
|
||||
sbs $1 == 2 | ANY4 DATASCR4 | "sub.l %[1],%[2]"
|
||||
erase(%[2])
|
||||
setcc(%[2]) | %[2.1] | |
|
||||
|
@ -1285,6 +1308,7 @@ zrf | | | | zer $1 |
|
|||
/* G R O U P VIII : C O N V E R T */
|
||||
|
||||
|
||||
loc loc cii loc loc cii $1==$5 && $2==$4 && $1 <= $2 | | | | | /* should be peephole optim */
|
||||
loc loc cii $1==$2 | | | | |
|
||||
loc loc cuu $1==$2 | | | | |
|
||||
loc loc ciu $1==$2 | | | | |
|
||||
|
@ -1302,7 +1326,12 @@ ciu | | | | cuu |
|
|||
loc loc cii $1==1 && $2==2 | DATASCR |
|
||||
"ext.w %[1]"
|
||||
erase(%[1])
|
||||
setcc(%[1]) | %[1] | |
|
||||
setcc(%[1]) | %[1] | | (2,3)
|
||||
... | nocoercions: ANY1 |
|
||||
allocate(DATAREG)
|
||||
"move.b %[1],%[a]"
|
||||
"ext.w %[a]"
|
||||
setcc(%[a]) | %[a] | | (4,6)+%[1]
|
||||
loc loc cii $1==1 && $2==4 | ANY |
|
||||
allocate(%[1],DATAREG4)
|
||||
move(%[1],%[a.1])
|
||||
|
@ -1310,28 +1339,17 @@ loc loc cii $1==1 && $2==4 | ANY |
|
|||
"ext.l %[a]"
|
||||
erase(%[a])
|
||||
setcc(%[a]) | %[a] | |
|
||||
loc loc cuu $1==1 && $2==4 | nocoercions: DATASCR |
|
||||
"and.l #255,%[1]"
|
||||
erase(%[1])
|
||||
setcc(%[1]) | %[1] | |
|
||||
... | ANY |
|
||||
allocate(DATAREG4)
|
||||
"clr.l %[a]"
|
||||
move(%[1],%[a.1])
|
||||
erase(%[a])
|
||||
| %[a] | |
|
||||
... | ANY1 |
|
||||
allocate(DATAREG4)
|
||||
"clr.l %[a]"
|
||||
"move.b %[1],%[a.1]"
|
||||
erase(%[a])
|
||||
| %[a] | |
|
||||
loc loc cii $1==2 && $2==4 | ANY |
|
||||
allocate(%[1],DATAREG4)
|
||||
move(%[1],%[a.1])
|
||||
"ext.l %[a]"
|
||||
erase(%[a])
|
||||
setcc(%[a]) | %[a] | |
|
||||
#ifdef REGVARS
|
||||
lol loc loc cii inreg($1)==2 && $2==2 && $3==4 | |
|
||||
"ext.l %(regvar($1)%)"
|
||||
| { EXTENDED4, regvar($1) } | |
|
||||
#endif
|
||||
loc loc cuu $1==2 && $2==4 | | | {IMMEDIATE,0} | |
|
||||
loc loc ciu $1==2 && $2==4 | | | {IMMEDIATE,0} | |
|
||||
loc loc cui $1==2 && $2==4 | | | {IMMEDIATE,0} | |
|
||||
|
@ -1344,13 +1362,13 @@ loc loc loc ciu $1 == 0 && $2 == 2 && $3 == 4 | | | {DOUBLE,"0"} | |
|
|||
loc loc loc cui $1 == 0 && $2 == 2 && $3 == 4 | | | {DOUBLE,"0"} | |
|
||||
|
||||
loc loc cii $1==4 && $2==2 | DATAREG4 | | %[1.1] | |
|
||||
... | ANY ANY | | %[2] | |
|
||||
... | ANY-REGCH2 ANY | | %[2] | |
|
||||
loc loc cuu $1==4 && $2==2 | DATAREG4 | | %[1.1] | |
|
||||
... | ANY | | | |
|
||||
... | ANY-REGCH2 | | | |
|
||||
loc loc ciu $1==4 && $2==2 | DATAREG4 | | %[1.1] | |
|
||||
... | ANY | | | |
|
||||
... | ANY-REGCH2 | | | |
|
||||
loc loc cui $1==4 && $2==2 | DATAREG4 | | %[1.1] | |
|
||||
... | ANY | | | |
|
||||
... | ANY-REGCH2 | | | |
|
||||
loc loc loc cuu $2 == 1 && $3 == 4 && $1 > 0 && $1 < 128 | | | | ldc $1 |
|
||||
|
||||
/* Floating point stuff */
|
||||
|
@ -1455,29 +1473,19 @@ and defined($1) && $1 == 2 | ANY DATASCR |
|
|||
erase(%[1]) | %[1] | | (2,2)+%[2]
|
||||
lol loc and $2 == 255 && inreg($1) < 2 && $3 == 2 | | | {DISPL1,LB,$1+1} | |
|
||||
lal loi and lal sti $1 == $4 && $2 == 1 && $3 == 2 && $5 == 1 && inreg($1) < 2
|
||||
| DATAREG |
|
||||
| DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"and.b %[1],$1(a6)" | | |
|
||||
loc lol and stl $2 == $4 && $3 == 2 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"and.w #$1,$2(a6)" | | | (6,10)
|
||||
loe loc and ste $3 == 2 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"and.w #$2,$1" | | | (7,11)
|
||||
loc loe and ste $3 == 2 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"and.w #$1,$2" | | | (7,11)
|
||||
loc lil and sil $2 == $4 && $3 == 2 | |
|
||||
allocate(ADDREG = {DISPL4,LB,$2})
|
||||
remove(MEM_ALL)
|
||||
"and.w #$1,(%[a])" | | |
|
||||
lol and stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG |
|
||||
lol and stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG + IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"and.w %[1],$1(a6)" | | |
|
||||
loe and ste $1 == $3 && $2 == 2 | DATAREG |
|
||||
loe and ste $1 == $3 && $2 == 2 | DATAREG + IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"and.w %[1],$1" | | |
|
||||
lil and sil $1 == $3 && $2 == 2 | DATAREG |
|
||||
lil and sil $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG + IMMEDIATE |
|
||||
allocate(ADDREG={DISPL4,LB,$1})
|
||||
remove(MEM_ALL)
|
||||
"and.w %[1],(%[a])" | | |
|
||||
|
@ -1495,19 +1503,13 @@ and defined($1) && $1 == 4 | ANY4-ADDREG DATASCR4 |
|
|||
ldl ldc and sdl $1 == $4 && $3 == 4 && inreg($1) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"and.l #$2,$1(a6)" | | | (8,16)
|
||||
ldc ldl and sdl $2 == $4 && $3 == 4 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"and.l #$1,$2(a6)" | | | (8,16)
|
||||
lde ldc and sde $3 == 4 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"and.l #$2,$1" | | | (9,17)
|
||||
ldc lde and sde $3 == 4 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"and.l #$1,$2" | | | (9,17)
|
||||
ldl and sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4 |
|
||||
ldl and sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"and.l %[1],$1(a6)" | | |
|
||||
lde and sde $1 == $3 && $2 == 4 | DATAREG4 |
|
||||
lde and sde $1 == $3 && $2 == 4 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"and.l %[1],$1" | | |
|
||||
and defined($1) && $1 > 4 | STACK |
|
||||
|
@ -1538,32 +1540,22 @@ ior defined($1) && $1 == 2 | ANY DATASCR |
|
|||
erase(%[1])
|
||||
setcc(%[1]) | %[1] | | (2,2)+%[2]
|
||||
lal loi ior lal sti $1 == $4 && $2 == 1 && $3 == 2 && $5 == 1 && inreg($1) < 2
|
||||
| DATAREG |
|
||||
| DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"or.b %[1],$1(a6)" | | |
|
||||
loc lol ior stl $2 == $4 && $3 == 2 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"or.w #$1,$2(a6)" | | | (6,10)
|
||||
lol ior stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG |
|
||||
lol ior stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"or.w %[1],$1(a6)" | | |
|
||||
loe ior ste $1 == $3 && $2 == 2 | DATAREG |
|
||||
loe ior ste $1 == $3 && $2 == 2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"or.w %[1],$1" | | |
|
||||
lil ior sil $1 == $3 && $2 == 2 | DATAREG |
|
||||
lil ior sil $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG+IMMEDIATE |
|
||||
allocate(ADDREG={DISPL4,LB,$1})
|
||||
remove(MEM_ALL)
|
||||
"or.w %[1],(%[a])" | | |
|
||||
loe loc ior ste $3 == 2 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"or.w #$2,$1" | | | (7,11)
|
||||
loc loe ior ste $3 == 2 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"or.w #$1,$2" | | | (7,11)
|
||||
loc lil ior sil $2 == $4 && $3 == 2 | |
|
||||
allocate(ADDREG = {DISPL4,LB,$2})
|
||||
remove(MEM_ALL)
|
||||
"or.w #$1,(%[a])" | | |
|
||||
ior defined($1) && $1 == 4 | ANY4-ADDREG DATASCR4 |
|
||||
"or.l %[1],%[2]"
|
||||
erase(%[2])
|
||||
|
@ -1575,19 +1567,13 @@ ior defined($1) && $1 == 4 | ANY4-ADDREG DATASCR4 |
|
|||
ldl ldc ior sdl $1 == $4 && $3 == 4 && inreg($1) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"or.l #$2,$1(a6)" | | | (8,16)
|
||||
ldc ldl ior sdl $2 == $4 && $3 == 4 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"or.l #$1,$2(a6)" | | | (8,16)
|
||||
lde ldc ior sde $3 == 4 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"or.l #$2,$1" | | | (9,17)
|
||||
ldc lde ior sde $3 == 4 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"or.l #$1,$2" | | | (9,17)
|
||||
ldl ior sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4 |
|
||||
ldl ior sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"or.l %[1],$1(a6)" | | |
|
||||
lde ior sde $1 == $3 && $2 == 4 | DATAREG4 |
|
||||
lde ior sde $1 == $3 && $2 == 4 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"or.l %[1],$1" | | |
|
||||
ior defined($1) && $1 > 4 | STACK |
|
||||
|
@ -1618,59 +1604,43 @@ xor defined($1) && $1 == 2 | DATAREG DATASCR |
|
|||
erase(%[1])
|
||||
setcc(%[1]) | %[1] | | (2,2)+%[2]
|
||||
lal loi xor lal sti $1 == $4 && $2 == 1 && $3 == 2 && $5 == 1 && inreg($1) < 2
|
||||
| DATAREG |
|
||||
| DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"eor.b %[1],$1(a6)" | | |
|
||||
lol loc xor stl $1 == $4 && $3 == 2 && inreg($1) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"eor.w #$2,$1(a6)" | | | (6,10)
|
||||
loc lol xor stl $2 == $4 && $3 == 2 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"eor.w #$1,$2(a6)" | | | (6,10)
|
||||
loe loc xor ste $3 == 2 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"eor.w #$2,$1" | | | (7,11)
|
||||
loc loe xor ste $3 == 2 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"eor.w #$1,$2" | | | (7,11)
|
||||
loc lil xor sil $2 == $4 && $3 == 2 | |
|
||||
allocate(ADDREG = {DISPL4,LB,$2})
|
||||
remove(MEM_ALL)
|
||||
"eor.w #$1,(%[a])" | | |
|
||||
lol xor stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG |
|
||||
lol xor stl $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"eor.w %[1],$1(a6)" | | |
|
||||
loe xor ste $1 == $3 && $2 == 2 | DATAREG |
|
||||
loe xor ste $1 == $3 && $2 == 2 | DATAREG+IMMEDIATE |
|
||||
remove(MEM_ALL)
|
||||
"eor.w %[1],$1" | | |
|
||||
lil xor sil $1 == $3 && $2 == 2 | DATAREG |
|
||||
lil xor sil $1 == $3 && $2 == 2 && inreg($1) < 2 | DATAREG+IMMEDIATE |
|
||||
allocate(ADDREG={DISPL4,LB,$1})
|
||||
remove(MEM_ALL)
|
||||
"eor.w %[1],(%[a])" | | |
|
||||
xor defined($1) && $1 == 4 | DATAREG4 DATASCR4 |
|
||||
xor defined($1) && $1 == 4 | DATAREG4+EXTENDED4 DATASCR4 |
|
||||
"eor.l %[1],%[2]"
|
||||
erase(%[2])
|
||||
setcc(%[2]) | %[2] | | (2,3)+%[1]
|
||||
... | DATASCR4 DATAREG4 |
|
||||
... | DATASCR4 DATAREG4+EXTENDED4 |
|
||||
"eor.l %[2],%[1]"
|
||||
erase(%[1])
|
||||
setcc(%[1]) | %[1] | | (2,3)+%[2]
|
||||
ldl ldc xor sdl $1 == $4 && $3 == 4 && inreg($1) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"eor.l #$2,$1(a6)" | | | (8,16)
|
||||
ldc ldl xor sdl $2 == $4 && $3 == 4 && inreg($2) < 2 | |
|
||||
remove(MEM_ALL)
|
||||
"eor.l #$1,$2(a6)" | | | (8,16)
|
||||
lde ldc xor sde $3 == 4 && $1 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"eor.l #$2,$1" | | | (9,17)
|
||||
ldc lde xor sde $3 == 4 && $2 == $4 | |
|
||||
remove(MEM_ALL)
|
||||
"eor.l #$1,$2" | | | (9,17)
|
||||
ldl xor sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4 |
|
||||
ldl xor sdl $1 == $3 && $2 == 4 && inreg($1) < 2 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"eor.l %[1],$1(a6)" | | |
|
||||
lde xor sde $1 == $3 && $2 == 4 | DATAREG4 |
|
||||
lde xor sde $1 == $3 && $2 == 4 | DATAREG4+EXTENDED4+DOUBLE |
|
||||
remove(MEM_ALL)
|
||||
"eor.l %[1],$1" | | |
|
||||
xor defined($1) && $1 > 4 | STACK |
|
||||
|
@ -1719,11 +1689,11 @@ rol defined($1) && $1 == 4 | DATAREG DATASCR4 |
|
|||
"rol.l %[1],%[2]"
|
||||
erase(%[2])
|
||||
setcc(%[2]) | %[2] | |
|
||||
ror defined($1) && $1 == 2 | DATAREG DATAREG |
|
||||
ror defined($1) && $1 == 2 | DATAREG DATASCR |
|
||||
"ror %[1],%[2]"
|
||||
erase(%[2])
|
||||
setcc(%[2]) | %[2] | |
|
||||
ror defined($1) && $1 == 4 | DATAREG DATAREG4 |
|
||||
ror defined($1) && $1 == 4 | DATAREG DATASCR4 |
|
||||
"ror.l %[1],%[2]"
|
||||
erase(%[2])
|
||||
setcc(%[2]) | %[2] | |
|
||||
|
@ -2049,109 +2019,109 @@ cmu zgt $1==2 | ANY DATAREG STACK |
|
|||
"cmp.w %[1],%[2]"
|
||||
"bhi $2" | | |
|
||||
|
||||
cmi tlt and $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tlt and $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"blt 1f"
|
||||
"clr %[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tlt ior $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tlt ior $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"bge 1f"
|
||||
"bset #0,%[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tle and $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tle and $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"ble 1f"
|
||||
"clr %[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tle ior $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tle ior $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"bgt 1f"
|
||||
"bset #0,%[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi teq and $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi teq and $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"beq 1f"
|
||||
"clr %[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi teq ior $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi teq ior $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"bne 1f"
|
||||
"bset #0,%[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tne and $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tne and $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"bne 1f"
|
||||
"clr %[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tne ior $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tne ior $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"beq 1f"
|
||||
"bset #0,%[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tge and $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tge and $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"bge 1f"
|
||||
"clr %[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tge ior $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tge ior $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"blt 1f"
|
||||
"bset #0,%[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tgt and $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tgt and $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"bgt 1f"
|
||||
"clr %[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tgt ior $1==4 && $3==2 | ANY4 DATAREG4 DATASCR |
|
||||
cmi tgt ior $1==4 && $3==2 | ANY4 DATAREG4+EXTENDED4 DATASCR |
|
||||
"cmp.l %[1],%[2]"
|
||||
"ble 1f"
|
||||
"bset #0,%[3]"
|
||||
"1:"
|
||||
erase(%[3]) | %[3] | |
|
||||
cmi tlt $1==4 | ANY4 DATAREG4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
cmi tlt $1==4 | ANY4 DATAREG4+EXTENDED4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
"cmp.l %[1],%[2]"
|
||||
"blt 1f"
|
||||
"clr %[a]"
|
||||
"1:"
|
||||
erase(%[a]) | %[a] | |
|
||||
cmi tle $1==4 | ANY4 DATAREG4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
cmi tle $1==4 | ANY4 DATAREG4+EXTENDED4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
"cmp.l %[1],%[2]"
|
||||
"ble 1f"
|
||||
"clr %[a]"
|
||||
"1:"
|
||||
erase(%[a]) | %[a] | |
|
||||
cmi teq $1==4 | ANY4 DATAREG4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
cmi teq $1==4 | ANY4 DATAREG4+EXTENDED4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
"cmp.l %[1],%[2]"
|
||||
"beq 1f"
|
||||
"clr %[a]"
|
||||
"1:"
|
||||
erase(%[a]) | %[a] | |
|
||||
cmi tne $1==4 | ANY4 DATAREG4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
cmi tne $1==4 | ANY4 DATAREG4+EXTENDED4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
"cmp.l %[1],%[2]"
|
||||
"bne 1f"
|
||||
"clr %[a]"
|
||||
"1:"
|
||||
erase(%[a]) | %[a] | |
|
||||
cmi tge $1==4 | ANY4 DATAREG4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
cmi tge $1==4 | ANY4 DATAREG4+EXTENDED4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
"cmp.l %[1],%[2]"
|
||||
"bge 1f"
|
||||
"clr %[a]"
|
||||
"1:"
|
||||
erase(%[a]) | %[a] | |
|
||||
cmi tgt $1==4 | ANY4 DATAREG4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
cmi tgt $1==4 | ANY4 DATAREG4+EXTENDED4 | allocate(DATAREG={IMMEDIATE,1})
|
||||
"cmp.l %[1],%[2]"
|
||||
"bgt 1f"
|
||||
"clr %[a]"
|
||||
|
@ -2782,9 +2752,9 @@ csb $1 == 2 | | remove(ALL)
|
|||
"jmp .csb"
|
||||
| | |
|
||||
dch | | | | loi 4 |
|
||||
dup $1 == 2 | ANY | | %[1] %[1] | |
|
||||
dup $1 == 4 | ANY4 | | %[1] %[1] | |
|
||||
... | ANY ANY | | %[2] %[1] %[2] %[1] | |
|
||||
dup $1 == 2 | ANY-REGCH2 | | %[1] %[1] | |
|
||||
dup $1 == 4 | DATAREG4+ADDREG | | %[1] %[1] | |
|
||||
... | ANY-REGCH2 ANY-REGCH2 | | %[2] %[1] %[2] %[1] | |
|
||||
dup $1 > 4 | STACK | allocate(ADDREG,DATAREG4)
|
||||
"move.l sp,%[a]"
|
||||
"add.l #$1,%[a]"
|
||||
|
@ -2892,7 +2862,7 @@ MOVES:
|
|||
"move.l %[1],%[2]" setcc(%[2]),(2,2))
|
||||
(ANY, DATA_ALT, "move.w %[1], %[2]"setcc(%[2]),(2,2)+%[1]+%[2])
|
||||
(IMMEDIATE %[cc] == 0, ANY1, "clr.b %[2]" setcc(%[2]),(2,3)+%[2] )
|
||||
(ANY+ANY1, ANY1, "move.b %[1], %[2]"setcc(%[2]),(2,2)+%[1]+%[2])
|
||||
(ANY+ANY1-REGCH2, ANY1, "move.b %[1], %[2]"setcc(%[2]),(2,2)+%[1]+%[2])
|
||||
(IMMEDIATE4 %[cc] == 0, DATA_ALT4, "clr.l %[2]"setcc(%[2]),(2,5)+%[2])
|
||||
(DOUBLEZERO, DATA_ALT4, "clr.l %[2]"setcc(%[2]),(2,5)+%[2])
|
||||
(DOUBLE %[cc] == "0", DATA_ALT4, "clr.l %[2]"setcc(%[2]),(2,5)+%[2])
|
||||
|
|
Loading…
Reference in a new issue