{File name: <>Klamath>SModeledRUM>FloatingPoint.dfn
created : T.Tokuanga 21-Mar-85 13:38:53
last edited: T.Tokunaga 5-Apr-85 20:04:12 correct spelling mistake.
last edited: T.Tokunaga 1-Apr-85 16:44:42 change the defs. of u-reg,
last edited: T.Tokunaga 1-Apr-85 14:45:35 add the defs of U-reg for saving the R-register during float divide primitive
last edited: T.Tokunaga 26-Mar-85 18:39:16 change the defs of R-reg,
}
RegDef[floatT, R, 2]; { temporary for float dividing }
RegDef[floatTemp, R, 3];
RegDef[divCount, R, 3]; { temporary for float dividing }
RegDef[divResult, R, 4]; { temporary for float dividing }
RegDef[divisorHigh, R, 5]; { temporary for float dividing }
RegDef[divisorLow, R, 6]; { temporary for float dividing }
RegDef[uArg1Hi ,U, 14]; { used in divide or compare }
RegDef[uArg1Lo ,U, 17]; { used in devide or compare }
RegDef[uHighHalf1 ,U, 19]; { divide }
RegDef[uExp1 ,U, 1A]; { divide }
RegDef[uLowHalf1 ,U, 1B]; { divide }
RegDef[uExp2 ,U, 1C]; { divide }
RegDef[uHighHalf2 ,U, 1D]; { divide }
RegDef[uLowHalf2 ,U, 1E]; { divide }
RegDef[uStickyReg ,U, 24]; { divide }
RegDef[uStickyBit ,U, 31]; { divide }
RegDef[uSign1 ,U, 34]; { divide }
RegDef[uSign2 ,U, 35]; { divide }
RegDef[uFloatComResult ,U, 37]; { }
RegDef[uPPsave, U, 3C];
RegDef[uFloat ,U, 42]; { AsFloat }
RegDef[uSaveIPLow ,U, 43]; { to save the ipLow during float divide primitive}
RegDef[uFloatPlus ,U, 44]; { Float Add }
RegDef[uSaveStackLow ,U, 44]; { to save the stacklow during float divide primitive}
RegDef[uNewValHi, U, 4B]; { Result of the floating point operatio nis stored -- High half }
RegDef[uNewValLo, U, 4C]; { Result of the floating point operation is stored -- Low half }
RegDef[uFloatMinus ,U, 55]; { Float Subtract : A-B}
RegDef[uSaveHomeLow ,U, 55]; { to save the homeLow during float divide primitive}
RegDef[uFloatMode ,U, 58]; { }
RegDef[uArg2Hi ,U, 5C]; { }
RegDef[uArg2Lo ,U, 5D]; { }
RegDef[uFloatMultiply ,U, 60]; { Multiply}
RegDef[uFloatFix ,U, 63]; { }
{ floating point constant =Float=}
Set[unaryMessage, 0];
Set[binaryMessage, 1];
Set[asFloat, 0];
Set[floatAdd, 0];
Set[floatTruncated, 1];
Set[floatSub, 1];
Set[floatFractional, 2];
Set[floatLessThan, 2];
Set[floatExponent, 3];
Set[floatGreaterThan, 3];
Set[RN.PI.IEEE, 4];
Set[floatTwoTimes, 4];
Set[floatLessOrEqual, 4];
Set[floatGreaterOrEqual, 5];
Set[floatEqual, 6];
Set[floatNotEqual, 7];
Set[floatMultiply, 8];
Set[floatDivide, 9];
Set[classFloatPointer, 14]; { Oop for Class of the floating point, =Float=}
{ for fptDivideLoop }
Set[L3.divide1, 0]; {float divide }
Set[L3.divide2, 1]; {float divide }
{ for deNorm }
Set[L3.rePack1, 0]; {float divide }
{ for checkFloatType ----}
Set[L1.checkResultType, 0]; {float compare}
Set[L1.checkInfinity, 1]; {float Compare}
Set[L1.checkInfinity1, 2]; {float Compare}
Set[L1.checkReceiver, 3]; {float Divide}
Set[L1.checkArgument, 4]; {float Divide}
{ for floatCompare subroutine }
Set[L2.floatLessThan, 0];
Set[L2.floatGreaterThan, 1];
Set[L2.floatLessOrEqual, 2];
Set[L2.floatGreaterOrEqual, 3];
Set[L2.floatEqual, 4];
Set[L2.floatNotEqual, 5];
Set[floatZero, 0]; { for floarcomapre,=Float=}
Set[floatNormal, 1]; { for floatcompare, =Float=}
Set[floatInfinity, 2]; { for floatcompare, =Float=}
Set[floatNan, 3], { for floatcompare, =Float=}