Several fixes: SDF was wrong, and shifts do NOT set contition codes properly

This commit is contained in:
ceriel 1992-12-14 16:37:35 +00:00
parent 2361e37811
commit bc2744ca5c

View file

@ -267,18 +267,17 @@ pop rm:wo.
push anyreg:ro cost(1,2).
push const:ro cost(1,2).
push rm:ro cost(2,5).
rcl rm:rw:cc, ANYCON+SHIFT_CREG:ro cost(2,10).
rcr rm:rw:cc, ANYCON+SHIFT_CREG:ro cost(2,10).
rcl rm:rw, ANYCON+SHIFT_CREG:ro kills :cc cost(2,10).
rcr rm:rw, ANYCON+SHIFT_CREG:ro kills :cc cost(2,10).
ret cost(1,10).
rol rm:rw:cc, ANYCON+SHIFT_CREG:ro.
ror rm:rw:cc, ANYCON+SHIFT_CREG:ro.
sal rm:rw:cc, ANYCON+SHIFT_CREG:ro.
sar rm:rw:cc, ANYCON+SHIFT_CREG:ro.
rol rm:rw, ANYCON+SHIFT_CREG:ro kills :cc.
ror rm:rw, ANYCON+SHIFT_CREG:ro kills :cc.
sal rm:rw, ANYCON+SHIFT_CREG:ro kills :cc.
sar rm:rw, ANYCON+SHIFT_CREG:ro kills :cc.
sbb rm:rw:cc, regorconst:ro.
sbb anyreg:rw:cc, rmorconst:ro.
shl rm:rw:cc, ANYCON+SHIFT_CREG:ro.
shr rm:rw:cc, ANYCON+SHIFT_CREG:ro.
sxx rm:rw:cc, ANYCON+SHIFT_CREG:ro.
shl rm:rw, ANYCON+SHIFT_CREG:ro kills :cc.
shr rm:rw, ANYCON+SHIFT_CREG:ro kills :cc.
#ifdef REGVARS
sub LOCAL:rw:cc, rmorconst:ro. /* only for register variables; UNSAFE !!! */
#endif
@ -936,9 +935,6 @@ pat sdf
kills mem_nonlocals
gen pop {EXTERN,%1.off+$1}
pop {EXTERN,%1.off+$1+4}
with halfindir regorconst
kills all_mems
gen mov %1,%2 yields %1 leaving stf $1+4
/****************************************************************