fixed bugs with ext_[wl] arguments, changed reusage of registers
This commit is contained in:
parent
aef60fdda1
commit
54cc752a9e
|
@ -225,6 +225,7 @@ mes(type) word type ; {
|
||||||
#else
|
#else
|
||||||
fputs("jsr ___u_LiB\n", codefile);
|
fputs("jsr ___u_LiB\n", codefile);
|
||||||
#endif
|
#endif
|
||||||
|
cleanregs(); /* debugger might change variables */
|
||||||
}
|
}
|
||||||
fprintf(codefile, ".symd \"%s\", 0x%x,", str, (int) argval);
|
fprintf(codefile, ".symd \"%s\", 0x%x,", str, (int) argval);
|
||||||
argt = getarg(cst_ptyp);
|
argt = getarg(cst_ptyp);
|
||||||
|
|
|
@ -671,8 +671,8 @@ eor_l "eor.l" conreg4:ro, datalt4:rw:cc cost(2,6).
|
||||||
eor_w "eor.w" conreg2:ro, datalt2:rw:cc cost(2,4).
|
eor_w "eor.w" conreg2:ro, datalt2:rw:cc cost(2,4).
|
||||||
#endif
|
#endif
|
||||||
/* in the next two instructions: LOCAL only allowed if register var */
|
/* in the next two instructions: LOCAL only allowed if register var */
|
||||||
ext_l "ext.l" extend1+extend2+D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
ext_l "ext.l" D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
||||||
ext_w "ext.w" extend1+D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
ext_w "ext.w" D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
||||||
jmp address+control4 cost(2,0).
|
jmp address+control4 cost(2,0).
|
||||||
jsr address+control4 kills :cc d0 d1 d2 a0 a1 cost(2,3).
|
jsr address+control4 kills :cc d0 d1 d2 a0 a1 cost(2,3).
|
||||||
lea address+control4:ro, A_REG+areg:wo cost(2,0).
|
lea address+control4:ro, A_REG+areg:wo cost(2,0).
|
||||||
|
@ -1208,11 +1208,11 @@ from memory1
|
||||||
gen move_b %1, %a yields {dreg1, %a}
|
gen move_b %1, %a yields {dreg1, %a}
|
||||||
|
|
||||||
from extend2
|
from extend2
|
||||||
gen ext_l %1 yields %1.reg
|
gen ext_l %1.reg yields %1.reg
|
||||||
|
|
||||||
#if WORD_SIZE==2
|
#if WORD_SIZE==2
|
||||||
from extend1
|
from extend1
|
||||||
gen ext_w %1 yields %1.reg
|
gen ext_w %1.reg yields %1.reg
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
from extend1_4
|
from extend1_4
|
||||||
|
@ -4503,8 +4503,7 @@ pat loc loc ciu $1==4 && $2==2
|
||||||
with zero_const4
|
with zero_const4
|
||||||
yields {zero_const, 0}
|
yields {zero_const, 0}
|
||||||
with any4
|
with any4
|
||||||
uses reusing %1, DD_REG4
|
uses reusing %1, DD_REG4 = %1
|
||||||
gen move %1,%a
|
|
||||||
yields %a.1
|
yields %a.1
|
||||||
|
|
||||||
pat loc loc cui $1==2 && $2==4
|
pat loc loc cui $1==2 && $2==4
|
||||||
|
@ -6508,15 +6507,15 @@ uses reusing %1,DD_REG4
|
||||||
#else
|
#else
|
||||||
with DD_REG yields {extend2, %1}
|
with DD_REG yields {extend2, %1}
|
||||||
with exact memory2
|
with exact memory2
|
||||||
uses reusing %1,DD_REG
|
uses reusing %1,DD_REG=%1
|
||||||
gen move %1, %a yields {extend2, %a}
|
yields {extend2, %a}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pat loc loc cii $1==1 && $2==WORD_SIZE
|
pat loc loc cii $1==1 && $2==WORD_SIZE
|
||||||
with DD_REG yields {extend1, %1}
|
with DD_REG yields {extend1, %1}
|
||||||
with exact memory1
|
with exact memory1
|
||||||
uses reusing %1,DD_REG
|
uses reusing %1,DD_REG = %1
|
||||||
gen move %1,%a yields {extend1, %a}
|
yields {extend1, %a}
|
||||||
|
|
||||||
#if WORD_SIZE==2
|
#if WORD_SIZE==2
|
||||||
pat loc loc cii $1==1 && $2==4
|
pat loc loc cii $1==1 && $2==4
|
||||||
|
|
|
@ -225,6 +225,7 @@ mes(type) word type ; {
|
||||||
#else
|
#else
|
||||||
fputs("jsr ___u_LiB\n", codefile);
|
fputs("jsr ___u_LiB\n", codefile);
|
||||||
#endif
|
#endif
|
||||||
|
cleanregs(); /* debugger might change variables */
|
||||||
}
|
}
|
||||||
fprintf(codefile, ".symd \"%s\", 0x%x,", str, (int) argval);
|
fprintf(codefile, ".symd \"%s\", 0x%x,", str, (int) argval);
|
||||||
argt = getarg(cst_ptyp);
|
argt = getarg(cst_ptyp);
|
||||||
|
|
|
@ -671,8 +671,8 @@ eor_l "eor.l" conreg4:ro, datalt4:rw:cc cost(2,6).
|
||||||
eor_w "eor.w" conreg2:ro, datalt2:rw:cc cost(2,4).
|
eor_w "eor.w" conreg2:ro, datalt2:rw:cc cost(2,4).
|
||||||
#endif
|
#endif
|
||||||
/* in the next two instructions: LOCAL only allowed if register var */
|
/* in the next two instructions: LOCAL only allowed if register var */
|
||||||
ext_l "ext.l" extend1+extend2+D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
ext_l "ext.l" D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
||||||
ext_w "ext.w" extend1+D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
ext_w "ext.w" D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
||||||
jmp address+control4 cost(2,0).
|
jmp address+control4 cost(2,0).
|
||||||
jsr address+control4 kills :cc d0 d1 d2 a0 a1 cost(2,3).
|
jsr address+control4 kills :cc d0 d1 d2 a0 a1 cost(2,3).
|
||||||
lea address+control4:ro, A_REG+areg:wo cost(2,0).
|
lea address+control4:ro, A_REG+areg:wo cost(2,0).
|
||||||
|
@ -1208,11 +1208,11 @@ from memory1
|
||||||
gen move_b %1, %a yields {dreg1, %a}
|
gen move_b %1, %a yields {dreg1, %a}
|
||||||
|
|
||||||
from extend2
|
from extend2
|
||||||
gen ext_l %1 yields %1.reg
|
gen ext_l %1.reg yields %1.reg
|
||||||
|
|
||||||
#if WORD_SIZE==2
|
#if WORD_SIZE==2
|
||||||
from extend1
|
from extend1
|
||||||
gen ext_w %1 yields %1.reg
|
gen ext_w %1.reg yields %1.reg
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
from extend1_4
|
from extend1_4
|
||||||
|
@ -4503,8 +4503,7 @@ pat loc loc ciu $1==4 && $2==2
|
||||||
with zero_const4
|
with zero_const4
|
||||||
yields {zero_const, 0}
|
yields {zero_const, 0}
|
||||||
with any4
|
with any4
|
||||||
uses reusing %1, DD_REG4
|
uses reusing %1, DD_REG4 = %1
|
||||||
gen move %1,%a
|
|
||||||
yields %a.1
|
yields %a.1
|
||||||
|
|
||||||
pat loc loc cui $1==2 && $2==4
|
pat loc loc cui $1==2 && $2==4
|
||||||
|
@ -6508,15 +6507,15 @@ uses reusing %1,DD_REG4
|
||||||
#else
|
#else
|
||||||
with DD_REG yields {extend2, %1}
|
with DD_REG yields {extend2, %1}
|
||||||
with exact memory2
|
with exact memory2
|
||||||
uses reusing %1,DD_REG
|
uses reusing %1,DD_REG=%1
|
||||||
gen move %1, %a yields {extend2, %a}
|
yields {extend2, %a}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pat loc loc cii $1==1 && $2==WORD_SIZE
|
pat loc loc cii $1==1 && $2==WORD_SIZE
|
||||||
with DD_REG yields {extend1, %1}
|
with DD_REG yields {extend1, %1}
|
||||||
with exact memory1
|
with exact memory1
|
||||||
uses reusing %1,DD_REG
|
uses reusing %1,DD_REG = %1
|
||||||
gen move %1,%a yields {extend1, %a}
|
yields {extend1, %a}
|
||||||
|
|
||||||
#if WORD_SIZE==2
|
#if WORD_SIZE==2
|
||||||
pat loc loc cii $1==1 && $2==4
|
pat loc loc cii $1==1 && $2==4
|
||||||
|
|
|
@ -225,6 +225,7 @@ mes(type) word type ; {
|
||||||
#else
|
#else
|
||||||
fputs("jsr ___u_LiB\n", codefile);
|
fputs("jsr ___u_LiB\n", codefile);
|
||||||
#endif
|
#endif
|
||||||
|
cleanregs(); /* debugger might change variables */
|
||||||
}
|
}
|
||||||
fprintf(codefile, ".symd \"%s\", 0x%x,", str, (int) argval);
|
fprintf(codefile, ".symd \"%s\", 0x%x,", str, (int) argval);
|
||||||
argt = getarg(cst_ptyp);
|
argt = getarg(cst_ptyp);
|
||||||
|
|
|
@ -671,8 +671,8 @@ eor_l "eor.l" conreg4:ro, datalt4:rw:cc cost(2,6).
|
||||||
eor_w "eor.w" conreg2:ro, datalt2:rw:cc cost(2,4).
|
eor_w "eor.w" conreg2:ro, datalt2:rw:cc cost(2,4).
|
||||||
#endif
|
#endif
|
||||||
/* in the next two instructions: LOCAL only allowed if register var */
|
/* in the next two instructions: LOCAL only allowed if register var */
|
||||||
ext_l "ext.l" extend1+extend2+D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
ext_l "ext.l" D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
||||||
ext_w "ext.w" extend1+D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
ext_w "ext.w" D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
||||||
jmp address+control4 cost(2,0).
|
jmp address+control4 cost(2,0).
|
||||||
jsr address+control4 kills :cc d0 d1 d2 a0 a1 cost(2,3).
|
jsr address+control4 kills :cc d0 d1 d2 a0 a1 cost(2,3).
|
||||||
lea address+control4:ro, A_REG+areg:wo cost(2,0).
|
lea address+control4:ro, A_REG+areg:wo cost(2,0).
|
||||||
|
@ -1208,11 +1208,11 @@ from memory1
|
||||||
gen move_b %1, %a yields {dreg1, %a}
|
gen move_b %1, %a yields {dreg1, %a}
|
||||||
|
|
||||||
from extend2
|
from extend2
|
||||||
gen ext_l %1 yields %1.reg
|
gen ext_l %1.reg yields %1.reg
|
||||||
|
|
||||||
#if WORD_SIZE==2
|
#if WORD_SIZE==2
|
||||||
from extend1
|
from extend1
|
||||||
gen ext_w %1 yields %1.reg
|
gen ext_w %1.reg yields %1.reg
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
from extend1_4
|
from extend1_4
|
||||||
|
@ -4503,8 +4503,7 @@ pat loc loc ciu $1==4 && $2==2
|
||||||
with zero_const4
|
with zero_const4
|
||||||
yields {zero_const, 0}
|
yields {zero_const, 0}
|
||||||
with any4
|
with any4
|
||||||
uses reusing %1, DD_REG4
|
uses reusing %1, DD_REG4 = %1
|
||||||
gen move %1,%a
|
|
||||||
yields %a.1
|
yields %a.1
|
||||||
|
|
||||||
pat loc loc cui $1==2 && $2==4
|
pat loc loc cui $1==2 && $2==4
|
||||||
|
@ -6508,15 +6507,15 @@ uses reusing %1,DD_REG4
|
||||||
#else
|
#else
|
||||||
with DD_REG yields {extend2, %1}
|
with DD_REG yields {extend2, %1}
|
||||||
with exact memory2
|
with exact memory2
|
||||||
uses reusing %1,DD_REG
|
uses reusing %1,DD_REG=%1
|
||||||
gen move %1, %a yields {extend2, %a}
|
yields {extend2, %a}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pat loc loc cii $1==1 && $2==WORD_SIZE
|
pat loc loc cii $1==1 && $2==WORD_SIZE
|
||||||
with DD_REG yields {extend1, %1}
|
with DD_REG yields {extend1, %1}
|
||||||
with exact memory1
|
with exact memory1
|
||||||
uses reusing %1,DD_REG
|
uses reusing %1,DD_REG = %1
|
||||||
gen move %1,%a yields {extend1, %a}
|
yields {extend1, %a}
|
||||||
|
|
||||||
#if WORD_SIZE==2
|
#if WORD_SIZE==2
|
||||||
pat loc loc cii $1==1 && $2==4
|
pat loc loc cii $1==1 && $2==4
|
||||||
|
|
|
@ -225,6 +225,7 @@ mes(type) word type ; {
|
||||||
#else
|
#else
|
||||||
fputs("jsr ___u_LiB\n", codefile);
|
fputs("jsr ___u_LiB\n", codefile);
|
||||||
#endif
|
#endif
|
||||||
|
cleanregs(); /* debugger might change variables */
|
||||||
}
|
}
|
||||||
fprintf(codefile, ".symd \"%s\", 0x%x,", str, (int) argval);
|
fprintf(codefile, ".symd \"%s\", 0x%x,", str, (int) argval);
|
||||||
argt = getarg(cst_ptyp);
|
argt = getarg(cst_ptyp);
|
||||||
|
|
|
@ -671,8 +671,8 @@ eor_l "eor.l" conreg4:ro, datalt4:rw:cc cost(2,6).
|
||||||
eor_w "eor.w" conreg2:ro, datalt2:rw:cc cost(2,4).
|
eor_w "eor.w" conreg2:ro, datalt2:rw:cc cost(2,4).
|
||||||
#endif
|
#endif
|
||||||
/* in the next two instructions: LOCAL only allowed if register var */
|
/* in the next two instructions: LOCAL only allowed if register var */
|
||||||
ext_l "ext.l" extend1+extend2+D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
ext_l "ext.l" D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
||||||
ext_w "ext.w" extend1+D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
ext_w "ext.w" D_REG+LOCAL+D_REG4:rw:cc cost(2,2).
|
||||||
jmp address+control4 cost(2,0).
|
jmp address+control4 cost(2,0).
|
||||||
jsr address+control4 kills :cc d0 d1 d2 a0 a1 cost(2,3).
|
jsr address+control4 kills :cc d0 d1 d2 a0 a1 cost(2,3).
|
||||||
lea address+control4:ro, A_REG+areg:wo cost(2,0).
|
lea address+control4:ro, A_REG+areg:wo cost(2,0).
|
||||||
|
@ -1208,11 +1208,11 @@ from memory1
|
||||||
gen move_b %1, %a yields {dreg1, %a}
|
gen move_b %1, %a yields {dreg1, %a}
|
||||||
|
|
||||||
from extend2
|
from extend2
|
||||||
gen ext_l %1 yields %1.reg
|
gen ext_l %1.reg yields %1.reg
|
||||||
|
|
||||||
#if WORD_SIZE==2
|
#if WORD_SIZE==2
|
||||||
from extend1
|
from extend1
|
||||||
gen ext_w %1 yields %1.reg
|
gen ext_w %1.reg yields %1.reg
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
from extend1_4
|
from extend1_4
|
||||||
|
@ -4503,8 +4503,7 @@ pat loc loc ciu $1==4 && $2==2
|
||||||
with zero_const4
|
with zero_const4
|
||||||
yields {zero_const, 0}
|
yields {zero_const, 0}
|
||||||
with any4
|
with any4
|
||||||
uses reusing %1, DD_REG4
|
uses reusing %1, DD_REG4 = %1
|
||||||
gen move %1,%a
|
|
||||||
yields %a.1
|
yields %a.1
|
||||||
|
|
||||||
pat loc loc cui $1==2 && $2==4
|
pat loc loc cui $1==2 && $2==4
|
||||||
|
@ -6508,15 +6507,15 @@ uses reusing %1,DD_REG4
|
||||||
#else
|
#else
|
||||||
with DD_REG yields {extend2, %1}
|
with DD_REG yields {extend2, %1}
|
||||||
with exact memory2
|
with exact memory2
|
||||||
uses reusing %1,DD_REG
|
uses reusing %1,DD_REG=%1
|
||||||
gen move %1, %a yields {extend2, %a}
|
yields {extend2, %a}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pat loc loc cii $1==1 && $2==WORD_SIZE
|
pat loc loc cii $1==1 && $2==WORD_SIZE
|
||||||
with DD_REG yields {extend1, %1}
|
with DD_REG yields {extend1, %1}
|
||||||
with exact memory1
|
with exact memory1
|
||||||
uses reusing %1,DD_REG
|
uses reusing %1,DD_REG = %1
|
||||||
gen move %1,%a yields {extend1, %a}
|
yields {extend1, %a}
|
||||||
|
|
||||||
#if WORD_SIZE==2
|
#if WORD_SIZE==2
|
||||||
pat loc loc cii $1==1 && $2==4
|
pat loc loc cii $1==1 && $2==4
|
||||||
|
|
Loading…
Reference in a new issue