[M3commit] CVS Update: cm3
Jay Krell
jkrell at elego.de
Mon Mar 1 13:54:37 CET 2010
CVSROOT: /usr/cvs
Changes by: jkrell at birch. 10/03/01 13:54:37
Modified files:
cm3/m3-sys/m3back/src/: Codex86.m3
Log message:
work in progress to inline all 64bit shifts (and then rotates)
the 64bit shift code in particular in the AMD manual is around 6 instruction
however before we do that:
teach unOp about double shift (aka shift by ecx)
not yet used, as these cases still call functions
split up the double ops into separate functions for readability:
not_double, add_double, add_double_immediate, etc.
(not, negate, add, subtract, compare, immediate and not; bigger
things like multiply/divide generate function calls at a higher level, currently;
given that our complicated single precision divide was inlined, probably will
inline that for double, probably multiple too; while the result is bloated,
I like the idea of reducing hand.c, and longint use on 32bit targets
maybe ok to bloat?)
also goal to have less duplication of the various logic such
as left vs. right vs. "signed" shift, the compares to 32, 64, etc.
at least move the code into fewer functions
also stretch goal is to alter/eliminate the binop/binop1/binopWithShiftCount split
into something that seems less hoky. Part of the issue is that
other than oNOT, and separate functions like swapOp, movOp, nothing is really
"just loop over the parts"
More information about the M3commit
mailing list