{File name: LispFPTDefs.dfn Last edited by cal 14-Nov-83 14:28:09 Last edited by Sturgis 15-Sep-83 16:40:30 Descrition: Floating point code for Lisp {modified from Cedar fpt code} Created by H. Sturgis } RegDef[divisorHigh, R, 2]; {TT} RegDef[divCount, R, 3]; {PV} {must be saved and restored} RegDef[divResult, R, 4]; {S} {must be saved and restored} RegDef[divisorLow, R, 6]; {Rx} RegDef[uFix ,U, 03]; {goes with FLFixA - temp} RegDef[uHighHalf1 ,U, 07]; {FPT temp} RegDef[uExp1 ,U, 08]; {FPT temp} RegDef[uLowHalf1 ,U, 09]; {FPT temp} RegDef[uExp2 ,U, 0A]; {FPT temp} RegDef[uHighHalf2 ,U, 0B]; {FPT temp} RegDef[uLowHalf2 ,U, 0C]; {FPT temp} RegDef[uSign1 ,U, 26]; {FPT temp} RegDef[uSign2 ,U, 27]; {FPT temp} RegDef[uDivCount, U, 30]; {FPT temp} RegDef[uStickyBit ,U, 31]; {FPT temp} RegDef[uDivResult, U, 42]; {FPT temp} RegDef[uib ,U, 6E]; {FPT temp} RegDef[ufloatplus ,U, 04]; {FPT temp} RegDef[ufloatdiff ,U, 05]; {FPT temp} RegDef[ufloattimes ,U, 030]; {FPT temp} RegDef[ufloatidiff ,U, 06]; {FPT temp} RegDef[ufloat ,U, 042]; {FPT temp} RegDef[uArg2Hi ,U, 057]; {FPT temp} RegDef[uArg2Lo ,U, 058]; {FPT temp} RegDef[uStickyReg ,U, 24]; {** rA = TT} {part of processor state, [0] is non zero if fpt micro code should trap on inexact result, and [15] is non zero if there has been a non trapped inexact result} {must match corresponding in StartMesa} RegDef[uFLmode, U, 65],{low 4 bits are the Floating Point Mode -- 16 bit is set to one if an inexact result occurs -- sign bit is set to one if inexact trap is desired} RegDef[uPPsave, U, 4C],{contains the last output to the PPort exclusive of setting it to read} {return points for unpack routines} Set[L0.mult2, 1]; Set[L0.mult3, 2]; Set[L0.mult4, 3]; Set[L0.mult5, 4]; Set[L0.add1, 5]; Set[L0.sub1, 6]; {return points for denorm routine, DeNormRets} Set[L0.rePack1, 2]; {Set[L0.add1, 5]; def'd above} {used to distinguish CreateCell opcodes from subr calls} {Set[L3.FptArg1, 04];} {return points for rounding routine, RoundRets} Set[L0.rePack2, 1]; {must be 1 mod 2} {divide loop return points} Set[L0.div2, 1]; Set[L0.div3, 2]; {returns from FptPrep and used for FLop} Set[L2.Fplus, 10'b];{must be same as L2.plus} Set[L2.Fdiff, 11'b];{must be same as L2.diff} Set[L2.Ftimes, 13'b]; Set[L2.Fquot, 14'b]; Set[L2.Fgreat, 12'b];{must be same as L2.greaterp} Set[L2.Fidiff, 15'b]; Set[L2.Fmax, 16'b]; Set[L2.Fmin, 17'b]; { returns relative to FloatItRet} Set[L3.FunSecond, 04]; Set[L3.FunUSecond, 05]; Set[L3.FunFirst, 06]; Set[L3.FunUFirst, 07]; Set[L3.btou, 08]; { returns relative to fptQ2ret and fptQdone} Set[L3.UB2Q2, 03];{must be different from L3.FunUSecond and L3.FunUFirst} { used to distinguish FPT callers at FLExit } Set[L0.Boxed, 01]; Set[L0.UnBoxed, 02]; { ib values for LispUnboxed2 } Set[ib.UF2.add, 0], Set[ib.UF2.sub, 1], Set[ib.UF2.isub, 2], Set[ib.UF2.mult, 3], Set[ib.UF2.div, 4], Set[ib.UF2.great, 5], Set[ib.UF2.max, 6], Set[ib.UF2.min, 7], { ib values for LispUnboxed1 } Set[ib.UF1.utob, 0], Set[ib.UF1.btou, 1], Set[ib.UF1.abs, 2], Set[ib.UF1.neg, 3]; Set[ib.UF1.fix, 4]; { E N D }