"$Header$"
-#define SL 8
-#define SSL "8"
-#define DL 0
-#define SDL ""
-
#define LOCLABS /* define if target assembler recognizes local labels */
#define REGVARS /* define for register variables */
-
/*#define DORCK /* define if you want RCK */
-/*#define FLOAT4 /* define if you want better 4-byte FP arithmetic */
+#define FLOAT4 /* define if you want better 4-byte FP arithmetic */
+#define FLOAT8 /* define if you want better 8-byte FP arithmetic */
+
+#define NC nocoercions :
+#define BSIZE 4
EM_PSIZE = 4
EM_WSIZE = 4
-#ifndef REGVARS
-EM_BSIZE = SL
-#endif REGVARS
-
-#define NC nocoercions :
+EM_BSIZE = BSIZE
/****************************************************************
* VAX 11 Back end table. *
****************************************************************/
REGISTERS:
+AP = ("ap",4),ArgumentPointer.
LB = ("fp",4),LocaLBase.
-R0 = ("r0",4),REG,RRET.
+R0 = ("r0",4),REG.
R1 = ("r1",4),REG.
R2 = ("r2",4),REG.
R3 = ("r3",4),REG.
RA = ("r10",4),REG.
RB = ("r11",4),REG.
#endif REGVARS
-QR0 = ("r0",8,R0,R1),QREG,QRET.
+QR0 = ("r0",8,R0,R1),QREG.
QR2 = ("r2",8,R2,R3),QREG.
+#ifndef REGVARS
QR4 = ("r4",8,R4,R5),QREG.
QR6 = ("r6",8,R6,R7),QREG.
QR8 = ("r8",8,R8,R9),QREG.
QRA = ("r10",8,RA,RB),QREG.
+#endif REGVARS
QR1 = ("r1",8,R1,R2),QREG.
+#ifndef REGVARS
QR3 = ("r3",8,R3,R4),QREG.
QR5 = ("r5",8,R5,R6),QREG.
QR7 = ("r7",8,R7,R8),QREG.
QR9 = ("r9",8,R9,RA),QREG.
+#endif REGVARS
TOKENS:
CONST4 = {INT num;} 4 cost=(4,3) "$%[num]"
CONST8 = {STRING ind;} 8 cost=(8,6) "$%[ind]"
FCONST8 = {INT num;} 8 cost=(8,6) "$0f%[num].0"
-LOCAL1 = {INT num,size;} 4 cost=(2,6) "%[num](fp)"
-LOCAL2 = {INT num,size;} 4 cost=(2,6) "%[num](fp)"
-LOCAL4 = {INT num,size;} 4 cost=(2,6) "%[num](fp)"
-LOCAL8 = {INT num,size;} 8 cost=(2,6) "%[num](fp)"
-ADDR_LOCAL = {INT num;} 4 cost=(2,6) "%[num](fp)"
+LOCAL1 = {REGISTER reg; INT num,size;} 4 cost=(2,6) "%[num](%[reg])"
+LOCAL2 = {REGISTER reg; INT num,size;} 4 cost=(2,6) "%[num](%[reg])"
+LOCAL4 = {REGISTER reg; INT num,size;} 4 cost=(2,6) "%[num](%[reg])"
+LOCAL8 = {REGISTER reg; INT num,size;} 8 cost=(2,9) "%[num](%[reg])"
+ADDR_LOCAL = {REGISTER reg; INT num;} 4 cost=(2,6) "%[num](%[reg])"
ADDR_EXTERNAL = {STRING ind;} 4 cost=(4,6) "%[ind]"
EXTERNAL1 = {STRING ind;} 4 cost=(4,6) "%[ind]"
EXTERNAL2 = {STRING ind;} 4 cost=(4,6) "%[ind]"
#ifdef REGVARS
+ RREG + reginc4 + regdec4
#endif REGVARS
-noaddr4 = source4 - REG - displ4 - EXTERNAL4
+dups4 = CONST + regdef1 + displ1 + LOCAL1 +
+ REG + regdef2 + displ2 + LOCAL2 +
+ RREG + regdef4 + displ4 + LOCAL4 + DOUBLE
source8 = QREG + regdef8 + displ8 + displdef8 +
EXTERNAL8 + reldef8 + CONST8 + LOCAL8
+ extind8 + displind8 + extdefind8 + displdefind8
source1or2 = source1 + source2
source1or2or4 = source1or2 + source4
source2or4 = source2 + source4
-registers = QREG + REG
nonexist1 = adispl + ADDR_EXTERNAL + ADDR_LOCAL
aextind = aextind2 + aextind4 + aextind8
adisplind = adisplind1 + adisplind2 + adisplind4 + adisplind8
regch8 = reginc8 + regdec8
regch = regch4 + regch8
#endif REGVARS
-displs = displ1 + displ2 + displ4 + displ8
- + regdef1 + regdef2 + regdef4 + regdef8
+displs = displ1 + displ2 + displ4 + displ8 +
+ regdef1 + regdef2 + regdef4 + regdef8
#ifdef REGVARS
+ regch
#endif REGVARS
externals = EXTERNALS + displaced + extinds
extandloc = externals + LOCALS
#ifdef REGVARS
-reg4 = REG + RREG
+reg4 = REG + RREG + LocaLBase
reg8 = QREG
#else REGVARS
reg4 = REG
reg8 = QREG
#endif REGVARS
sreg4 = REG * SCRATCH
-nosreg4 = source4 - sreg4
sreg8 = QREG * SCRATCH
-nosreg8 = source8 - sreg8
bigsource4 = source1or2or4 + nonexist
bigsource8 = source8 + FCONST8
all = bigsource4 + bigsource8
+scr = ALL - (EXTERNALS + LOCALS + ADDR_LOCAL + ADDR_EXTERNAL + CONST
+ + DOUBLE)
#ifdef REGVARS
#define REMEXTANDLOC remove(externals) remove(LOCALS,inreg(%[num])==0)
#define REMREG(x) remove(regch,%[reg]==regvar(x))
* Group 1 : Load instructions *
********************************/
-loc $1>=0 && $1<256 | | | {CONST1, $1} | |
-loc $1>=256 && $1<65536 | | | {CONST2, $1} | |
-loc | | | {CONST4, $1} | |
-loc loc $1==0 && $2==0 | | | {FCONST8, 0} | |
+loc $1>=0 && $1<256 | | | {CONST1,$1} | |
+loc $1>=256 && $1<65536 | | | {CONST2,$1} | |
+loc | | | {CONST4,$1} | |
+loc loc $1==0 && $2==0 | | | {FCONST8,0} | |
ldc | | | {CONST8,$1} | |
#ifdef REGVARS
lol inreg($1)==2 | | | regvar($1) | |
#endif REGVARS
-lol | | | {LOCAL4, $1, 4} | |
-loe | | | {EXTERNAL4, $1} | |
+lol $1 < 0 | | | {LOCAL4,LB,$1,4} | |
+lol $1 >= 0 | | | {LOCAL4,AP,$1,4} | |
+loe | | | {EXTERNAL4,$1} | |
#ifdef REGVARS
lil inreg($1)==2 | | REMREG($1) | {regdef4,regvar($1)} | |
#endif REGVARS
-lil | | | {displdef4,LB, tostring($1)} | |
+lil $1 < 0 | | | {displdef4,LB,tostring($1)} | |
+lil $1 >= 0 | | | {displdef4,AP,tostring($1)} | |
lof | | | | adp $1 loi 4 |
-lal | | | {ADDR_LOCAL, $1} | |
-lae | | | {ADDR_EXTERNAL, $1} | |
+lal $1 < 0 | | | {ADDR_LOCAL,LB,$1} | |
+lal $1 >= 0 | | | {ADDR_LOCAL,AP,$1} | |
+lae | | | {ADDR_EXTERNAL,$1} | |
lxl $1==0 | | | LB | |
-lxl $1>0 | | remove(ALL)
+lxl $1==1 | | | {LOCAL4,AP,BSIZE,4} | |
+lxl $1 > 1 | | remove(scr)
move({CONST4,$1},R0)
"jsb\t.lxl"
erase(R0) | R0 | |
-lxa | | remove(ALL)
+lxa $1==0 | | | {ADDR_LOCAL,AP,BSIZE} | |
+lxa $1==1 | | | {LOCAL4,AP,BSIZE,4} | lpb |
+lxa $1 > 1 | | remove(scr)
move({CONST4,$1},R0)
"jsb\t.lxa"
erase(R0) | R0 | |
-loi $1==1 | NC adispl |
- | {displ1,%[1.reg],%[1.ind]} | |
-... | reg4 | | {regdef1,%[1]} | |
-... | NC ADDR_LOCAL | | {LOCAL1, %[1.num],1} | |
-... | displ4 |
- | {displdef1,%[1.reg],%[1.ind]} | |
-... | NC LOCAL4 |
- | {displdef1, LB, tostring(%[1.num])} | |
-... | NC ADDR_EXTERNAL |
- | {EXTERNAL1,%[1.ind]} | |
-... | NC EXTERNAL4 |
- | {reldef1,%[1.ind]} | |
+loi $1==1 | NC adispl | | {displ1,%[1.reg],%[1.ind]} | |
+... | NC ADDR_LOCAL | | {LOCAL1,%[1.reg],%[1.num],1} | |
+... | NC LOCAL4 | | {displdef1,%[1.reg],tostring(%[1.num])} | |
+... | NC regdef4 | | {displdef1,%[1.reg],"0"} | |
+... | NC displ4 | | {displdef1,%[1.reg],%[1.ind]} | |
+... | NC ADDR_EXTERNAL | | {EXTERNAL1,%[1.ind]} | |
+... | NC EXTERNAL4 | | {reldef1,%[1.ind]} | |
... | NC adisplind1 |
| {displind1,%[1.ireg],%[1.reg],%[1.ind]} | |
... | NC aextdefind1 |
| {extdefind1,%[1.ireg],%[1.ind]} | |
... | NC adispldefind1 |
| {displdefind1,%[1.ireg],%[1.reg],%[1.ind]} | |
-loi $1==2 | NC adispl |
- | {displ2,%[1.reg],%[1.ind]} | |
-... | reg4 | | {regdef2,%[1]} | |
-... | NC ADDR_LOCAL | | {LOCAL2, %[1.num],2} | |
-... | displ4 |
- | {displdef2,%[1.reg],%[1.ind]} | |
-... | NC ADDR_EXTERNAL |
- | {EXTERNAL2,%[1.ind]} | |
-... | NC EXTERNAL4 |
- | {reldef2,%[1.ind]} | |
-... | NC aextind2 |
- | {extind2,%[1.ireg],%[1.ind]} | |
+... | reg4 | | {regdef1,%[1]} | |
+loi $1==2 | NC adispl | | {displ2,%[1.reg],%[1.ind]} | |
+... | NC ADDR_LOCAL | | {LOCAL2,%[1.reg],%[1.num],2} | |
+... | NC LOCAL4 | | {displdef2,%[1.reg],tostring(%[1.num])} | |
+... | NC regdef4 | | {displdef2,%[1.reg],"0"} | |
+... | NC displ4 | | {displdef2,%[1.reg],%[1.ind]} | |
+... | NC ADDR_EXTERNAL | | {EXTERNAL2,%[1.ind]} | |
+... | NC EXTERNAL4 | | {reldef2,%[1.ind]} | |
+... | NC aextind2 | | {extind2,%[1.ireg],%[1.ind]} | |
... | NC adisplind2 |
| {displind2,%[1.ireg],%[1.reg],%[1.ind]} | |
... | NC aextdefind2 |
| {extdefind2,%[1.ireg],%[1.ind]} | |
... | NC adispldefind2 |
| {displdefind2,%[1.ireg],%[1.reg],%[1.ind]} | |
-loi $1==4 | NC adispl |
- | {displ4,%[1.reg],%[1.ind]} | |
-... | reg4 | | {regdef4,%[1]} | |
-... | NC ADDR_LOCAL | | {LOCAL4, %[1.num],4} | |
-... | displ4 |
- | {displdef4,%[1.reg],%[1.ind]} | |
-... | NC ADDR_EXTERNAL |
- | {EXTERNAL4,%[1.ind]} | |
-... | NC EXTERNAL4 |
- | {reldef4,%[1.ind]} | |
-... | NC aextind4 |
- | {extind4,%[1.ireg],%[1.ind]} | |
+... | reg4 | | {regdef2,%[1]} | |
+loi $1==4 | NC adispl | | {displ4,%[1.reg],%[1.ind]} | |
+... | NC ADDR_LOCAL | | {LOCAL4,%[1.reg],%[1.num],4} | |
+... | NC LOCAL4 | | {displdef4,%[1.reg],tostring(%[1.num])} | |
+... | NC regdef4 | | {displdef4,%[1.reg],"0"} | |
+... | NC displ4 | | {displdef4,%[1.reg],%[1.ind]} | |
+... | NC ADDR_EXTERNAL | | {EXTERNAL4,%[1.ind]} | |
+... | NC EXTERNAL4 | | {reldef4,%[1.ind]} | |
+... | NC aextind4 | | {extind4,%[1.ireg],%[1.ind]} | |
... | NC adisplind4 |
| {displind4,%[1.ireg],%[1.reg],%[1.ind]} | |
... | NC aextdefind4 |
| {extdefind4,%[1.ireg],%[1.ind]} | |
... | NC adispldefind4 |
| {displdefind4,%[1.ireg],%[1.reg],%[1.ind]} | |
-loi $1==8 | NC adispl |
- | {displ8,%[1.reg],%[1.ind]} | |
-... | reg4 | | {regdef8,%[1]} | |
-... | NC ADDR_LOCAL | | {LOCAL8, %[1.num],8} | |
-... | displ4 |
- | {displdef8,%[1.reg],%[1.ind]} | |
-... | NC ADDR_EXTERNAL |
- | {EXTERNAL8,%[1.ind]} | |
-... | NC EXTERNAL4 |
- | {reldef8,%[1.ind]} | |
-... | NC aextind8 |
- | {extind8,%[1.ireg],%[1.ind]} | |
+... | reg4 | | {regdef4,%[1]} | |
+loi $1==8 | NC adispl | | {displ8,%[1.reg],%[1.ind]} | |
+... | NC ADDR_LOCAL | | {LOCAL8,%[1.reg],%[1.num],8} | |
+... | NC LOCAL4 | | {displdef8,%[1.reg],tostring(%[1.num])} | |
+... | NC regdef4 | | {displdef8,%[1.reg],"0"} | |
+... | NC displ4 | | {displdef8,%[1.reg],%[1.ind]} | |
+... | NC ADDR_EXTERNAL | | {EXTERNAL8,%[1.ind]} | |
+... | NC EXTERNAL4 | | {reldef8,%[1.ind]} | |
+... | NC aextind8 | | {extind8,%[1.ireg],%[1.ind]} | |
... | NC adisplind8 |
| {displind8,%[1.ireg],%[1.reg],%[1.ind]} | |
... | NC aextdefind8 |
| {extdefind8,%[1.ireg],%[1.ind]} | |
... | NC adispldefind8 |
| {displdefind8,%[1.ireg],%[1.reg],%[1.ind]} | |
+... | reg4 | | {regdef8,%[1]} | |
loi $1>8 && $1<=16
- | reg4 | | {displ8,%[1],tostring($1-8)} %[1] | loi $1-8 |
... | NC ADDR_EXTERNAL |
| {EXTERNAL8,%[1.ind]+"+"+tostring($1-8)}
%[1] | loi $1-8 |
... | NC ADDR_LOCAL |
- | {LOCAL8,%[1.num]+$1-8,8} %[1] | loi $1-8 |
+ | {LOCAL8,%[1.reg],%[1.num]+$1-8,8} %[1]
+ | loi $1-8 |
+ | reg4 | | {displ8,%[1],tostring($1-8)} %[1] | loi $1-8 |
loi | sreg4 |
remove(ALL)
allocate(REG={CONST4,$1/4})
"sobgtr\t%[a],.-3"
#endif
erase(%[a]) | | |
-los $1==4 | | remove(ALL)
+los $1==4 | STACK |
move({CONST1,4},R0)
"jsb\t.los"
erase(R0) | | |
move(%[1],R0)
"jsb\t.los"
erase(R0) | | |
-ldl | | | {LOCAL8, $1, 8} | |
-lde | | | {EXTERNAL8, $1} | |
+ldl $1<0 | | | {LOCAL8,LB,$1,8} | |
+ldl $1>=0 | | | {LOCAL8,AP,$1,8} | |
+lde | | | {EXTERNAL8,$1} | |
ldf | | | | adp $1 loi 8 |
-lpi | | | {ADDR_EXTERNAL, $1} | |
+lpi | | | {ADDR_EXTERNAL,$1} | |
/********************************
* Group 2 : Store instructions *
stl inreg($1)==2 | NC bigsource4 |
remove(regvar($1))
move(%[1],regvar($1)) | | |
-... | | remove(ALL)
+... | STACK |
"movl\t(sp)+,%(regvar($1)%)" | | | (3,7)
#endif REGVARS
-stl | NC bigsource4 |
+stl $1 < 0 | NC bigsource4 |
remove(displaced)
- remove(LOCALS, %[num] <= $1+3 && %[num]+%[size] > $1)
- move(%[1], {LOCAL4,$1, 4}) | | |
-... | | remove(ALL)
+ remove(LOCALS,%[num] <= $1+3 && %[num]+%[size] > $1)
+ move(%[1],{LOCAL4,LB,$1,4}) | | |
+... | STACK |
"movl\t(sp)+,$1(fp)" | | | (5,14)
+stl $1 >= 0 | NC bigsource4 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $1+3 && %[num]+%[size] > $1)
+ move(%[1],{LOCAL4,AP,$1,4}) | | |
+... | STACK |
+ "movl\t(sp)+,$1(ap)" | | | (5,14)
ste | NC bigsource4 |
remove(externals)
- move(%[1],{EXTERNAL4, $1}) | | |
-... | | remove(ALL)
+ move(%[1],{EXTERNAL4,$1}) | | |
+... | STACK |
"movl\t(sp)+,$1" | | | (7,14)
#ifdef REGVARS
sil inreg($1)==2 | NC bigsource4 |
REMEXTANDLOC
move(%[1],{regdef4,regvar($1)}) | | |
-... | | remove(ALL)
+... | STACK |
"movl\t(sp)+,(%(regvar($1)%))" | | | (3,10)
#endif REGVARS
-sil | NC bigsource4 |
+sil $1 < 0 | NC bigsource4 |
REMEXTANDLOC
- move(%[1],{displdef4,LB, tostring($1)}) | | |
-... | | remove(ALL)
+ move(%[1],{displdef4,LB,tostring($1)}) | | |
+... | STACK |
"movl\t(sp)+,*$1(fp)" | | | (5,17)
+sil $1 >= 0 | NC bigsource4 |
+ REMEXTANDLOC
+ move(%[1],{displdef4,AP,tostring($1)}) | | |
+... | STACK |
+ "movl\t(sp)+,*$1(ap)" | | | (5,17)
stf | | | | adp $1 sti 4 |
/*** C-problem: f(c) char c; {
- write(1, &c, 1);
+ write(1,&c,1);
}
You don't know where the character is put in the word,
so the CEM-compiler generates: (shorts analogously)
remove(displaced)
remove(LOCALS,
%[num]<=%[1.num] && %[num]+%[size]>%[1.num])
- move(%[2],{LOCAL1,%[1.num],1}) | | |
-... | NC ADDR_LOCAL STACK |
- "cvtlb\t(sp)+,%[1]" | | | (3,7)+%[1]
-... | reg4 source1or2or4 |
- REMEXTANDLOC
- move(%[2],{regdef1,%[1]}) | | |
-... | displ4 source1or2or4 |
+ move(%[2],{LOCAL1,%[1.reg],%[1.num],1}) | | |
+... | NC displ4 source1or2or4 |
REMEXTANDLOC
move(%[2],{displdef1,%[1.reg],%[1.ind]}) | | |
... | NC ADDR_EXTERNAL source1or2or4 |
REMEXTANDLOC
move(%[2],{displdefind1,%[1.ireg],%[1.reg],%[1.ind]})
| | |
+... | reg4 source1or2or4 |
+ REMEXTANDLOC
+ move(%[2],{regdef1,%[1]}) | | |
+... | NC nonexist1+aind1 STACK |
+ "cvtlb\t(sp)+,%[1]" | | | (3,7)+%[1]
sti $1==2 | NC adispl source1or2or4 |
REMEXTANDLOC
move(%[2],{displ2,%[1.reg],%[1.ind]}) | | |
-... | reg4 source1or2or4 |
- REMEXTANDLOC
- move(%[2],{regdef2,%[1]}) | | |
... | NC ADDR_LOCAL source1or2or4 |
remove(displaced)
remove(LOCALS,
%[num]<=%[1.num] && %[num]+%[size]>%[1.num])
- move(%[2],{LOCAL2,%[1.num],2}) | | |
-... | displ4 source1or2or4 |
+ move(%[2],{LOCAL2,%[1.reg],%[1.num],2}) | | |
+... | NC displ4 source1or2or4 |
REMEXTANDLOC
move(%[2],{displdef2,%[1.reg],%[1.ind]}) | | |
... | NC ADDR_EXTERNAL source1or2or4 |
REMEXTANDLOC
move(%[2],{displdefind2,%[1.ireg],%[1.reg],%[1.ind]})
| | |
+... | reg4 source1or2or4 |
+ REMEXTANDLOC
+ move(%[2],{regdef2,%[1]}) | | |
sti $1==4 | NC adispl bigsource4 |
REMEXTANDLOC
move(%[2],{displ4,%[1.reg],%[1.ind]}) | | |
... | NC ADDR_LOCAL | | | stl %[1.num] |
... | NC ADDR_EXTERNAL | | | ste %[1.ind] |
-... | adispl |
- remove(ALL)
- "movl\t(sp)+,%[1]" | | | (3,7)+%[1]
-... | reg4 bigsource4 |
+... | NC LOCAL4 bigsource4 |
REMEXTANDLOC
- move(%[2],{regdef4,%[1]}) | | |
-... | displ4 bigsource4 |
+ move(%[2],{displdef4,%[1.reg],tostring(%[1.num])} | | |
+... | NC regdef4 bigsource4 |
+ REMEXTANDLOC
+ move(%[2],{displdef4,%[1.reg],"0"} | | |
+... | NC displ4 bigsource4 |
REMEXTANDLOC
move(%[2],{displdef4,%[1.reg],%[1.ind]}) | | |
... | NC EXTERNAL4 bigsource4 |
REMEXTANDLOC
move(%[2],{displdefind4,%[1.ireg],%[1.reg],%[1.ind]})
| | |
+... | NC nonexist1+aind4 STACK |
+ "movl\t(sp)+,%[1]" | | | (3,7)+%[1]
+... | reg4 bigsource4 |
+ REMEXTANDLOC
+ move(%[2],{regdef4,%[1]}) | | |
+... | reg4 STACK |
+ "movl\t(sp)+,(%[1])" | | | (3,10)
sti $1==8 | NC adispl bigsource8 |
REMEXTANDLOC
move(%[2],{displ8,%[1.reg],%[1.ind]}) | | |
... | NC ADDR_LOCAL | | | sdl %[1.num] |
... | NC ADDR_EXTERNAL | | | sde %[1.ind] |
-... | reg4 bigsource8 |
- REMEXTANDLOC
- move(%[2],{regdef8,%[1]}) | | |
-... | displ4 bigsource8 |
+... | NC displ4 bigsource8 |
REMEXTANDLOC
move(%[2],{displdef8,%[1.reg],%[1.ind]}) | | |
+... | NC LOCAL4 bigsource8 |
+ REMEXTANDLOC
+ move(%[2],{displdef8,%[1.reg],tostring(%[1.num])} | | |
+... | NC regdef4 bigsource8 |
+ REMEXTANDLOC
+ move(%[2],{displdef8,%[1.reg],"0"} | | |
... | NC EXTERNAL4 bigsource8 |
REMEXTANDLOC
move(%[2],{reldef8,%[1.ind]}) | | |
REMEXTANDLOC
move(%[2],{displdefind8,%[1.ireg],%[1.reg],%[1.ind]})
| | |
+... | reg4 bigsource8 |
+ REMEXTANDLOC
+ move(%[2],{regdef8,%[1]}) | | |
sti | sreg4 |
remove(ALL)
- allocate(REG={CONST4, $1/4})
+ allocate(REG={CONST4,$1/4})
#ifdef LOCLABS
"1:\nmovl\t(sp)+,(%[1])+"
"sobgtr\t%[a],1b"
move(%[1],R0)
"jsb\t.sts"
erase(R0) | | |
-sdl | NC bigsource8 |
+sdl $1 < 0 | NC bigsource8 |
remove(displaced)
- remove(LOCALS, %[num]<=$1+7 && %[num]+%[size]>$1)
- move(%[1],{LOCAL8,$1, 8}) | | |
+ remove(LOCALS,%[num]<=$1+7 && %[num]+%[size]>$1)
+ move(%[1],{LOCAL8,LB,$1,8}) | | |
... | NC bigsource4 bigsource4 |
remove(displaced)
- remove(LOCALS, %[num]<=$1+7 && %[num]+%[size]>$1)
- move(%[1], {LOCAL4,$1,4})
- move(%[2], {LOCAL4,$1+4,4}) | | |
-... | | remove(ALL)
+ remove(LOCALS,%[num]<=$1+7 && %[num]+%[size]>$1)
+ move(%[1],{LOCAL4,LB,$1,4})
+ move(%[2],{LOCAL4,LB,$1+4,4}) | | |
+... | STACK |
"movq\t(sp)+,$1(fp)" | | | (5,14)
+sdl $1 >= 0 | NC bigsource8 |
+ remove(displaced)
+ remove(LOCALS,%[num]<=$1+7 && %[num]+%[size]>$1)
+ move(%[1],{LOCAL8,AP,$1,8}) | | |
+... | NC bigsource4 bigsource4 |
+ remove(displaced)
+ remove(LOCALS,%[num]<=$1+7 && %[num]+%[size]>$1)
+ move(%[1],{LOCAL4,AP,$1,4})
+ move(%[2],{LOCAL4,AP,$1+4,4}) | | |
+... | STACK |
+ "movq\t(sp)+,$1(ap)" | | | (5,14)
sde | NC bigsource8 |
remove(externals)
- move(%[1], {EXTERNAL8, $1}) | | |
+ move(%[1],{EXTERNAL8,$1}) | | |
... | bigsource4 bigsource4 |
remove(externals)
- move(%[1], {EXTERNAL4, $1})
- move(%[2], {EXTERNAL4, $1+"+4"}) | | |
-... | | remove(ALL)
+ move(%[1],{EXTERNAL4,$1})
+ move(%[2],{EXTERNAL4,$1+"+4"}) | | |
+... | STACK |
"movq\t(sp)+,$1" | | | (7,14)
sdf | | | | adp $1 sti 8 |
"addl2\t%[2],%[1]"
erase(%[1])
setcc(%[1]) | %[1] | | (3,4) + %[2]
-... | NC nosreg4 nosreg4 |
+... | source4 source4 |
allocate(%[1],%[2],REG)
"addl3\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,4)+%[1]+%[2]
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-adi stl $1==4 | source4 source4 |
+adi stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, %[num]<=$2+3 && %[num]+%[size]>$2)
+ remove(LOCALS,%[num]<=$2+3 && %[num]+%[size]>$2)
"addl3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+adi stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,%[num]<=$2+3 && %[num]+%[size]>$2)
+ "addl3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
adi sil $1==4 && inreg($2)==2
| source4 source4 |
"addl3\t%[1],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-adi sil $1==4 | source4 source4 |
+adi sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"addl3\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+adi sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "addl3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
adi ste $1==4 | source4 source4 |
remove(externals)
"addl3\t%[1],%[2],$2"
"subl2\t%[1],%[2]"
erase(%[2])
setcc(%[2]) | %[2] | | (3,4) + %[1]
-... | NC source4 nosreg4 |
+... | source4 source4 |
allocate(%[1],%[2],REG)
"subl3\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,4)+%[1]+%[2]
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-sbi stl $1==4 | source4 source4 |
+sbi stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"subl3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+sbi stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "subl3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
sbi sil $1==4 && inreg($2)==2
| source4 source4 |
"subl3\t%[1],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-sbi sil $1==4 | source4 source4 |
+sbi sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"subl3\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+sbi sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "subl3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
sbi ste $1==4 | source4 source4 |
remove(externals)
"subl3\t%[1],%[2],$2"
"mull2\t%[2],%[1]"
erase(%[1])
setcc(%[1]) | %[1] | | (3,16) + %[2]
-... | NC nosreg4 nosreg4 |
+... | source4 source4 |
allocate(%[1],%[2],REG)
"mull3\t%[1],%[2],%[a]"
- setcc(%[a]) | %[a] | | (4,16)+%[1]+%[2]
+ setcc(%[a]) | %[a] | | (4,16)+%[1]+%[2]
#ifdef REGVARS
mli stl $1==4 && inreg($2)==2
| source4 source4 |
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-mli stl $1==4 | source4 source4 |
+mli stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"mull3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+mli stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "mull3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
mli sil $1==4 && inreg($2)==2
| source4 source4 |
"mull3\t%[1],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-mli sil $1==4 | source4 source4 |
+mli sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"mull3\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+mli sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "mull3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
mli ste $1==4 | source4 source4 |
remove(externals)
"mull3\t%[1],%[2],$2"
"divl2\t%[1],%[2]"
erase(%[2])
setcc(%[2]) | %[2] | | (3,98) + %[1]
-... | NC source4 nosreg4 |
+... | source4 source4 |
allocate(%[1],%[2],REG)
"divl3\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,98)+%[1]+%[2]
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-dvi stl $1==4 | source4 source4 |
+dvi stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"divl3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+dvi stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "divl3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
dvi sil $1==4 && inreg($2)==2
| source4 source4 |
"divl3\t%[1],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-dvi sil $1==4 | source4 source4 |
+dvi sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"divl3\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+dvi sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "divl3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
dvi ste $1==4 | source4 source4 |
remove(externals)
"divl3\t%[1],%[2],$2"
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-rmi stl $1==4 | source4 source4 |
+rmi stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num]<=$2+3 && %[num]+%[size]>$2))
+ remove(LOCALS,(%[num]<=$2+3 && %[num]+%[size]>$2))
allocate(REG)
"divl3\t%[1],%[2],%[a]"
"mull2\t%[1],%[a]"
"subl3\t%[a],%[2],$2(fp)"
- setcc({LOCAL4, $2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+rmi stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num]<=$2+3 && %[num]+%[size]>$2))
+ allocate(REG)
+ "divl3\t%[1],%[2],%[a]"
+ "mull2\t%[1],%[a]"
+ "subl3\t%[a],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
rmi sil $1==4 && inreg($2)==2
| source4 source4 |
"subl3\t%[a],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-rmi sil $1==4 | source4 source4 |
+rmi sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
allocate(REG)
"divl3\t%[1],%[2],%[a]"
"mull2\t%[1],%[a]"
"subl3\t%[a],%[2],*$2(fp)"
- setcc({displdef4, LB, tostring($2)}) | | |
+ setcc({displdef4,LB,tostring($2)}) | | |
+rmi sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ allocate(REG)
+ "divl3\t%[1],%[2],%[a]"
+ "mull2\t%[1],%[a]"
+ "subl3\t%[a],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
rmi ste $1==4 | source4 source4 |
remove(externals)
allocate(REG)
"divl3\t%[1],%[2],%[a]"
"mull2\t%[1],%[a]"
"subl3\t%[a],%[2],$2"
- setcc({EXTERNAL4, $2}) | | |
+ setcc({EXTERNAL4,$2}) | | |
rmi !defined($1) | source4 |
remove(ALL)
move(%[1],R0)
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-ngi stl $1==4 | source4 |
+ngi stl $1==4 && $2<0
+ | source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"mnegl\t%[1],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+ngi stl $1==4 && $2>=0
+ | source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "mnegl\t%[1],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
ngi sil $1==4 && inreg($2)==2
| source4 |
"mnegl\t%[1],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-ngi sil $1==4 | source4 |
+ngi sil $1==4 && $2<0
+ | source4 |
REMEXTANDLOC
"mnegl\t%[1],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+ngi sil $1==4 && $2>=0
+ | source4 |
+ REMEXTANDLOC
+ "mnegl\t%[1],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
ngi ste $1==4 | source4 |
remove(externals)
"mnegl\t%[1],$2"
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-sli stl $1==4 | source4 source4 |
+sli stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"ashl\t%[1],%[2],$2(fp)"
- setcc({LOCAL4, $2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+sli stl $1==4 && $2>=0
+ | source4 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 |
"ashl\t%[1],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-sli sil $1==4 | source4 source4 |
+sli sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"ashl\t%[1],%[2],*$2(fp)"
- setcc({displdef4, LB, tostring($2)}) | | |
+ setcc({displdef4,LB,tostring($2)}) | | |
+sli sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "ashl\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
sli ste $1==4 | source4 source4 |
remove(externals)
"ashl\t%[1],%[2],$2"
- setcc({EXTERNAL4, $2}) | | | (8,10)+%[1]+%[2]
+ setcc({EXTERNAL4,$2}) | | | (8,10)+%[1]+%[2]
sli !defined($1) | source4 |
remove(ALL)
move(%[1],R0)
"jsb\t.sli"
erase(R0) | | |
-sri $1==4 | source4-CONST source4 |
+sri $1==4 | source4 source4 |
allocate(%[1],REG)
"mnegl\t%[1],%[a]"
"ashl\t%[a],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,4)+%[1]+%[2]
#ifdef REGVARS
sri stl $1==4 && inreg($2)==2
- | source4-CONST source4 |
+ | source4 source4 |
remove(regvar($2))
- allocate(%[1], REG)
+ allocate(%[1],REG)
"mnegl\t%[1],%[a]"
"ashl\t%[a],%[2],%(regvar($2)%)"
erase(regvar($2))
setcc(regvar($2)) | | | (9,14)+%[1]+%[2]
-... | CONST source4 |
+... | NC CONST source4 |
remove(regvar($2))
"ashl\t$$%(0-%[1.num]%),%[2],%(regvar($2)%)"
erase(regvar($2))
setcc(regvar($2)) | | | (6,10)+%[1]+%[2]
#endif REGVARS
-sri stl $1==4 | source4-CONST source4 |
+sri stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
- allocate(%[1], REG)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ allocate(%[1],REG)
"mnegl\t%[1],%[a]"
"ashl\t%[a],%[2],$2(fp)"
- setcc({LOCAL4, $2, 4}) | | | (9,11)+%[1]+%[2]
-... | CONST source4 |
+ setcc({LOCAL4,LB,$2,4}) | | | (9,11)+%[1]+%[2]
+... | NC CONST source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"ashl\t$$%(0-%[1.num]%),%[2],$2(fp)"
- setcc({LOCAL4, $2, 4}) | | | (6,7)+%[1]+%[2]
+ setcc({LOCAL4,LB,$2,4}) | | | (6,7)+%[1]+%[2]
+sri stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ allocate(%[1],REG)
+ "mnegl\t%[1],%[a]"
+ "ashl\t%[a],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | | (9,11)+%[1]+%[2]
+... | NC CONST source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "ashl\t$$%(0-%[1.num]%),%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | | (6,7)+%[1]+%[2]
#ifdef REGVARS
sri sil $1==4 && inreg($2)==2
- | source4-CONST source4 |
+ | source4 source4 |
REMEXTANDLOC
- allocate(%[1], REG)
+ allocate(%[1],REG)
"mnegl\t%[1],%[a]"
"ashl\t%[a],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | | (9,14)+%[1]+%[2]
-... | CONST source4 |
+... | NC CONST source4 |
REMEXTANDLOC
"ashl\t$$%(0-%[1.num]%),%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | | (6,10)+%[1]+%[2]
#endif REGVARS
-sri sil $1==4 | source4-CONST source4 |
+sri sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
- allocate(%[1], REG)
+ allocate(%[1],REG)
"mnegl\t%[1],%[a]"
"ashl\t%[a],%[2],*$2(fp)"
- setcc({displdef4, LB, tostring($2)})
+ setcc({displdef4,LB,tostring($2)})
| | | (9,17)+%[1]+%[2]
-... | CONST source4 |
+... | NC CONST source4 |
REMEXTANDLOC
"ashl\t$$%(0-%[1.num]%),%[2],*$2(fp)"
- setcc({displdef4, LB, tostring($2)})
+ setcc({displdef4,LB,tostring($2)})
| | | (6,13)+%[1]+%[2]
-sri ste $1==4 | source4-CONST source4 |
+sri sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ allocate(%[1],REG)
+ "mnegl\t%[1],%[a]"
+ "ashl\t%[a],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)})
+ | | | (9,17)+%[1]+%[2]
+... | NC CONST source4 |
+ REMEXTANDLOC
+ "ashl\t$$%(0-%[1.num]%),%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)})
+ | | | (6,13)+%[1]+%[2]
+sri ste $1==4 | source4 source4 |
remove(externals)
- allocate(%[1], REG)
+ allocate(%[1],REG)
"mnegl\t%[1],%[a]"
"ashl\t%[a],%[2],$2"
- setcc({EXTERNAL4, $2}) | | | (11,14)+%[1]+%[2]
-... | CONST source4 |
+ setcc({EXTERNAL4,$2}) | | | (11,14)+%[1]+%[2]
+... | NC CONST source4 |
remove(externals)
"ashl\t$$%(0-%[1.num]%),%[2],$2"
- setcc({EXTERNAL4, $2}) | | | (8,10)+%[1]+%[2]
+ setcc({EXTERNAL4,$2}) | | | (8,10)+%[1]+%[2]
sri !defined($1) | source4 |
remove(ALL)
move(%[1],R0)
adu | | | | adi $1 |
sbu | | | | sbi $1 |
mlu | | | | mli $1 |
-dvu $1==4 | | remove(ALL)
+dvu $1==4 | STACK |
"jsb\t.dvu4" | R0 | |
dvu !defined($1) | source1or2or4 |
remove(ALL)
move(%[1],R0)
"jsb\t.dvu"
erase(R0) | | |
-rmu $1==4 | | remove(ALL)
+rmu $1==4 | STACK |
"jsb\t.rmu4" | R0 | |
rmu !defined($1) | source1or2or4 |
remove(ALL)
"jsb\t.rmu"
erase(R0) | | |
slu | | | | sli $1 |
-sru $1==4 | source4-CONST source4 |
+sru $1==4 | source4 source4 |
allocate(%[1],REG,QREG)
"mnegl\t%[1],%[a]"
move(%[2],%[b.1])
* Group 5 : Floating point arithmetic *
****************************************/
-adf $1==4 | source4 sreg4 |
+adf $1==4 | source4 source4 |
+ allocate(%[1],%[2],REG)
+ "addf3\t%[1],%[2],%[a]"
+ setcc(%[a]) | %[a] | | (4,8)+%[1]+%[2]
+#ifdef FLOAT4
+... | source4 sreg4 |
"addf2\t%[1],%[2]"
erase(%[2])
setcc(%[2]) | %[2] | | (3,8) + %[1]
"addf2\t%[2],%[1]"
erase(%[1])
setcc(%[1]) | %[1] | | (3,8) + %[2]
-... | NC nosreg4 nosreg4 |
- allocate(%[1],%[2],REG)
- "addf3\t%[1],%[2],%[a]"
- setcc(%[a]) | %[a] | | (4,8)+%[1]+%[2]
-#ifdef FLOAT4
-adf stl $1==4 | source4 source4 |
+#ifdef REGVARS
+adf stl $1==4 && inreg($2)==2
+ | source4 source4 |
+ remove(regvar($2))
+ "addf3\t%[1],%[2],%(regvar($2)%)"
+ erase(regvar($2)) | | |
+#endif REGVARS
+adf stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+3 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
"addf3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
-adf sil $1==4 | source4 source4 |
+ setcc({LOCAL4,LB,$2,4}) | | |
+adf stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
+ "addf3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
+#ifdef REGVARS
+adf sil $1==4 && inreg($2)==2
+ | source4 source4 |
+ remove(regvar($2))
+ "addf3\t%[1],%[2],(%(regvar($2)%))"
+ setcc(regvar($2)) | | |
+#endif REGVARS
+adf sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"addf3\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+adf sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "addf3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
adf ste $1==4 | source4 source4 |
remove(externals)
"addf3\t%[1],%[2],$2"
setcc({EXTERNAL4,$2}) | | |
-#endif
-adf $1==8 | source8 sreg8 |
+#endif FLOAT4
+adf $1==8 | source8 source8 |
+ allocate(%[1],%[2],QREG)
+ "addd3\t%[1],%[2],%[a]"
+ setcc(%[a]) | %[a] | | (4,14)+%[1]+%[2]
+#ifdef FLOAT8
+... | source8 sreg8 |
"addd2\t%[1],%[2]"
erase(%[2])
setcc(%[2]) | %[2] | | (3,14) + %[1]
"addd2\t%[2],%[1]"
erase(%[1])
setcc(%[1]) | %[1] | | (3,14) + %[2]
-... | NC nosreg8 source8-sreg8 |
- allocate(%[1],%[2],QREG)
- "addd3\t%[1],%[2],%[a]"
- setcc(%[a]) | %[a] | | (4,14)+%[1]+%[2]
-adf sdl $1==8 | source8 source8 |
+adf sdl $1==8 && $2<0
+ | source8 source8 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+7 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
"addd3\t%[1],%[2],$2(fp)"
- setcc({LOCAL8,$2, 8}) | | |
+ setcc({LOCAL8,LB,$2,8}) | | |
+adf sdl $1==8 && $2>=0
+ | source8 source8 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
+ "addd3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL8,AP,$2,8}) | | |
adf sde $1==8 | source8 source8 |
remove(externals)
"addd3\t%[1],%[2],$2"
setcc({EXTERNAL8,$2}) | | |
+#endif FLOAT8
adf !defined($1) | source4 |
remove(ALL)
move(%[1],R0)
"jsb\t.adf" | | |
-sbf $1==4 | source4 sreg4 |
- "subf2\t%[1],%[2]"
- erase(%[2])
- setcc(%[2]) | %[2] | | (3,8) + %[1]
-... | NC source4 nosreg4 |
+sbf $1==4 | source4 source4 |
allocate(%[1],%[2],REG)
"subf3\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,8)+%[1]+%[2]
#ifdef FLOAT4
-sbf stl $1==4 | source4 source4 |
+... | NC source4 sreg4 |
+ "subf2\t%[1],%[2]"
+ erase(%[2])
+ setcc(%[2]) | %[2] | | (3,8) + %[1]
+#ifdef REGVARS
+sbf stl $1==4 && inreg($2)==2
+ | source4 source4 |
+ remove(regvar($2))
+ "subf3\t%[1],%[2],%(regvar($2)%)"
+ erase(regvar($2))
+ setcc(regvar($2)) | | |
+#endif REGVARS
+sbf stl $1==4 $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+3 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
"subf3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
-sbf sil $1==4 | source4 source4 |
+ setcc({LOCAL4,LB,$2,4}) | | |
+sbf stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
+ "subf3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
+#ifdef REGVARS
+sbf sil $1==4 && inreg($2)==2
+ | source4 source4 |
+ remove(regvar($2))
+ "subf3\t%[1],%[2],(%(regvar($2)%))"
+ setcc(regvar($2)) | | |
+#endif REGVARS
+sbf sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"subf3\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+sbf sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "subf3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
sbf ste $1==4 | source4 source4 |
remove(externals)
"subf3\t%[1],%[2],$2"
setcc({EXTERNAL4,$2}) | | |
-#endif
-sbf $1==8 | source8 sreg8 |
- "subd2\t%[1],%[2]"
- erase(%[2])
- setcc(%[2]) | %[2] | | (3,14) + %[1]
-... | NC source8 nosreg8 |
+#endif FLOAT4
+sbf $1==8 | source8 source8 |
allocate(%[1],%[2],QREG)
"subd3\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,14)+%[1]+%[2]
-sbf sdl $1==8 | source8 source8 |
+#ifdef FLOAT8
+... | source8 sreg8 |
+ "subd2\t%[1],%[2]"
+ erase(%[2])
+ setcc(%[2]) | %[2] | | (3,14) + %[1]
+sbf sdl $1==8 && $2<0
+ | source8 source8 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+7 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
"subd3\t%[1],%[2],$2(fp)"
- setcc({LOCAL8,$2, 8}) | | |
+ setcc({LOCAL8,LB,$2,8}) | | |
+sbf sdl $1==8 && $2>=0
+ | source8 source8 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
+ "subd3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL8,AP,$2,8}) | | |
sbf sde $1==8 | source8 source8 |
remove(externals)
"subd3\t%[1],%[2],$2"
setcc({EXTERNAL8,$2}) | | |
+#endif FLOAT8
sbf !defined($1) | source1or2or4 |
remove(ALL)
move(%[1],R0)
"jsb\t.sbf" | | |
-mlf $1==4 | source4 sreg4 |
+mlf $1==4 | source4 source4 |
+ allocate(%[1],%[2],REG)
+ "mulf3\t%[1],%[2],%[a]"
+ setcc(%[a]) | %[a] | | (4,12)+%[1]+%[2]
+#ifdef FLOAT4
+... | source4 sreg4 |
"mulf2\t%[1],%[2]"
erase(%[2])
setcc(%[2]) | %[2] | | (3,12) + %[1]
"mulf2\t%[2],%[1]"
erase(%[1])
setcc(%[1]) | %[1] | | (3,12) + %[2]
-... | NC nosreg4 nosreg4 |
- allocate(%[1],%[2],REG)
- "mulf3\t%[1],%[2],%[a]"
- setcc(%[a]) | %[a] | | (4,12)+%[1]+%[2]
-#ifdef FLOAT4
-mlf stl $1==4 | source4 source4 |
+#ifdef REGVARS
+mlf stl $1==4 && inreg($2)==2
+ | source4 source4 |
+ remove(regvar($2))
+ "mulf3\t%[1],%[2],%(regvar($2)%)"
+ erase(regvar($2)) | | |
+#endif REGVARS
+mlf stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+3 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
"mulf3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
-mlf sil $1==4 | source4 source4 |
+ setcc({LOCAL4,LB,$2,4}) | | |
+mlf stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
+ "mulf3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
+#ifdef REGVARS
+mlf sil $1==4 && inreg($2)==2
+ | source4 source4 |
+ remove(regvar($2))
+ "mulf3\t%[1],%[2],(%(regvar($2)%))"
+ setcc(regvar($2)) | | |
+#endif REGVARS
+mlf sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"mulf3\t%[1],%[2],*$2(fp)"
- setcc({displdef4,LB,tostring($2)}) | | |
+ setcc({displdef4,LB,tostring($2)}) | | |
+mlf sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "mulf3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
mlf ste $1==4 | source4 source4 |
remove(externals)
"mulf3\t%[1],%[2],$2"
setcc({EXTERNAL4,$2}) | | |
-#endif
-mlf $1==8 | source8 sreg8 |
+#endif FLOAT4
+mlf $1==8 | source8 source8 |
+ allocate(%[1],%[2],QREG)
+ "muld3\t%[1],%[2],%[a]"
+ setcc(%[a]) | %[a] | | (4,20)+%[1]+%[2]
+#ifdef FLOAT8
+... | source8 sreg8 |
"muld2\t%[1],%[2]"
erase(%[2])
setcc(%[2]) | %[2] | | (3,20) + %[1]
"muld2\t%[2],%[1]"
erase(%[1])
setcc(%[1]) | %[1] | | (3,20) + %[2]
-... | NC nosreg8 source8-sreg8 |
- allocate(%[1],%[2],QREG)
- "muld3\t%[1],%[2],%[a]"
- setcc(%[a]) | %[a] | | (4,20)+%[1]+%[2]
-mlf sdl $1==8 | source8 source8 |
+mlf sdl $1==8 && $2<0
+ | source8 source8 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+7 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
"muld3\t%[1],%[2],$2(fp)"
- setcc({LOCAL8,$2, 8}) | | |
+ setcc({LOCAL8,LB,$2,8}) | | |
+mlf sdl $1==8 && $2>=0
+ | source8 source8 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
+ "muld3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL8,AP,$2,8}) | | |
mlf sde $1==8 | source8 source8 |
remove(externals)
"muld3\t%[1],%[2],$2"
setcc({EXTERNAL8,$2}) | | |
+#endif FLOAT8
mlf !defined($1) | source1or2or4 |
remove(ALL)
move(%[1],R0)
"jsb\t.mlf" | | |
-dvf $1==4 | source4 sreg4 |
- "divf2\t%[1],%[2]"
- erase(%[2])
- setcc(%[2]) | %[2] | | (3,46) + %[1]
-... | NC source4 nosreg4 |
+dvf $1==4 | source4 source4 |
allocate(%[1],%[2],REG)
"divf3\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,46)+%[1]+%[2]
#ifdef FLOAT4
-dvf stl $1==4 | source4 source4 |
+... | source4 sreg4 |
+ "divf2\t%[1],%[2]"
+ erase(%[2])
+ setcc(%[2]) | %[2] | | (3,46) + %[1]
+#ifdef REGVARS
+dvf stl $1==4 && inreg($2)==2
+ | source4 source4 |
+ remove(regvar($2))
+ "divf3\t%[1],%[2],%(regvar($2)%)"
+ erase(regvar($2))
+ setcc(regvar($2)) | | |
+#endif REGVARS
+dvf stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+3 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
"divf3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
-dvf sil $1==4 | source4 source4 |
+ setcc({LOCAL4,LB,$2,4}) | | |
+dvf stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
+ "divf3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
+#ifdef REGVARS
+dvf sil $1==4 && inreg($2)==2
+ | source4 source4 |
+ remove(regvar($2))
+ "divf3\t%[1],%[2],(%(regvar($2)%))"
+ setcc(regvar($2)) | | |
+#endif REGVARS
+dvf sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"divf3\t%[1],%[2],*$2(fp)"
- setcc({displdef4,LB,tostring($2)}) | | |
+ setcc({displdef4,LB,tostring($2)}) | | |
+dvf sil $1==4 &&$2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "divf3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
dvf ste $1==4 | source4 source4 |
remove(externals)
"divf3\t%[1],%[2],$2"
setcc({EXTERNAL4,$2}) | | |
-#endif
-dvf $1==8 | source8 sreg8 |
- "divd2\t%[1],%[2]"
- erase(%[2])
- setcc(%[2]) | %[2] | | (3,80) + %[1]
-... | NC source8 nosreg8 |
+#endif FLOAT4
+dvf $1==8 | source8 source8 |
allocate(%[1],%[2],QREG)
"divd3\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,80)+%[1]+%[2]
-dvf sdl $1==8 | source8 source8 |
+#ifdef FLOAT8
+... | source8 sreg8 |
+ "divd2\t%[1],%[2]"
+ erase(%[2])
+ setcc(%[2]) | %[2] | | (3,80) + %[1]
+dvf sdl $1==8 && $2<0
+ | source8 source8 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+7 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
"divd3\t%[1],%[2],$2(fp)"
- setcc({LOCAL8,$2, 8}) | | |
+ setcc({LOCAL8,LB,$2,8}) | | |
+dvf sdl $1==8 && $2>=0
+ | source8 source8 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
+ "divd3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL8,AP,$2,8}) | | |
dvf sde $1==8 | source8 source8 |
remove(externals)
"divd3\t%[1],%[2],$2"
setcc({EXTERNAL8,$2}) | | |
+#endif FLOAT8
dvf !defined($1) | source1or2or4 |
remove(ALL)
move(%[1],R0)
"mnegf\t%[1],%[a]"
setcc(%[a]) | %[a] | |
#ifdef FLOAT4
-ngf stl $1==4 | source4 |
+#ifdef REGVARS
+ngf stl $1==4 && inreg($2)==2
+ | source4 |
+ remove(regvar($2))
+ "mnegf\t%[1],%(regvar($2)%)"
+ erase(regvar($2))
+ setcc(regvar($2)) | | |
+#endif REGVARS
+ngf stl $1==4 $2<0
+ | source4 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+3 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
"mnegf\t%[1],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
-ngf sil $1==4 | source4 |
+ setcc({LOCAL4,LB,$2,4}) | | |
+ngf stl $1==4 && $2>=0
+ | source4 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+3 && %[num]+%[size] > $2)
+ "mnegf\t%[1],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
+#ifdef REGVARS
+ngf sil $1==4 && inreg($2)==2
+ | source4 |
+ remove(regvar($2))
+ "mnegf\t%[1],(%(regvar($2)%))"
+ setcc(regvar($2)) | | |
+#endif REGVARS
+ngf sil $1==4 && $2<0
+ | source4 |
REMEXTANDLOC
"mnegf\t%[1],*$2(fp)"
- setcc({displdef4,LB,tostring($2)}) | | |
+ setcc({displdef4,LB,tostring($2)}) | | |
+ngf sil $1==4 && $2>=0
+ | source4 |
+ REMEXTANDLOC
+ "mnegf\t%[1],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
ngf ste $1==4 | source4 |
remove(externals)
"mnegf\t%[1],$2"
setcc({EXTERNAL4,$2}) | | |
-#endif
+#endif FLOAT4
ngf $1==8 | source8 |
allocate(%[1],QREG)
"mnegd\t%[1],%[a]"
setcc(%[a]) | %[a] | |
-ngf sdl $1==8 | source8 |
+#ifdef FLOAT8
+ngf sdl $1==8 && $2<0
+ | source8 |
remove(displaced)
- remove(LOCALS, %[num] <= $2+7 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
"mnegd\t%[1],$2(fp)"
- setcc({LOCAL8,$2, 8}) | | |
+ setcc({LOCAL8,LB,$2,8}) | | |
+ngf sdl $1==8 && $2>=0
+ | source8 |
+ remove(displaced)
+ remove(LOCALS,%[num] <= $2+7 && %[num]+%[size] > $2)
+ "mnegd\t%[1],$2(ap)"
+ setcc({LOCAL8,AP,$2,8}) | | |
ngf sde $1==8 | source8 |
remove(externals)
"mnegd\t%[1],$2"
setcc({EXTERNAL8,$2}) | | |
+#endif FLOAT8
ngf !defined($1) | source1or2or4 |
remove(ALL)
move(%[1],R0)
"jsb\t.ngf" | | |
-loc loc loc cif fif $1==1 && $2==4 && $3==4 && $5==4
- | source4 |
- allocate(%[1],REG,REG)
- "emodf\t%[1],$$0,$$0f1.0,%[b],%[a]"
- /* Don't trust the integer part in %[b], *
- * integer overflow might occur. */
- "subf3\t%[a],%[1],%[b]" | %[a] %[b] | |
-loc loc loc cif fif $1==1 && $2==4 && $3==8 && $5==8
- | source8 |
- allocate(%[1],QREG,QREG)
- "emodd\t%[1],$$0,$$0f1.0,%[b],%[a]"
- "subd3\t%[a],%[1],%[b]" | %[a] %[b] | |
fif $1==4 | source4 source4 |
- allocate(%[1],%[2],REG,REG,REG)
+ allocate(%[1],%[2],REG,REG)
"mulf3\t%[1],%[2],%[a]"
- "emodf\t%[a],$$0,$$0f1.0,%[b],%[c]"
- "subf2\t%[c],%[a]" | %[c] %[a] | |
+ "emodf\t%[a],$$0,$$0f1.0,-(sp),%[b]"
+ /*
+ * Don't trust the integer part.
+ * Overflow could occur.
+ */
+ "tstl\t(sp)+"
+ "subf2\t%[b],%[a]" | %[b] %[a] | |
fif $1==8 | source8 source8 |
allocate(%[1],%[2],QREG,QREG)
"muld3\t%[1],%[2],%[a]"
********************************/
adp $1==0 | | | | |
-adp | NC adispl |
- | {adispl,%[1.reg],%[1.ind]+"+"+tostring($1)} | |
-... | NC ADDR_EXTERNAL |
- | {ADDR_EXTERNAL,%[1.ind]+"+"+tostring($1)} | |
-... | NC ADDR_LOCAL | | {ADDR_LOCAL,%[1.num]+$1} | |
-... | reg4 | | {adispl,%[1],tostring($1)} | |
+adp | NC ADDR_EXTERNAL |
+ | {ADDR_EXTERNAL,%[1.ind]+"+"+tostring($1)} | |
+... | NC ADDR_LOCAL |
+ | {ADDR_LOCAL,%[1.reg],%[1.num]+$1} | |
... | NC adisplind1 |
| {adisplind1,%[1.ireg],%[1.reg],
%[1.ind]+"+"+tostring($1)} | |
-... | NC adisplind2 |
- | {adisplind2,%[1.ireg],%[1.reg],
- %[1.ind]+"+"+tostring($1)} | |
-... | NC adisplind4 |
- | {adisplind4,%[1.ireg],%[1.reg],
- %[1.ind]+"+"+tostring($1)} | |
-... | NC adisplind8 |
- | {adisplind8,%[1.ireg],%[1.reg],
- %[1.ind]+"+"+tostring($1)} | |
-... | NC aextind2 |
- | {aextind2,%[1.ireg],%[1.ind]+"+"+tostring($1)} | |
-... | NC aextind4 |
- | {aextind4,%[1.ireg],%[1.ind]+"+"+tostring($1)} | |
-... | NC aextind8 |
- | {aextind8,%[1.ireg],%[1.ind]+"+"+tostring($1)} | |
+... | NC adispldefind1 |
+ allocate(%[1.ireg],REG)
+ "addl3\t$$$1,%[1.ireg],%[a]"
+ | {adispldefind1,%[a],%[1.reg],%[1.ind]} | |
+... | NC aextdefind1 |
+ allocate(%[1],REG)
+ "addl3\t$$$1,%[1.ireg],%[a]"
+ | {aextdefind1,%[a],%[1.ind]} | |
+... | NC adispl | | {adispl,%[1.reg],%[1.ind]+"+"+tostring($1)} | |
+... | reg4 | | {adispl,%[1],tostring($1)} | |
+adp stl | | | {CONST4,$1} | adi 4 stl $2 |
+adp ste | | | {CONST4,$1} | adi 4 ste $2 |
+adp dup $2==4 | | | {CONST4,$1} | adi 4 dup 4 |
+adp lol stf | | | {CONST4,$1} | adi 4 lol $2 stf $3 |
+adp lol sti $3==4
+ | | | {CONST4,$1} | adi 4 lol $2 sti 4 |
+adp loe sti $3==4
+ | | | {CONST4,$1} | adi 4 loe $2 sti 4 |
+adp cms $2==4 | | | {CONST4,$1} | adi 4 cms 4 |
+loe lof adp loe stf $1==$4 && $2==$5
+ | | REMEXTANDLOC
+ allocate(REG={EXTERNAL4,$1})
+ "addl2\t$$$3,$2(%[a])" | | |
+lol lof adp lol stf $1<0 && $1==$4 && inreg($1)!=2 && $2==$5
+ | | REMEXTANDLOC
+ allocate(REG={LOCAL4,LB,$1,4})
+ "addl2\t$$$3,$2(%[a])" | | |
+lol lof adp lol stf $1>=0 && $1==$4 && inreg($1)!=2 && $2==$5
+ | | REMEXTANDLOC
+ allocate(REG={LOCAL4,AP,$1,4})
+ "addl2\t$$$3,$2(%[a])" | | |
ads $1==4 | NC reg4 adispl |
- | {adisplind1,%[1],%[2.reg],%[2.ind]} | |
+ | {adisplind1,%[1],%[2.reg],%[2.ind]} | |
... | NC reg4 ADDR_LOCAL |
- | {adisplind1,%[1],LB,tostring(%[2.num])} | |
+ | {adisplind1,%[1],%[2.reg],tostring(%[2.num])} | |
... | NC reg4 ADDR_EXTERNAL |
- | {adispl,%[1],%[2.ind]} | |
+ | {adispl,%[1],%[2.ind]} | |
+... | NC reg4 aextind2 |
+ | {adisplind2,%[2.ireg],%[1],%[2.ind]} | |
+... | NC reg4 aextind4 |
+ | {adisplind4,%[2.ireg],%[1],%[2.ind]} | |
+... | NC reg4 aextind8 |
+ | {adisplind8,%[2.ireg],%[1],%[2.ind]} | |
... | NC reg4 displ4 |
- | {adispldefind1,%[1],%[2.reg],%[2.ind]} | |
+ | {adispldefind1,%[1],%[2.reg],%[2.ind]} | |
... | NC reg4 LOCAL4 |
- | {adispldefind1,%[1],LB,tostring(%[2.num])} | |
+ | {adispldefind1,%[1],%[2.reg],tostring(%[2.num])} | |
+... | NC reg4 regdef4 |
+ | {adispldefind1,%[1],%[2.reg],"0"} | |
... | NC reg4 EXTERNAL4 |
- | {aextdefind1,%[1],%[2.ind]} | |
-... | source4 source4 |
- allocate(%[1],%[2],REG)
- "addl3\t%[1],%[2],%[a]"
- setcc(%[a]) | %[a] | | (4,4)+%[1]+%[2]
+ | {aextdefind1,%[1],%[2.ind]} | |
+... | NC reg4 reg4 | | {adisplind1,%[1],%[2],"0"} | |
+... | | | adi 4 |
ads | | | | loc $1 loc 4 cii ads 4 |
ads !defined($1) | | | | loc 4 cii ads 4 |
sbs $1==4 | | | | sbu $1 |
| reg4 | | %[1] %[1] | adp $1 sil $3 |
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 |
+ allocate(REG=%[1])
+ | %[a] %[1] {CONST4,$2}
+ | adi 4 lol $3 sti 4 |
+dup adp loe sti $1==4 && $4==4
+ | bigsource4 |
+ allocate(REG=%[1])
+ | %[a] %[1] {CONST4,$2}
+ | adi 4 loe $3 sti 4 |
#ifdef REGVARS
lol lol adp stl loi $1==$4 && $2==$1 && inreg($1)==2 && $3==1 && $5==1
| | remove(regvar($1))
"addl2\t$$$2,%(regvar($1)%)"
erase(regvar($1)) | | |
#endif REGVARS
-lol adp stl $1==$3
+lol adp stl $1==$3 && $1<0
| | remove(displaced)
- remove(LOCALS, %[num] <= $1+3 && %[num]+%[size] > $1)
- "addl2\t$$$2,$1(fp)"
- setcc({LOCAL4,$1,4}) | | |
-lol lol adp stl $1==$4 && $2==$4
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
+ "addl2\t$$$2,$1(ap)"
+ setcc({LOCAL4,LB,$1,4}) | | |
+lol adp stl $1==$3 && $1>=0
+ | | remove(displaced)
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
+ "addl2\t$$$2,$1(ap)"
+ setcc({LOCAL4,AP,$1,4}) | | |
+lol lol adp stl $1==$4 && $2==$4 && $2<0
| | remove(displaced)
- remove(LOCALS, %[num] <= $1+3 && %[num]+%[size] > $1)
- allocate(REG={LOCAL4,$1,4})
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
+ allocate(REG={LOCAL4,LB,$1,4})
"addl2\t$$$3,$1(fp)"
- setcc({LOCAL4,$1,4}) | %[a] | |
+ setcc({LOCAL4,LB,$1,4}) | %[a] | |
+lol lol adp stl $1==$4 && $2==$4
+ | | remove(displaced)
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
+ allocate(REG={LOCAL4,AP,$1,4})
+ "addl2\t$$$3,$1(ap)"
+ setcc({LOCAL4,AP,$1,4}) | %[a] | |
#ifdef REGVARS
lil lil adp sil $1==$2 && $1==$4 && inreg($1)==2
| | REMEXTANDLOC
- allocate(REG={regdef4, regvar($1)})
+ allocate(REG={regdef4,regvar($1)})
"addl2\t$$$3,(%(regvar($1)%))" | %[a] | |
#endif
loe adp ste $1==$3
lil inc dup sil $3==4 && $1==$4 | | | | lil $1 loc 1 adi 4 sil $1 lil $1 |
lil dec dup sil $3==4 && $1==$4 | | | | lil $1 loc 1 sbi 4 sil $1 lil $1 |
inc | | | {CONST1,1} | adi 4 |
+loe lof inc loe stf $1==$4 && $2==$5
+ | | REMEXTANDLOC
+ allocate(REG={EXTERNAL4,$1})
+ "incl\t$2(%[a])"
+ setcc({displ4,%[a],tostring($2)}) | | |
+lol lof inc lol stf $1<0 && $1==$4 && inreg($1)!=2 && $2==$5
+ | | REMEXTANDLOC
+ allocate(REG={LOCAL4,LB,$1,4})
+ "incl\t$2(%[a])"
+ setcc({displ4,%[a],tostring($2)}) | | |
+lol lof inc lol stf $1>=0 && $1==$4 && inreg($1)!=2 && $2==$5
+ | | REMEXTANDLOC
+ allocate(REG={LOCAL4,AP,$1,4})
+ "incl\t$2(%[a])"
+ setcc({displ4,%[a],tostring($2)}) | | |
dec | | | {CONST1,1} | sbi 4 |
+loe lof dec loe stf $1==$4 && $2==$5
+ | | REMEXTANDLOC
+ allocate(REG={EXTERNAL4,$1})
+ "decl\t$2(%[a])"
+ setcc({displ4,%[a],tostring($2)}) | | |
+lol lof dec lol stf $1<0 && $1==$4 && inreg($1)!=2 && $2==$5
+ | | REMEXTANDLOC
+ allocate(REG={LOCAL4,LB,$1,4})
+ "decl\t$2(%[a])"
+ setcc({displ4,%[a],tostring($2)}) | | |
+lol lof dec lol stf $1>=0 && $1==$4 && inreg($1)!=2 && $2==$5
+ | | REMEXTANDLOC
+ allocate(REG={LOCAL4,AP,$1,4})
+ "decl\t$2(%[a])"
+ setcc({displ4,%[a],tostring($2)}) | | |
#ifdef REGVARS
inl inreg($1)==2 | | remove(regvar($1))
"incl\t%(regvar($1)%)"
erase(regvar($1))
setcc(regvar($1)) | | |
#endif REGVARS
-inl | | remove(displaced)
- remove(LOCALS, %[num] <= $1+3 && %[num]+%[size] > $1)
+inl $1<0 | | remove(displaced)
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
"incl\t$1(fp)"
- setcc({LOCAL4,$1, 4}) | | |
+ setcc({LOCAL4,LB,$1,4}) | | |
+inl $1>=0 | | remove(displaced)
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
+ "incl\t$1(ap)"
+ setcc({LOCAL4,AP,$1,4}) | | |
#ifdef REGVARS
lol inl $1==$2 && inreg($1)==2
| | remove(regvar($1))
#endif REGVARS
ine | | remove(externals)
"incl\t$1"
- setcc({EXTERNAL4, $1}) | | |
+ setcc({EXTERNAL4,$1}) | | |
#ifdef REGVARS
del inreg($1)==2 | | remove(regvar($1))
"decl\t%(regvar($1)%)"
erase(regvar($1))
setcc(regvar($1)) | | |
#endif REGVARS
-del | | remove(displaced)
- remove(LOCALS, %[num] <= $1+3 && %[num]+%[size] > $1)
+del $1<0 | | remove(displaced)
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
"decl\t$1(fp)"
- setcc({LOCAL4,$1, 4}) | | |
+ setcc({LOCAL4,LB,$1,4}) | | |
+del $1>=0 | | remove(displaced)
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
+ "decl\t$1(ap)"
+ setcc({LOCAL4,AP,$1,4}) | | |
#ifdef REGVARS
lol del $1==$2 && inreg($1)==2
| | remove(regvar($1))
#endif REGVARS
dee | | remove(externals)
"decl\t$1"
- setcc({EXTERNAL4, $1}) | | |
+ setcc({EXTERNAL4,$1}) | | |
#ifdef REGVARS
zrl inreg($1)==2 | | remove(regvar($1))
"clrl\t%(regvar($1)%)"
erase(regvar($1))
- setcc(regvar($1)) | | |
+ setcc(regvar($1)) | | |
#endif REGVARS
-zrl | | remove(displaced)
- remove(LOCALS,%[num] <= $1+3 && %[num]+%[size] > $1)
+zrl $1<0 | | remove(displaced)
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
"clrl\t$1(fp)"
- setcc({LOCAL4,$1, 4}) | | |
-zrl zrl $1==$2+4
+ setcc({LOCAL4,LB,$1,4}) | | |
+zrl $1>=0 | | remove(displaced)
+ remove(LOCALS,%[num]<=$1+3 && %[num]+%[size]>$1)
+ "clrl\t$1(ap)"
+ setcc({LOCAL4,AP,$1,4}) | | |
+zrl zrl $1==$2+4 && $1<0
#ifdef REGVARS
&& inreg($1)<2 && inreg($2)<2
#endif REGVARS
| | remove(displaced)
- remove(LOCALS, %[num] <= $2+7 && %[num]+%[size] > $2)
+ remove(LOCALS,%[num]<=$2+7 && %[num]+%[size]>$2)
"clrq\t$2(fp)"
- setcc({LOCAL8,$2, 8}) | | |
+ setcc({LOCAL8,LB,$2,8}) | | |
+zrl zrl $1==$2+4 && $1>=0
+#ifdef REGVARS
+ && inreg($1)<2 && inreg($2)<2
+#endif REGVARS
+ | | remove(displaced)
+ remove(LOCALS,%[num]<=$2+7 && %[num]+%[size]>$2)
+ "clrq\t$2(ap)"
+ setcc({LOCAL8,AP,$2,8}) | | |
zrl zrl $1==$2-4 | | | | zrl $2 zrl $1 |
zre | | remove(externals)
"clrl\t$1"
- setcc({EXTERNAL4, $1}) | | |
+ setcc({EXTERNAL4,$1}) | | |
zrf $1==4 | | | {CONST4,0} | |
zrf $1==8 | | | {FCONST8,0} | |
zer $1==4 | | | {CONST4,0} | |
zer $1==8 | | allocate(QREG)
"clrq\t%[a]" | %[a] | |
-zer $1<=32 | | remove(ALL)
+zer $1<=32 | STACK |
"clrq\t-(sp)" | | zer $1-8 |
-zer defined($1) | | remove(ALL)
- move({CONST4,$1/4}, R0)
+zer defined($1) | STACK |
+ move({CONST4,$1/4},R0)
#ifdef LOCLABS
"1:\tclrl\t-(sp)"
"sobgtr\tr0,1b"
* Group 8 : Convertions *
********************************/
-cii | | remove(ALL)
+cii | STACK |
"jsb\t.cii" | | |
-cfi | | remove(ALL)
+cfi | STACK |
"jsb\t.cfi" | | |
-cfu | | remove(ALL)
+cfu | STACK |
"jsb\t.cfu" | | |
-cuf | | remove(ALL)
+cuf | STACK |
"jsb\t.cuf" | | |
-cif | | remove(ALL)
+cif | STACK |
"jsb\t.cif" | | |
-cff | | remove(ALL)
+cff | STACK |
"jsb\t.cff" | | |
-cuu | | remove(ALL)
+cuu | STACK |
"jsb\t.cuu" | | |
ciu | | | | cuu |
-cui | | remove(ALL)
+cui | STACK |
"jsb\t.cui" | | |
loc loc cii $1==1 && $2==2 | source1or2or4 |
allocate(%[1],REG)
erase(regvar($1))
setcc(regvar($4)) | | |
#endif REGVARS
-loc loc cii stl $1==1 && $2==4 | source1or2or4 |
+loc loc cii stl $1==1 && $2==4 && $4<0
+ | source1or2or4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $4+3 && %[num]+%[size] > $4))
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
"cvtbl\t%[1],$4(fp)"
- setcc({LOCAL4,$4, 4}) | | |
+ setcc({LOCAL4,LB,$4,4}) | | |
+loc loc cii stl $1==1 && $2==4 && $4>=0
+ | source1or2or4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
+ "cvtbl\t%[1],$4(ap)"
+ setcc({LOCAL4,AP,$4,4}) | | |
loc loc cii ste $1==1 && $2==4 | source1or2or4 |
remove(externals)
"cvtbl\t%[1],$4"
- setcc({EXTERNAL4, $4}) | | |
+ setcc({EXTERNAL4,$4}) | | |
loc loc cii $1==1 && $2==4 | source1or2or4 |
allocate(%[1],REG)
"cvtbl\t%[1],%[a]"
erase(regvar($4))
setcc(regvar($4)) | | |
#endif REGVARS
-loc loc cii stl $1==2 && $2==4 | source2or4 |
+loc loc cii stl $1==2 && $2==4 && $4<0
+ | source2or4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $4+3 && %[num]+%[size] > $4))
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
"cvtwl\t%[1],$4(fp)"
- setcc({LOCAL4,$4, 4}) | | |
+ setcc({LOCAL4,LB,$4,4}) | | |
+loc loc cii stl $1==2 && $2==4 && $4>=0
+ | source2or4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
+ "cvtwl\t%[1],$4(ap)"
+ setcc({LOCAL4,AP,$4,4}) | | |
loc loc cii ste $1==2 && $2==4 | source2or4 |
remove(externals)
"cvtwl\t%[1],$4"
- setcc({EXTERNAL4, $4}) | | |
+ setcc({EXTERNAL4,$4}) | | |
loc loc cii $1==2 && $2==4 | source2or4 |
allocate(%[1],REG)
"cvtwl\t%[1],%[a]"
loc loc cii $1==4 && $2==2 | | | | |
loc loc cui $1==$2 | | | | |
loc loc ciu | | | | loc $1 loc $2 cuu |
+#ifdef FLOAT4
#ifdef REGVARS
loc loc cfi stl $1==4 && $2==4 && inreg($4)==2
| source4 |
erase(regvar($4))
setcc(regvar($4)) | | |
#endif REGVARS
-loc loc cfi stl $1==4 && $2==4 | source4 |
+loc loc cfi stl $1==4 && $2==4 && $4<0
+ | source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $4+3 && %[num]+%[size] > $4))
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
"cvtfl\t%[1],$4(fp)"
- setcc({LOCAL4,$4, 4}) | | |
+ setcc({LOCAL4,AP,$4,4}) | | |
+loc loc cfi stl $1==4 && $2==4 && $4>=0
+ | source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
+ "cvtfl\t%[1],$4(ap)"
+ setcc({LOCAL4,AP,$4,4}) | | |
loc loc cfi ste $1==4 && $2==4 | source4 |
remove(externals)
"cvtfl\t%[1],$4"
- setcc({EXTERNAL4, $4}) | | |
+ setcc({EXTERNAL4,$4}) | | |
+#endif FLOAT4
loc loc cfi $1==4 && $2==4 | source4 |
allocate(%[1],REG)
"cvtfl\t%[1],%[a]"
setcc(%[a]) | %[a] | | (3,4) + %[1]
+#ifdef FLOAT8
#ifdef REGVARS
loc loc cfi stl $1==8 && $2==4 && inreg($4)==2
| source8 |
erase(regvar($4))
setcc(regvar($4)) | | |
#endif REGVARS
-loc loc cfi stl $1==8 && $2==4 | source8 |
+loc loc cfi stl $1==8 && $2==4 && $4<0
+ | source8 |
remove(displaced)
- remove(LOCALS, (%[num] <= $4+3 && %[num]+%[size] > $4))
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
"cvtdl\t%[1],$4(fp)"
- setcc({LOCAL4,$4, 4}) | | |
+ setcc({LOCAL4,LB,$4,4}) | | |
+loc loc cfi stl $1==8 && $2==4 && $4>=0
+ | source8 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
+ "cvtdl\t%[1],$4(ap)"
+ setcc({LOCAL4,AP,$4,4}) | | |
loc loc cfi ste $1==8 && $2==4 | source8 |
remove(externals)
"cvtdl\t%[1],$4"
- setcc({EXTERNAL4, $4}) | | |
+ setcc({EXTERNAL4,$4}) | | |
+#endif FLOAT8
loc loc cfi $1==8 && $2==4 | source8 |
allocate(%[1],REG)
"cvtdl\t%[1],%[a]"
setcc(%[a]) | %[a] | |
+#ifdef FLOAT4
#ifdef REGVARS
loc loc cif stl $1==4 && $2==4 && inreg($4)==2
| source4 |
erase(regvar($4))
setcc(regvar($4)) | | |
#endif REGVARS
-loc loc cif stl $1==4 && $2==4 | source4 |
+loc loc cif stl $1==4 && $2==4 && $4<0
+ | source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $4+3 && %[num]+%[size] > $4))
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
"cvtlf\t%[1],$4(fp)" | | |
+loc loc cif stl $1==4 && $2==4 && $4>=0
+ | source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
+ "cvtlf\t%[1],$4(ap)" | | |
loc loc cif ste $1==4 && $2==4 | source4 |
remove(externals)
"cvtlf\t%[1],$4" | | |
+#endif FLOAT4
loc loc cif $1==4 && $2==4 | source4 |
allocate(%[1],REG)
"cvtlf\t%[1],%[a]" | %[a] | |
-/* No double registervariables yet...
+#ifdef FLOAT8
+/* No double registervariables
#ifdef REGVARS
loc loc cif sdl $1==4 && $2==8 && inreg($4)==2
| source4 |
setcc(regvar($4)) | | |
#endif REGVARS
*/
-loc loc cif sdl $1==4 && $2==8 | source4 |
+loc loc cif sdl $1==4 && $2==8 && $4<0
+ | source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $4+3 && %[num]+%[size] > $4))
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
"cvtld\t%[1],$4(fp)" | | |
+loc loc cif sdl $1==4 && $2==8 && $4>=0
+ | source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
+ "cvtld\t%[1],$4(ap)" | | |
loc loc cif sde $1==4 && $2==8 | source4 |
remove(externals)
"cvtld\t%[1],$4" | | |
* doesn't handle 0f0.0 (and other numbers that have the 0x4000 bit off
* in the exponent) right.
*/
+#endif FLOAT8
loc loc cif $1==4 && $2==8 | source4 |
allocate(%[1],QREG)
"cvtld\t%[1],%[a]" | %[a] | |
loc loc cfu $1==8 | source8 |
allocate(%[1],QREG=%[1])
"bicl2\t$$32768,%[a]" | %[a] | loc $1 loc $2 cfi |
+#ifdef FLOAT8
+/* No double registervariables
#ifdef REGVARS
loc loc cff sdl $1==4 && $2==8 && inreg($4)==2
| source4 |
erase(regvar($4))
setcc(regvar($4)) | | |
#endif REGVARS
-loc loc cff sdl $1==4 && $2==8 | source4 |
+*/
+loc loc cff sdl $1==4 && $2==8 && $4<0
+ | source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $4+7 && %[num]+%[size] > $4))
+ remove(LOCALS,(%[num] <= $4+7 && %[num]+%[size] > $4))
"cvtfd\t%[1],$4(fp)" | | |
+loc loc cff sdl $1==4 && $2==8 && $4>=0
+ | source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $4+7 && %[num]+%[size] > $4))
+ "cvtfd\t%[1],$4(ap)" | | |
loc loc cff sde $1==4 && $2==8 | source4 |
remove(externals)
"cvtfd\t%[1],$4" | | |
+#endif FLOAT8
loc loc cff $1==4 && $2==8 | source4 |
allocate(%[1],QREG)
"cvtfd\t%[1],%[a]" | %[a] | |
+#ifdef FLOAT4
#ifdef REGVARS
loc loc cff stl $1==8 && $2==4 && inreg($4)==2
| source8 |
erase(regvar($4))
setcc(regvar($4)) | | |
#endif REGVARS
-loc loc cff stl $1==8 && $2==4 | source8 |
+loc loc cff stl $1==8 && $2==4 && $4<0
+ | source8 |
remove(displaced)
- remove(LOCALS, (%[num] <= $4+3 && %[num]+%[size] > $4))
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
"cvtdf\t%[1],$4(fp)" | | |
+loc loc cff stl $1==8 && $2==4 && $4>=0
+ | source8 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
+ "cvtdf\t%[1],$4(ap)" | | |
loc loc cff ste $1==8 && $2==4 | source8 |
remove(externals)
"cvtdf\t%[1],$4" | | |
+#endif FLOAT4
loc loc cff $1==8 && $2==4 | source8 |
allocate(%[1],REG)
"cvtdf\t%[1],%[a]" | %[a] | |
erase(regvar($4))
setcc(regvar($4)) | | |
#endif REGVARS
-loc loc cuu stl $1==2 && $2==4 | source2or4 |
+loc loc cuu stl $1==2 && $2==4 && $4<0
+ | source2or4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $4+3 && %[num]+%[size] > $4))
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
"movzwl\t%[1],$4(fp)"
- setcc({LOCAL4,$4, 4}) | | |
+ setcc({LOCAL4,LB,$4,4}) | | |
+loc loc cuu stl $1==2 && $2==4 && $4>=0
+ | source2or4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $4+3 && %[num]+%[size] > $4))
+ "movzwl\t%[1],$4(ap)"
+ setcc({LOCAL4,AP,$4,4}) | | |
loc loc cuu ste $1==2 && $2==4 | source2or4 |
remove(externals)
"movzwl\t%[1],$4"
- setcc({EXTERNAL4, $4}) | | |
+ setcc({EXTERNAL4,$4}) | | |
loc loc cuu $1==2 && $2==4 | source2or4 |
allocate(%[1],REG)
"movzwl\t%[1],%[a]"
"mcoml\t%[1],%[a]"
"bicl3\t%[a],%[2],%[a]"
setcc(%[a]) | %[a] | | (7,6)+%[1]+%[2]
-... | CONST source4 |
+... | NC CONST source4 |
allocate(%[2],REG)
"bicl3\t$$~%[1.num],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,3)+%[1]+%[2]
-... | source4 CONST |
+... | NC source4 CONST |
allocate(%[1],REG)
"bicl3\t$$~%[2.num],%[1],%[a]"
setcc(%[a]) | %[a] | | (4,3)+%[1]+%[2]
-and zeq $1==4 | source1 source1 |
- remove(ALL)
- "bitb\t%[1],%[2]"
- "jeql\t$2" | | |
-... | source2 source2 |
- remove(ALL)
- "bitw\t%[1],%[2]"
- "jeql\t$2" | | |
-... | source4 source4 |
+and zeq $1==4 | source4 source4 |
remove(ALL)
"bitl\t%[1],%[2]"
"jeql\t$2" | | |
-and zne $1==4 | source1 source1 |
- remove(ALL)
- "bitb\t%[1],%[2]"
- "jneq\t$2" | | |
-... | source2 source2 |
- remove(ALL)
- "bitw\t%[1],%[2]"
- "jneq\t$2" | | |
-... | source4 source4 |
+and zne $1==4 | source4 source4 |
remove(ALL)
"bitl\t%[1],%[2]"
"jneq\t$2" | | |
erase(%[a]) | %[a] | |
#ifdef REGVARS
and stl $1==4 && inreg($2)==2
- | source4-CONST source4 |
+ | source4 source4 |
remove(regvar($2))
allocate(%[1],REG)
"mcoml\t%[1],%[a]"
"bicl3\t%[a],%[2],%(regvar($2)%)"
erase(regvar($2))
setcc(regvar($2)) | | | (8,8)+%[1]+%[2]
-... | CONST source4 |
+... | NC CONST source4 |
remove(regvar($2))
"bicl3\t$$~%[1.num],%[2],%(regvar($2)%)"
erase(regvar($2))
setcc(regvar($2)) | | | (4,4)+%[1]+%[2]
-... | source4 CONST |
+... | NC source4 CONST |
remove(regvar($2))
"bicl3\t$$~%[2.num],%[1],%(regvar($2)%)"
erase(regvar($2))
setcc(regvar($2)) | | | (4,4)+%[1]+%[2]
#endif REGVARS
-and stl $1==4 | source4-CONST source4 |
+and stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
allocate(%[1],REG)
"mcoml\t%[1],%[a]"
"bicl3\t%[a],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | | (9,12)+%[1]+%[2]
+ setcc({LOCAL4,LB,$2,4}) | | | (9,12)+%[1]+%[2]
... | NC CONST source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"bicl3\t$$~%[1.num],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | | (6,9)+%[1]+%[2]
+ setcc({LOCAL4,LB,$2,4}) | | | (6,9)+%[1]+%[2]
... | NC source4 CONST |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"bicl3\t$$~%[2.num],%[1],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | | (6,9)+%[1]+%[2]
+ setcc({LOCAL4,LB,$2,4}) | | | (6,9)+%[1]+%[2]
+and stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ allocate(%[1],REG)
+ "mcoml\t%[1],%[a]"
+ "bicl3\t%[a],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | | (9,12)+%[1]+%[2]
+... | NC CONST source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "bicl3\t$$~%[1.num],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | | (6,9)+%[1]+%[2]
+... | NC source4 CONST |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "bicl3\t$$~%[2.num],%[1],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | | (6,9)+%[1]+%[2]
#ifdef REGVARS
and sil $1==4 && inreg($2)==2
- | source4-CONST source4 |
+ | source4 source4 |
REMEXTANDLOC
allocate(%[1],REG)
"mcoml\t%[1],%[a]"
"bicl3\t%[a],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)})
| | | (9,15)+%[1]+%[2]
-... | CONST source4 |
+... | NC CONST source4 |
REMEXTANDLOC
"bicl3\t$$~%[1.num],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)})
| | | (6,12)+%[1]+%[2]
-... | source4 CONST |
+... | NC source4 CONST |
REMEXTANDLOC
"bicl3\t$$~%[2.num],%[1],(%(regvar($2)%))"
setcc({regdef4,regvar($2)})
| | | (6,12)+%[1]+%[2]
#endif REGVARS
-and sil $1==4 | source4-CONST source4 |
+and sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
allocate(%[1],REG)
"mcoml\t%[1],%[a]"
"bicl3\t%[a],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)})
| | | (9,15)+%[1]+%[2]
-... | CONST source4 |
+... | NC CONST source4 |
REMEXTANDLOC
"bicl3\t$$~%[1.num],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)})
| | | (6,12)+%[1]+%[2]
-... | source4 CONST |
+... | NC source4 CONST |
REMEXTANDLOC
"bicl3\t$$~%[2.num],%[1],*$2(fp)"
setcc({displdef4,LB,tostring($2)})
| | | (6,12)+%[1]+%[2]
-and ste $1==4 | source4-CONST source4 |
+and sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ allocate(%[1],REG)
+ "mcoml\t%[1],%[a]"
+ "bicl3\t%[a],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)})
+ | | | (9,15)+%[1]+%[2]
+... | NC CONST source4 |
+ REMEXTANDLOC
+ "bicl3\t$$~%[1.num],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)})
+ | | | (6,12)+%[1]+%[2]
+... | NC source4 CONST |
+ REMEXTANDLOC
+ "bicl3\t$$~%[2.num],%[1],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)})
+ | | | (6,12)+%[1]+%[2]
+and ste $1==4 | source4 source4 |
remove(externals)
allocate(%[1],REG)
"mcoml\t%[1],%[a]"
"bicl3\t%[a],%[2],$2"
setcc({EXTERNAL4,$2}) | | | (11,12)+%[1]+%[2]
-... | CONST source4 |
+... | NC CONST source4 |
remove(externals)
"bicl3\t$$~%[1.num],%[2],$2"
setcc({EXTERNAL4,$2}) | | | (8,9)+%[1]+%[2]
-... | source4 CONST |
+... | NC source4 CONST |
remove(externals)
"bicl3\t$$~%[2.num],%[1],$2"
setcc({EXTERNAL4,$2}) | | | (8,9)+%[1]+%[2]
+and $1==8 | sreg8 sreg8 |
+ "mcoml\t%[1.1],%[1.1]"
+ "mcoml\t%[1.2],%[1.2]"
+ "bicl2\t%[1.1],%[2.1]"
+ "bicl2\t%[1.2],%[2.2]"
+ erase(%[1]) erase(%[2]) | %[2] | |
and defined($1) | | remove(ALL)
move({CONST4,$1},R0)
"jsb\t.and"
move(%[1],R0)
"jsb\t.and"
erase(R0) | | |
-ior $1==4 | NC source4 source4 |
+ior $1==4 | source4 source4 |
allocate(%[1],%[2],REG)
"bisl3\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,4)+%[1]+%[2]
-... | sreg4 source4 |
+... | NC sreg4 source4 |
"bisl2\t%[2],%[1]"
erase(%[1])
setcc(%[1]) | %[1] | | (3,4) + %[2]
-... | source4 sreg4 |
+... | NC source4 sreg4 |
"bisl2\t%[1],%[2]"
erase(%[2])
setcc(%[2]) | %[2] | | (3,4) + %[1]
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-ior stl $1==4 | source4 source4 |
+ior stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"bisl3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+ior stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "bisl3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
ior sil $1==4 && inreg($2)==2
| source4 source4 |
"bisl3\t%[1],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-ior sil $1==4 | source4 source4 |
+ior sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"bisl3\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+ior sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "bisl3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,LB,tostring($2)}) | | |
ior ste $1==4 | source4 source4 |
remove(externals)
"bisl3\t%[1],%[2],$2"
setcc({EXTERNAL4,$2}) | | |
-ior defined($1) | | remove(ALL)
- move({CONST4, $1},R0)
+ior $1==8 | sreg8 sreg8 |
+ "bisl2\t%[1.1],%[2.1]"
+ "bisl2\t%[1.2],%[2.2]"
+ erase(%[2]) | %[2] | |
+ior defined($1) | STACK |
+ move({CONST4,$1},R0)
"jsb\t.ior"
erase(R0) | | |
ior !defined($1) | source4 |
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-xor stl $1==4 | source4 source4 |
+xor stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"xorl3\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+xor stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "xorl3\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
xor sil $1==4 && inreg($2)==2
| source4 source4 |
"xorl3\t%[1],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-xor sil $1==4 | source4 source4 |
+xor sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"xorl3\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+xor sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "xorl3\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
xor ste $1==4 | source4 source4 |
remove(externals)
"xorl3\t%[1],%[2],$2"
setcc({EXTERNAL4,$2}) | | |
-xor defined($1) | | remove(ALL)
- move({CONST4, $1},R0)
+xor defined($1) | STACK |
+ move({CONST4,$1},R0)
"jsb\t.xor"
erase(R0) | | |
xor !defined($1) | source4 |
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-com stl $1==4 | source4 |
+com stl $1==4 && $2<0
+ | source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"mcoml\t%[1],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+com stl $1==4 && $2>=0
+ | source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "mcoml\t%[1],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
com sil $1==4 && inreg($2)==2
| source4 |
"mcoml\t%[1],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-com sil $1==4 | source4 |
+com sil $1==4 && $2<0
+ | source4 |
REMEXTANDLOC
"mcoml\t%[1],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+com sil $1==4 && $2>=0
+ | source4 |
+ REMEXTANDLOC
+ "mcoml\t%[1],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
com ste $1==4 | source4 |
remove(externals)
"mcoml\t%[1],$2"
setcc({EXTERNAL4,$2}) | | |
-com defined($1) | | remove(ALL)
+com defined($1) | STACK |
move({CONST4,$1},R0)
"jsb\t.com"
erase(R0) | | |
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-rol stl $1==4 | source4 source4 |
+rol stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"rotl\t%[1],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+rol stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "rotl\t%[1],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
rol sil $1==4 && inreg($2)==2
| source4 source4 |
"rotl\t%[1],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-rol sil $1==4 | source4 source4 |
+rol sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
"rotl\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
+rol sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "rotl\t%[1],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
rol ste $1==4 | source4 source4 |
remove(externals)
"rotl\t%[1],%[2],$2"
move(%[1],R0)
"jsb\t.rol"
erase(R0) | | |
-ror $1==4 | source4-CONST source4 |
+ror $1==4 | source4 source4 |
allocate(%[1],REG)
"subl3\t%[1],$$32,%[a]"
"rotl\t%[a],%[2],%[a]"
setcc(%[a]) | %[a] | |
-... | CONST source4 |
+... | NC CONST source4 |
allocate(%[2],REG)
"rotl\t$$%(32-%[1.num]%),%[2],%[a]"
setcc(%[a]) | %[a] | |
#ifdef REGVARS
ror stl $1==4 && inreg($2)==2
- | source4-CONST source4 |
+ | source4 source4 |
remove(regvar($2))
allocate(%[1],REG)
"subl3\t%[1],$$32,%[a]"
"rotl\t%[a],%[2],%(regvar($2)%)"
erase(regvar($2))
setcc(regvar($2)) | | |
-... | CONST source4 |
+... | NC CONST source4 |
remove(regvar($2))
"rotl\t$$%(32-%[1.num]%),%[2],%(regvar($2)%)"
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
-ror stl $1==4 | source4-CONST source4 |
+ror stl $1==4 && $2<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
allocate(%[1],REG)
"subl3\t%[1],$$32,%[a]"
"rotl\t%[a],%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
-... | CONST source4 |
+ setcc({LOCAL4,LB,$2,4}) | | |
+... | NC CONST source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $2+3 && %[num]+%[size] > $2))
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"rotl\t$$%(32-%[1.num]%),%[2],$2(fp)"
- setcc({LOCAL4,$2, 4}) | | |
+ setcc({LOCAL4,LB,$2,4}) | | |
+ror stl $1==4 && $2>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ allocate(%[1],REG)
+ "subl3\t%[1],$$32,%[a]"
+ "rotl\t%[a],%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
+... | NC CONST source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
+ "rotl\t$$%(32-%[1.num]%),%[2],$2(ap)"
+ setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
ror sil $1==4 && inreg($2)==2
- | source4-CONST source4 |
+ | source4 source4 |
REMEXTANDLOC
allocate(%[1],REG)
"subl3\t%[1],$$32,%[a]"
"rotl\t%[a],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
-... | CONST source4 |
+... | NC CONST source4 |
REMEXTANDLOC
"rotl\t$$%(32-%[1.num]%),%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
#endif REGVARS
-ror sil $1==4 | source4-CONST source4 |
+ror sil $1==4 && $2<0
+ | source4 source4 |
REMEXTANDLOC
allocate(%[1],REG)
"subl3\t%[1],$$32,%[a]"
"rotl\t%[a],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
-... | CONST source4 |
+... | NC CONST source4 |
REMEXTANDLOC
"rotl\t$$%(32-%[1.num]%),%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
-ror ste $1==4 | source4-CONST source4 |
+ror sil $1==4 && $2>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ allocate(%[1],REG)
+ "subl3\t%[1],$$32,%[a]"
+ "rotl\t%[a],%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
+... | NC CONST source4 |
+ REMEXTANDLOC
+ "rotl\t$$%(32-%[1.num]%),%[2],*$2(ap)"
+ setcc({displdef4,AP,tostring($2)}) | | |
+ror ste $1==4 | source4 source4 |
remove(externals)
allocate(%[1],REG)
"subl3\t%[1],$$32,%[a]"
"rotl\t%[a],%[2],$2"
setcc({EXTERNAL4,$2}) | | |
-... | CONST source4 |
+... | NC CONST source4 |
remove(externals)
"rotl\t$$%(32-%[1.num]%),%[2],$2"
setcc({EXTERNAL4,$2}) | | |
move(%[1],R0)
"jsb\t.ror"
erase(R0) | | |
-com and $1==4 && $2==4 | source4 source4 |
+com and $1==4 && $2==4
+ | source4 source4 |
allocate(%[1],%[2],REG)
"bicl3\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,4)+%[1]+%[2]
"bicl2\t%[1],%[2]"
erase(%[2])
setcc(%[2]) | %[2] | | (3,4) + %[1]
-... | source4 source4 |
- remove(ALL)
- "bicl3\t%[1],%[2],(sp)+" | | | (4,7)+%[1]+%[2]
#ifdef REGVARS
com and stl $1==4 && $2==4 && inreg($3)==2
| source4 source4 |
erase(regvar($3))
setcc(regvar($3)) | | |
#endif REGVARS
-com and stl $1==4 && $2==4 | source4 source4 |
+com and stl $1==4 && $2==4 && $3<0
+ | source4 source4 |
remove(displaced)
- remove(LOCALS, (%[num] <= $3+3 && %[num]+%[size] > $3))
+ remove(LOCALS,(%[num] <= $3+3 && %[num]+%[size] > $3))
"bicl3\t%[1],%[2],$3(fp)"
- setcc({LOCAL4,$3, 4}) | | |
+ setcc({LOCAL4,AP,$3,4}) | | |
+com and stl $1==4 && $2==4 && $3>=0
+ | source4 source4 |
+ remove(displaced)
+ remove(LOCALS,(%[num] <= $3+3 && %[num]+%[size] > $3))
+ "bicl3\t%[1],%[2],$3(ap)"
+ setcc({LOCAL4,AP,$3,4}) | | |
#ifdef REGVARS
com and sil $1==4 && $2==4 && inreg($3)==2
| source4 source4 |
"bicl3\t%[1],%[2],(%(regvar($3)%))"
setcc({regdef4,regvar($3)}) | | |
#endif REGVARS
-com and sil $1==4 && $2==4 | source4 source4 |
+com and sil $1==4 && $2==4 && $3<0
+ | source4 source4 |
REMEXTANDLOC
"bicl3\t%[1],%[2],*$3(fp)"
setcc({displdef4,LB,tostring($3)}) | | |
-com and ste $1==4 &&$2==4 | source4 source4 |
+com and sil $1==4 && $2==4 && $3>=0
+ | source4 source4 |
+ REMEXTANDLOC
+ "bicl3\t%[1],%[2],*$3(ap)"
+ setcc({displdef4,AP,tostring($3)}) | | |
+com and ste $1==4 &&$2==4
+ | source4 source4 |
remove(externals)
"bicl3\t%[1],%[2],$3"
setcc({EXTERNAL4,$3}) | | |
-com and $1==$2 | | remove(ALL)
- move({CONST4, $1}, R0)
+com and $1==$2 | STACK |
+ move({CONST4,$1},R0)
"jsb\t.cmand"
erase(R0) | | |
********************************/
loc inn $1==0 && $2==4 | source4 |
- allocate(%[1], REG)
+ allocate(%[1],REG)
"bicl3\t$$~1,%[1],%[a]"
setcc(%[a]) | %[a] | |
loc inn $2==4 | source4 |
- allocate(%[1], REG)
+ allocate(%[1],REG)
"ashl\t$$%(0-$1%),%[1],%[a]"
"bicl2\t$$~1,%[a]"
setcc(%[a]) | %[a] | |
remove(ALL)
"bitl\t%[2],$$%(1<<($1-32)%)"
"jneq\t$3" | | |
-inn defined($1) | | remove(ALL)
- move({CONST4, $1},R0)
+inn defined($1) | STACK |
+ move({CONST4,$1},R0)
"jsb\t.inn"
erase(R0) | R1 | |
inn !defined($1) | source4 |
"jsb\t.inn"
erase(R0) | R1 | |
set $1==4 | source4 | | {CONST4,1} %[1] | sli 4 |
-set defined($1) | | remove(ALL)
- move({CONST4, $1},R0)
+set defined($1) | STACK |
+ move({CONST4,$1},R0)
"jsb\t.setx"
erase(R0) | | |
set !defined($1) | source4 |
lae aar $2==4 && rom(1,3)==4 | | | | loc 2 sli 4 ads 4 adp 0-4*rom(1,1) |
lae aar $2==4 && rom(1,3)==8 | | | | loc 3 sli 4 ads 4 adp 0-8*rom(1,1) |
lae aar $2==4 && defined(rom(1,3)) && rom(1,1)==0
- | source4 source4 |
- allocate(%[1],REG)
- "mull3\t$$%(rom(1,3)%),%[1],%[a]"
- "addl2\t%[2],%[a]"
- setcc(%[a]) | %[a] | | (10,20)+%[1]+%[2]
-... | NC source4 adispl |
- allocate(%[1],REG)
- "mull3\t$$%(rom(1,3)%),%[1],%[a]"
- "addl2\t%[2.reg],%[a]"
- setcc(%[a])
- | {adispl,%[a],%[2.ind]} | | (10,20)+%[1]
-... | NC source4 ADDR_LOCAL |
+ | source4 adispl |
allocate(%[1],REG)
"mull3\t$$%(rom(1,3)%),%[1],%[a]"
- "addl2\tfp,%[a]"
- setcc(%[a])
- | {adispl,%[a],tostring(%[2.num])} | | (10,20)+%[1]
+ | {adisplind1,%[a],%[2.reg],%[2.ind]} | | (8,10)+%[1]
... | NC source4 ADDR_EXTERNAL |
allocate(%[1],REG)
"mull3\t$$%(rom(1,3)%),%[1],%[a]"
- setcc(%[a])
| {adispl,%[a],%[2.ind]} | | (7,16)+%[1]
lae aar $2==4 && defined(rom(1,3))
| source4 adispl |
allocate(%[1],REG)
"mull3\t$$%(rom(1,3)%),%[1],%[a]"
- "addl2\t%[2.reg],%[a]"
- setcc(%[a])
- | {adispl,%[a],
+ | {adisplind1,%[a],%[2.reg],
%[2.ind]+"+"+tostring(0-rom(1,1)*rom(1,3))}
- | | (10,20)+%[1]
-... | NC source4 source4 |
- allocate(%[1],REG)
- "mull3\t$$%(rom(1,3)%),%[1],%[a]"
- "addl2\t%[2],%[a]"
- setcc(%[a])
- | {adispl,%[a],tostring(0-rom(1,1)*rom(1,3))}
- | | (10,20)+%[1]+%[2]
+ | | (8,10)+%[1]
... | NC source4 ADDR_EXTERNAL |
allocate(%[1],REG)
"mull3\t$$%(rom(1,3)%),%[1],%[a]"
- setcc(%[a])
| {adispl,%[a],
%[2.ind]+"+"+tostring(0-rom(1,1)*rom(1,3))}
| | (7,16)+%[1]
| {adispldefind8,%[1],%[2.reg],%[2.ind]} | |
... | reg4 EXTERNAL4 |
| {aextdefind8,%[1],%[2.ind]} | |
-aar $1==4 | | remove(ALL)
+aar $1==4 | STACK |
"jsb\t.aar4" | R0 | |
aar !defined($1) | source4 |
remove(ALL)
erase(R0) | R0 | |
lae sar defined(rom(1,3)) | | | | lae $1 aar $2 sti rom(1,3) |
lae lar defined(rom(1,3)) | | | | lae $1 aar $2 loi rom(1,3) |
-sar $1==4 | | remove(ALL)
+sar $1==4 | STACK |
"jsb\t.sar4" | | |
sar !defined($1) | source4 |
remove(ALL)
move(%[1],R0)
"jsb\t.sar"
erase(R0) | | |
-lar $1==4 | | remove(ALL)
+lar $1==4 | STACK |
"jsb\t.lar4" | | |
lar !defined($1) | source4 |
remove(ALL)
#endif
setcc(%[a])
erase(%[a]) | %[a] | |
-cms defined($1) | | remove(ALL)
+cms defined($1) | STACK |
move({CONST1,$1},R0)
"jsb\t.cms"
setcc(R0)
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
-... | NC source1or2 source1or2 |
- | %[2] %[1] | cmu 4 tlt |
+... | NC source1or2 source1or2 | | %[2] %[1] | cmu 4 tlt |
cmi tle $1==4 | source4 source4 |
allocate(REG={CONST4,0})
"cmpl\t%[1],%[2]"
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
-... | NC source1or2 source1or2 |
- | %[2] %[1] | cmu 4 tle |
+... | NC source1or2 source1or2 | | %[2] %[1] | cmu 4 tle |
cmi teq $1==4 | source4 source4 |
allocate(REG={CONST4,0})
"cmpl\t%[1],%[2]"
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
-... | NC source1or2 source1or2 |
- | %[2] %[1] | cmu 4 teq |
+... | NC source1or2 source1or2 | | %[2] %[1] | cmu 4 teq |
cmi tne $1==4 | source4 source4 |
allocate(REG={CONST4,0})
"cmpl\t%[1],%[2]"
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
-... | NC source1or2 source1or2 |
- | %[2] %[1] | cmu 4 tne |
+... | NC source1or2 source1or2 | | %[2] %[1] | cmu 4 tne |
cmi tge $1==4 | source4 source4 |
allocate(REG={CONST4,0})
"cmpl\t%[1],%[2]"
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
-... | NC source1or2 source1or2 |
- | %[2] %[1] | cmu 4 tge |
+... | NC source1or2 source1or2 | | %[2] %[1] | cmu 4 tge |
cmi tgt $1==4 | source4 source4 |
allocate(REG={CONST4,0})
"cmpl\t%[1],%[2]"
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
-... | NC source1or2 source1or2 |
- | %[2] %[1] | cmu 4 tgt |
+... | NC source1or2 source1or2 | | %[2] %[1] | cmu 4 tgt |
cmi tlt and $1==4 && $3==4
| source4 source4 sreg4 |
"cmpl\t%[2],%[1]"
#endif
setcc(%[3])
erase(%[3]) | %[3] | |
+#ifdef FLOAT4
cmf tlt $1==4 | source4 source4 |
allocate(REG={CONST1,0})
"cmpf\t%[1],%[2]"
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
+#endif FLOAT4
+#ifdef FLOAT8
cmf tlt $1==8 | source8 source8 |
allocate(%[1],%[2],REG)
"cmpd\t%[1],%[2]"
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
+#endif FLOAT8
/* Remember that cmu was replaced by cmp. */
cmp tlt | source4 source4 |
allocate(REG={CONST1,0})
test(%[1])
"jlss\t$1"
samecc | | |
-... | NC source1or2 | | | |
+... | NC source1or2 | | %[1] | asp 4 |
zle | source4 STACK |
test(%[1])
"jleq\t$1"
test(%[1])
"jgeq\t$1"
samecc | | |
-... | NC source1or2 | | | bra $1 |
+... | NC source1or2 | | %[1] | asp 4 bra $1 |
zgt | source4 STACK |
test(%[1])
"jgtr\t$1"
* Group 14 : Procedure call instructions *
************************************************/
-cai | | remove(ALL)
- "jsb\t*(sp)+" | | | (2,10)
-... | reg4 |
+cai asp $2%4 == 0 && $2>=0
+ | reg4 |
+ remove(ALL)
+ "calls\t$$%($2/4%),(%[1])" | | |
+cai | reg4 |
remove(ALL)
- "jsb\t(%[1])" | | | (2,7)
+ "calls\t$$0,(%[1])" | | |
+cal asp $2%4 == 0 && $2>=0
+ | | remove(ALL)
+ "calls\t$$%($2/4%),$1" | | |
cal | | remove(ALL)
- "jsb\t$1" | | |
-lfr $1==4 | | | R0 | |
-lfr $1==8 | | | QR0 | |
-asp ret $2==0 | | | | ret 0 |
-ass ret $2==0 | | | | ret 0 |
-asp lfr ret $2==$3 | | | | ret 0 |
-ass lfr ret $2==$3 | | | | ret 0 |
-lfr ret $1==$2 | | | | ret 0 |
-#ifdef REGVARS
-ret $1==0 | | remove(ALL)
- return | | |
-#else REGVARS
-ret $1==0 | | remove(ALL)
- "movl\tfp,sp"
- "movl\t(sp)+,fp"
- "rsb" | | |
-#endif REGVARS
-ret $1==4 | bigsource4 |
- move(%[1],R0) | | ret 0 |
-ret $1==8 | bigsource8 |
- move(%[1],QR0) | | ret 0 |
-... | bigsource4 bigsource4 |
+ "calls\t$$0,$1" | | |
+lfr $1==4 | | | R0 | |
+lfr $1==8 | | | QR0 | |
+asp ret $2==0 | | "ret" | | |
+ass ret $2==0 | | "ret" | | |
+asp lfr ret $2==$3 | | "ret" | | |
+ass lfr ret $2==$3 | | "ret" | | |
+lfr ret $1==$2 | | "ret" | | |
+ret $1==0 | | "ret" | | |
+ret $1==4 | NC bigsource4 |
move(%[1],R0)
- move(%[2],R1) | | ret 0 |
+ "ret" | | |
+... | STACK |
+ "movl\t(sp)+,r0"
+ "ret" | | |
+ret $1==8 | NC bigsource8 |
+ move(%[1],QR0)
+ "ret" | | |
+... | STACK |
+ "movq\t(sp)+,r0"
+ "ret" | | |
/********************************
* Group 15 : Miscellaneous *
#ifdef REGVARS
asp $1==4 | bigsource4 - regch4 | | | |
#else REGVARS
-asp $1==4 | NC bigsource4 | | | |
+asp $1==4 | NC bigsource4 | | | |
#endif REGVARS
-... | | remove(ALL)
+... | STACK |
"tstl\t(sp)+" | | | (2,7)
-asp $1>0 | | remove(ALL)
+asp $1>0 | STACK |
"addl2\t$$$1,sp" | | |
asp $1==(0-4) | | | {CONST4,0} | |
asp $1==(0-8) | | | {CONST8,"0"} | |
-asp | | remove(ALL)
+asp | STACK |
"subl2\t$$%(0-$1%),sp" | | |
ass $1==4 | source4 |
remove(ALL)
"addl2\t%[1],sp" | | |
ass !defined($1) | source4 |
remove(ALL)
- move(%[1],R2)
+ move(%[1],R2) /* R2 <= leave return area intact. */
"jsb\t.ass"
erase(R2) | | |
blm $1==4 | nonexist1 nonexist1 |
erase(%[1]) erase(%[2]) | | |
blm | sreg4 sreg4 |
remove(ALL)
- allocate(REG={CONST1, $1/4})
+ allocate(REG={CONST1,$1/4})
#ifdef LOCLABS
"1:\nmovl\t(%[2])+,(%[1])+"
"sobgtr\t%[a],1b"
#endif
erase(%[1]) erase(%[2]) erase(%[a])
| | |
-bls $1==4 | |
- remove(ALL)
+bls $1==4 | | remove(ALL)
move({CONST1,4},R0)
"jsb\t.bls"
erase(R0) | | |
move(%[1],R0)
"jsb\t.bls"
erase(R0) | | |
-csa $1==4 | | remove(ALL)
- "jmp\t.csa4" | | |
+csa $1==4 | STACK |
+ "jmp\t.csa4" | | |
csa !defined($1) | source4 |
remove(ALL)
move(%[1],R0)
"jmp\t.csa"
erase(R0) | | |
-csb $1==4 | | remove(ALL)
- "jmp\t.csb4" | | |
+csb $1==4 | STACK |
+ "jmp\t.csb4" | | |
csb !defined($1) | source4 |
remove(ALL)
move(%[1],R0)
"jmp\t.csb"
erase(R0) | | |
-dch | | | | loi 4 |
+dch | reg4 | | {displ4,%[1],"12"} | | |
dup stl $1==4 | | | | stl $2 lol $2 |
-#ifdef REGVARS
-dup sil $1==4 && inreg($2)==2
- | bigsource4 |
- REMEXTANDLOC
- move(%[1],{regdef4,regvar($2)})
- | {regdef4,regvar($2)} | |
-#endif REGVARS
-dup $1==4 | reg4+regdef4 | | %[1] %[1] | |
+dup $1==4 | dups4 | | %[1] %[1] | |
#ifdef REGVARS
dup $1==8 | bigsource8-regch8 | | %[1] %[1] | |
#else REGVARS
dup $1==8 | bigsource8 | | %[1] %[1] | |
#endif REGVARS
-dup | | remove(ALL)
+dup | STACK |
allocate(REG,REG={CONST1,$1/4})
"addl3\tsp,$$$1,%[a]"
#ifdef LOCLABS
erase(R0) | | |
exg $1==4 | bigsource4 bigsource4 | | %[1] %[2] | |
exg $1==8 | bigsource8 bigsource8 | | %[1] %[2] | |
-exg defined($1) | | remove(ALL)
+exg defined($1) | STACK |
move({CONST4,$1},R0)
"jsb\t.exg"
erase(R0) | | |
"movl\t.trpim,%[a]" | %[a] | |
lin | | "movl\t$$$1,hol0" | | |
lni | | "incl\thol0" | | |
-gto | | remove(ALL)
+gto | STACK |
"pushl\t$$$1"
"jmp\t.gto" | | |
lor $1==0 | | | LB | |
-lor $1==1 | | remove(ALL)
+lor $1==1 | STACK |
allocate(REG)
"movl\tsp,%[a]" | %[a] | |
lor $1==2 | | allocate(REG)
move(%[1],R0)
"jsb\t.lpb"
erase(R0) | R0 | |
-mon | | remove(ALL)
+mon | STACK |
"jsb\t.mon" | | |
-nop | | remove(ALL)
+nop | STACK |
"jsb\t.nop" | | |
#ifdef DORCK
-rck $1==4 | | remove(ALL)
+rck $1==4 | STACK |
"jsb\t.rck4" | | |
rck !defined($1) | source4 |
remove(ALL)
rck !defined($1) | bigsource4 bigsource4 | | | |
#endif REGVARS
#endif DORCK
-rtt | | | | ret 0 |
-sig | | remove(ALL)
- "jsb\t.sig" | | |
-sim | | remove(ALL)
- "jsb\t.sim" | | |
+rtt | | "ret" | | |
+sig | STACK |
+ "jsb\t.sig" | | |
+sim | STACK |
+ "jsb\t.sim" | | |
str $1==0 | source4 |
remove(ALL)
- "movl\t%[1],fp" | | |
+ "jsb\t.strlb" | | |
str $1==1 | source4 |
remove(ALL)
- "movl\t%[1],sp" | | |
-str $1==2 | | remove(ALL)
- "jsb\t.strhp" | | |
-trp | | remove(ALL)
- "jsb\t.trp" | | |
+ "movl\t%[1],sp" | | |
+str $1==2 | STACK |
+ "jsb\t.strhp" | | |
+trp | STACK |
+ "jsb\t.trp" | | |
/********************************
* Coercions: *
| source2 | allocate(%[1],REG=%[1]) | %[a] | |
| bigsource4 | allocate(%[1],REG=%[1]) | %[a] | |
| bigsource8 | allocate(%[1],QREG=%[1]) | %[a] | |
+| reg4 | | {adispl,%[1],"0"} | |
+| ADDR_LOCAL | | {adispl,%[1.reg],tostring(%[1.num])} | |
+| bigsource4-adispl-reg4-ADDR_LOCAL |
+ allocate(%[1],REG=%[1]) | {adispl,%[a],"0"} | |
/********************************
* B: From STACK to register *
| regdef8 | | {displ4,%[1.reg],"4"} {regdef4,%[1.reg]} | |
| displ8 | | {displ4,%[1.reg],%[1.ind]+"+4"}
{displ4,%[1.reg],%[1.ind]} | |
-| LOCAL8 | | {LOCAL4,%[1.num]+4,4} {LOCAL4,%[1.num],4} | |
+| LOCAL8 | | {LOCAL4,%[1.reg],%[1.num]+4,4} {LOCAL4,%[1.reg],%[1.num],4}| |
| EXTERNAL8 | | {EXTERNAL4,%[1.ind]+"+4"} {EXTERNAL4,%[1.ind]} | |
| QREG | | %[1.2] %[1.1] | |
| regdef4 | | {displ4,%[1.reg],"0"} | |
-| ADDR_LOCAL | | {adispl,LB,tostring(%[1.num])} | |
-| reg4 | | {adispl,%[1],"0"} | |
-| LOCAL4 | | {displ4,LB,tostring(%[1.num])} | |
-| nonexist+source4-reg4-adispl-ADDR_LOCAL |
- allocate(%[1],REG=%[1]) | {adispl,%[a],"0"} | |
+| LOCAL4 | | {displ4,%[1.reg],tostring(%[1.num])} | |
MOVES:
-(CONST %[num]==0, source1, "clrb\t%[2]", (2,4)+%[2])
-(CONST %[num]==0, source2, "clrw\t%[2]", (2,4)+%[2])
-(CONST %[num]==0, source4, "clrl\t%[2]"
+(CONST %[num]==0,source1, "clrb\t%[2]", (2,4)+%[2])
+(CONST %[num]==0,source2, "clrw\t%[2]", (2,4)+%[2])
+(CONST %[num]==0,source4, "clrl\t%[2]"
setcc(%[2]), (2,4)+%[2])
-(CONST %[num]<0 && ufit(0-%[num],6), source2,
+(CONST %[num]<0 && ufit(0-%[num],6),source2,
"mnegw\t$$%(0-%[1.num]%),%[2]"
setcc(%[2]), (2,4)+%[2])
-(CONST ufit(%[num],8) && !ufit(%[num],6), source2,
+(CONST ufit(%[num],8) && !ufit(%[num],6),source2,
"movzbw\t%[1],%[2]"
setcc(%[2]), (2,4)+%[2])
-(CONST sfit(%[num],8) && !ufit(%[num],6), source2,
+(CONST sfit(%[num],8) && !ufit(%[num],6),source2,
"cvtbw\t%[1],%[2]"
setcc(%[2]), (2,4)+%[2])
-(CONST %[num]<0 && ufit(0-%[num],6), source4,
+(CONST %[num]<0 && ufit(0-%[num],6),source4,
"mnegl\t$$%(0-%[1.num]%),%[2]"
setcc(%[2]), (2,4)+%[2])
-(CONST ufit(%[num],8) && !ufit(%[num],6), source4,
+(CONST ufit(%[num],8) && !ufit(%[num],6),source4,
"movzbl\t%[1],%[2]"
setcc(%[2]), (2,4)+%[2])
-(CONST sfit(%[num],8) && !ufit(%[num],6), source4,
+(CONST sfit(%[num],8) && !ufit(%[num],6),source4,
"cvtbl\t%[1],%[2]"
setcc(%[2]), (2,4)+%[2])
-(CONST ufit(%[num],16) && !ufit(%[num],6), source4,
+(CONST ufit(%[num],16) && !ufit(%[num],6),source4,
"movzwl\t%[1],%[2]"
setcc(%[2]), (2,4)+%[2])
-(CONST sfit(%[num],16) && !ufit(%[num],6), source4,
+(CONST sfit(%[num],16) && !ufit(%[num],6),source4,
"cvtwl\t%[1],%[2]"
setcc(%[2]), (2,4)+%[2])
-(CONST8 %[ind]=="0", source8, "clrq\t%[2]"
+(CONST8 %[ind]=="0",source8, "clrq\t%[2]"
setcc(%[2]), (2,4)+%[2])
-(FCONST8 %[num]==0, source8, "clrq\t%[2]"
+(FCONST8 %[num]==0,source8, "clrq\t%[2]"
setcc(%[2]), (2,4)+%[2])
-(FCONST8, source8, "movd\t%[1],%[2]"
+(FCONST8,source8, "movd\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
#ifdef REGVARS
/* Tokens with side effects should not be remembered. */
(reginc8+regdec8,reg8, "movq\t%[1],%[2]"
setcc(%[2]) erase(%[2]),(3,7)+%[1])
#endif REGVARS
-(source8, source8, "movq\t%[1],%[2]"
+(source8,source8, "movq\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(source4, source4, "movl\t%[1],%[2]"
+(source4,source4, "movl\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(source2, source2, "movw\t%[1],%[2]"
+(source2,source2, "movw\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(source1, source1, "movb\t%[1],%[2]"
+(source1,source1, "movb\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(source1, source2, "movzbw\t%[1],%[2]"
+(source1,source2, "movzbw\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(source1, source4, "movzbl\t%[1],%[2]"
+(source1,source4, "movzbl\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(source2, source4, "movzwl\t%[1],%[2]"
+(source2,source4, "movzwl\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(source2, source1, "cvtwb\t%[1],%[2]"
+(source2,source1, "cvtwb\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(source4, source1, "cvtlb\t%[1],%[2]"
+(source4,source1, "cvtlb\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(source4, source2, "cvtlw\t%[1],%[2]"
+(source4,source2, "cvtlw\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(aind1, source4, "movab\t%[1],%[2]"
+(aind1,source4, "movab\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(aind2, source4, "movaw\t%[1],%[2]"
+(aind2,source4, "movaw\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(aind4, source4, "moval\t%[1],%[2]"
+(aind4,source4, "moval\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(aind8, source4, "movaq\t%[1],%[2]"
+(aind8,source4, "movaq\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
-(nonexist1, source4, "movab\t%[1],%[2]"
+(nonexist1,source4, "movab\t%[1],%[2]"
setcc(%[2]), (3,4)+%[1]+%[2])
TESTS:
(source1, "tstb\t%[1]" ,(2,4) + %[1])
STACKS:
-(CONST %[num]==0, ,
+(CONST %[num]==0,,
"clrl\t-(sp)", (2,7))
-(CONST %[num]<0 && ufit(0-%[num],6), ,
+(CONST %[num]<0 && ufit(0-%[num],6),,
"mnegl\t$$%(0-%[1.num]%),-(sp)",
(2,7) + %[1])
-(CONST ufit(%[num],6), ,
+(CONST ufit(%[num],6),,
"pushl\t%[1]", (2,7) + %[1])
-(CONST8 %[ind]=="0", ,
+(CONST8 %[ind]=="0",,
"clrq\t-(sp)", (2,10))
-(CONST sfit(%[num],8), ,
+(CONST sfit(%[num],8),,
"cvtbl\t%[1],-(sp)", (3,7) + %[1])
-(source1, , "movzbl\t%[1],-(sp)", (3,7) + %[1])
-(CONST sfit(%[num],16), ,
+(source1,, "movzbl\t%[1],-(sp)", (3,7) + %[1])
+(CONST sfit(%[num],16),,
"cvtwl\t%[1],-(sp)", (3,7) + %[1])
-(source2, , "movzwl\t%[1],-(sp)", (3,7) + %[1])
-(source4, , "pushl\t%[1]"
+(source2,, "movzwl\t%[1],-(sp)", (3,7) + %[1])
+(source4,, "pushl\t%[1]"
setcc(%[1]), (2,7) + %[1])
-(source8, , "movq\t%[1],-(sp)"
+(source8,, "movq\t%[1],-(sp)"
setcc(%[1]), (3,10)+ %[1])
-(nonexist1, , "pushal\t%[1]", (2,7) + %[1])
-(FCONST8 %[num]==0, ,
+(nonexist1,, "pushal\t%[1]", (2,7) + %[1])
+(FCONST8 %[num]==0,,
"clrq\t-(sp)", (2,10))
-(FCONST8, , "movd\t%[1],-(sp)", (3,10) + %[1])
-(aind1, , "pushab\t%[1]", (2,7) + %[1])
-(aind2, , "pushaw\t%[1]", (2,7) + %[1])
-(aind4, , "pushal\t%[1]", (2,7) + %[1])
-(aind8, , "pushaq\t%[1]", (2,7) + %[1])
+(FCONST8,, "movd\t%[1],-(sp)", (3,10) + %[1])
+(aind1,, "pushab\t%[1]", (2,7) + %[1])
+(aind2,, "pushaw\t%[1]", (2,7) + %[1])
+(aind4,, "pushal\t%[1]", (2,7) + %[1])
+(aind8,, "pushaq\t%[1]", (2,7) + %[1])