/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: February 21, 1992 11:53:29 pm PST */ /* C2C version: October 16, 1990 (native) */ /* ref-counting: off */ /* file: FloatOpsImpl, module: FloatOpsImpl */ /* switches: cfhklnouw */ #include #include #define XRM_BITXOR(x, y) (((word)(x)) ^ ((word)(y))) #define XRM_BITOR(x, y) (((word)(x)) | ((word)(y))) #define XRM_BITAND(x, y) (((word)(x)) & ((word)(y))) #define XRM_BITLSHIFT(x, y) ((word)(x) << (word)(y)) #define XRM_BITRSHIFT(x, y) ((word)(x) >> (word)(y)) static char versionStamp[] = "@(#)mob_version [2808075000,2594761725] FloatOpsImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef word (*fPt)(); typedef struct {word f0, f1;} W2; #define SOURCE(p, l) /* source p, l */ #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR_RaiseBoundsFault()) : (idx) ) #define INEG(x) ( (word) ( - ((int) (word) (x)) ) ) static float fc6 = 0.0; #define IOP2(op, x, y) ( (word) ((x) op (y)) ) static void NoName_Q5268(); static void FloatOpsImpl_P0(); extern word XR_RealSub(); extern word XR_RealAdd(); extern word XR_RealMul(); extern word XR_RealDiv(); extern word XR_FloatInt(); extern word XR_FloatCard(); extern word XR_REAL32_Fix(); extern word XR_REAL32_Round(); extern word XR_REAL32_Floor(); extern word XR_REAL32_Ceiling(); extern word XR_RealNeg(); extern word XR_RealAbs(); extern word XR_RealMin(); extern word XR_RealMax(); extern word XR_RealGt(); extern word XR_RealGe(); extern word XR_RealEq(); static word SoftCmp_P1500(); extern word XR_RealLt(); extern word XR_RealLe(); extern word XR_SignedPwr(); extern word XR_UnsignedPwr(); extern word XR_RealPwr(); static word SetExceptionFlag_P1860(); static word RaiseFloatError_P1920(); static word GetStickyFlags_P1980(); static word SetStickyFlags_P2040(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\247\137\322\370\300\232\250\353\375\100\164\000\000"}; static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\313\044\005\371\300\370\023\007\040\100\150\000\000"}; static struct { word f0[6]; word f6; word f7; word f8; word f9; word f10; word f11; word f12; word f13; word f14; word f15; word f16; word f17; word f18; word f19; word f20; word f21; word f22; word f23; word f24; word f25; word f26; word f27; word f28; word f29; word f30; word f31; word f32; word f33; word f34; word f35; word f36; word f37; word f38; word f39; word f40; word f41; word f42; word f43; word f44; word f45; word f46; word f47; word f48; word f49; word f50; word f51; word f52; word f53; word f54; word f55; word f56; word f57; word f58; word f59; word f60; word f61[4]; } globalframe = { {0}, (word) SetStickyFlags_P2040, 0, (word) GetStickyFlags_P1980, 0, (word) RaiseFloatError_P1920, 0, (word) SetExceptionFlag_P1860, 0, (word) XR_RealPwr, 0, (word) XR_UnsignedPwr, 0, (word) XR_SignedPwr, 0, (word) XR_RealLe, 0, (word) XR_RealLt, 0, (word) SoftCmp_P1500, 0, (word) XR_RealEq, 0, (word) XR_RealGe, 0, (word) XR_RealGt, 0, (word) XR_RealMax, 0, (word) XR_RealMin, 0, (word) XR_RealAbs, 0, (word) XR_RealNeg, 0, (word) XR_REAL32_Ceiling, 0, (word) XR_REAL32_Floor, 0, (word) XR_REAL32_Round, 0, (word) XR_REAL32_Fix, 0, (word) XR_FloatCard, 0, (word) XR_FloatInt, 0, (word) XR_RealDiv, 0, (word) XR_RealMul, 0, (word) XR_RealAdd, 0, (word) XR_RealSub, 0, (word) FloatOpsImpl_P0, {0} }; static void NoName_Q5268() { register ptr gf_c0294 = (ptr) &globalframe; word var_c23052; (void) XR_DeclareGlobalFrame((word) "FloatOpsImpl", &globalframe, (word) XR_GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf_c0294)+240) /* var_c19180 */ ); var_c23052 = (word) XR_ImportInterface((word) "Real", (word) XR_GetTypeIndexS((word) (&string2)), 11); (* (( (ptr) gf_c0294)+63)/* var_c22988 */ ) = var_c23052; var_c23052 = (word) XR_ImportInterface((word) "RealFns", (word) XR_GetTypeIndexS((word) (&string3)), 36); (* (( (ptr) gf_c0294)+62)/* var_c22924 */ ) = var_c23052; (void) XR_ImportProcS(var_c23052, 67633922); var_c23052 = (word) XR_ExportInterface((word) "FloatOps", (word) XR_GetTypeIndexS((word) (&string4)), 23); (* (( (ptr) gf_c0294)+64)/* var_c23084 */ ) = var_c23052; (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+232)/* var_c19148 */ , 67633154); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+224)/* var_c19116 */ , 67633410); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+216)/* var_c19084 */ , 67633666); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+208)/* var_c19052 */ , 67633922); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+200)/* var_c19020 */ , 67372033); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+192)/* var_c18988 */ , 67372289); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+184)/* var_c18956 */ , 67372545); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+176)/* var_c18924 */ , 67372801); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+168)/* var_c18892 */ , 67373057); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+160)/* var_c18860 */ , 67373313); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+152)/* var_c18828 */ , 67373569); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+144)/* var_c18796 */ , 67373825); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+136)/* var_c18764 */ , 67636226); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+128)/* var_c18732 */ , 67636482); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+120)/* var_c18700 */ , 67636738); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+112)/* var_c18668 */ , 67636994); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+104)/* var_c18636 */ , 67637250); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+96)/* var_c18604 */ , 67637506); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+88)/* var_c18572 */ , 67637762); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+80)/* var_c18540 */ , 67638018); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+72)/* var_c18508 */ , 67638274); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+64)/* var_c18476 */ , 67638530); (void) XR_ExportProcS(var_c23052, (word) (( (bPt) gf_c0294)+56)/* var_c18444 */ , 67638786); } static void FloatOpsImpl_P0(formal_c036, formal_c035) word formal_c036; word formal_c035; { /* FloatOpsImpl: */ } extern word XR_RealSub(r0_v5272, r1_v5300) word r0_v5272; word r1_v5300; { word var_c5344; word sMask_v8608 = 2147483648; /* SoftSub: */ SOURCE(2423, 2584) SOURCE(2560, 59) r1_v5300 = (word) XRM_BITXOR(r1_v5300, sMask_v8608); SOURCE(2621, 136) if (((word) XRM_BITOR(r0_v5272, sMask_v8608) < (word) XRM_BITOR(r1_v5300, sMask_v8608))) { SOURCE(2719, 40) { word temp_v8652; SOURCE(2721, 16) temp_v8652 = r0_v5272; SOURCE(2739, 7) r0_v5272 = r1_v5300; SOURCE(2748, 9) r1_v5300 = temp_v8652; }; }; SOURCE(2762, 2250) { word guard_v8696 = 0; word r0s_v8724; word r1s_v8752; word resExp_v8780; word dExp_v8808; SOURCE(2783, 58) r0s_v8724 = (word) XRM_BITAND(r0_v5272, sMask_v8608); SOURCE(2843, 58) r1s_v8752 = (word) XRM_BITAND(r1_v5300, sMask_v8608); SOURCE(2903, 20) resExp_v8780 = (((unsigned)r0_v5272 << 1) >> 24); SOURCE(2925, 25) dExp_v8808 = (resExp_v8780 - (((unsigned)r1_v5300 << 1) >> 24)); if ((resExp_v8780 == 255)) { SOURCE(2990, 29) return((word) RaiseFloatError_P1920(1)); } else { if ((dExp_v8808 > 24)) { SOURCE(3045, 11) return(r0_v5272); } else { SOURCE(3069, 1940) { word mnr_v8852 = 8388608; word mMask_v8880 = 8388607; word r0m_v8908; word mant_v8936; SOURCE(3137, 58) r0m_v8908 = (word) XRM_BITAND(r0_v5272, mMask_v8880); SOURCE(3197, 65) mant_v8936 = ((word) XRM_BITAND(r1_v5300, mMask_v8880) + mnr_v8852); SOURCE(3264, 238) if ((dExp_v8808 == resExp_v8780)) { SOURCE(3288, 42) if ((resExp_v8780 > 24)) { SOURCE(3319, 11) return(r0_v5272); }; SOURCE(3332, 35) mant_v8936 = (word) XRM_BITAND(mant_v8936, mMask_v8880); SOURCE(3369, 110) if ((resExp_v8780 == 0)) { SOURCE(3390, 58) if ((r0s_v8724 == r1s_v8752)) { SOURCE(3408, 23) mant_v8936 = (r0m_v8908 + mant_v8936); } else { SOURCE(3431, 17) mant_v8936 = (r0m_v8908 - mant_v8936); }; SOURCE(3450, 29) return((mant_v8936 + r0s_v8724)); }; SOURCE(3484, 18) mant_v8936 = (mant_v8936 + mant_v8936); }; SOURCE(3507, 30) r0m_v8908 = (word) XRM_BITOR(r0m_v8908, mnr_v8852); SOURCE(3539, 99) if ((dExp_v8808 != 0)) { SOURCE(3558, 41) { word var_c19244; word count_v18048; count_v18048 = (32 - dExp_v8808); var_c19244 = (word) XRM_BITLSHIFT(mant_v8936, count_v18048); guard_v8696 = var_c19244; }; SOURCE(3601, 37) mant_v8936 = (word) XRM_BITRSHIFT(mant_v8936, BCK(dExp_v8808, 32)); }; SOURCE(3643, 1013) if ((r0s_v8724 == r1s_v8752)) { SOURCE(3663, 17) mant_v8936 = (mant_v8936 + r0m_v8908); SOURCE(3682, 152) if ((mant_v8936 >= (mnr_v8852 + mnr_v8852))) { SOURCE(3708, 69) guard_v8696 = ((word) XRM_BITRSHIFT(guard_v8696, 1) + (word) XRM_BITLSHIFT(mant_v8936, 31)); SOURCE(3779, 34) mant_v8936 = (word) XRM_BITRSHIFT(mant_v8936, 1); SOURCE(3815, 19) resExp_v8780 = (resExp_v8780 + 1); }; } else { SOURCE(3848, 17) mant_v8936 = (r0m_v8908 - mant_v8936); SOURCE(3867, 53) if ((guard_v8696 != 0)) { SOURCE(3886, 15) mant_v8936 = (mant_v8936 - 1); SOURCE(3903, 17) guard_v8696 = (0 - guard_v8696); }; SOURCE(3923, 733) if ((mant_v8936 < mnr_v8852)) { SOURCE(3942, 719) { word shift_v8980 = 0; word temp_v9008 = 12; word var_c19308; word count_v17300; word var_c19372; word count_v17252; word var_c19436; word count_v17204; word var_c19500; word count_v17156; SOURCE(3979, 33) if ((mant_v8936 == 0)) { SOURCE(3996, 16) return(0); }; SOURCE(4014, 51) if (((word) XRM_BITRSHIFT(mant_v8936, 12) != 0)) { SOURCE(4055, 10) shift_v8980 = 12; }; SOURCE(4067, 61) count_v17300 = (shift_v8980 + 8); var_c19308 = (word) XRM_BITRSHIFT(mant_v8936, count_v17300); if ((var_c19308 != 0)) { SOURCE(4113, 15) shift_v8980 = (shift_v8980 + 8); }; SOURCE(4130, 61) count_v17252 = (shift_v8980 + 4); var_c19372 = (word) XRM_BITRSHIFT(mant_v8936, count_v17252); if ((var_c19372 != 0)) { SOURCE(4176, 15) shift_v8980 = (shift_v8980 + 4); }; SOURCE(4193, 61) count_v17204 = (shift_v8980 + 2); var_c19436 = (word) XRM_BITRSHIFT(mant_v8936, count_v17204); if ((var_c19436 != 0)) { SOURCE(4239, 15) shift_v8980 = (shift_v8980 + 2); }; SOURCE(4256, 61) count_v17156 = (shift_v8980 + 1); var_c19500 = (word) XRM_BITRSHIFT(mant_v8936, count_v17156); if ((var_c19500 != 0)) { SOURCE(4302, 15) shift_v8980 = (shift_v8980 + 1); }; SOURCE(4319, 16) shift_v8980 = (23 - shift_v8980); SOURCE(4337, 76) { word var_c19564; word count_v17108; count_v17108 = (32 - shift_v8980); var_c19564 = (word) XRM_BITRSHIFT(guard_v8696, count_v17108); mant_v8936 = ((word) XRM_BITLSHIFT(mant_v8936, BCK(shift_v8980, 32)) + var_c19564); }; SOURCE(4415, 40) guard_v8696 = (word) XRM_BITLSHIFT(guard_v8696, BCK(shift_v8980, 32)); SOURCE(4457, 23) resExp_v8780 = (resExp_v8780 - shift_v8980); SOURCE(4482, 174) if ((resExp_v8780 <= 0)) { SOURCE(4502, 156) { /*1*/ word shift_v9052; SOURCE(4504, 21) /*1*/ shift_v9052 = (1 - resExp_v8780); SOURCE(4527, 77) /*1*/ { /*1*/ word var_c19628; /*1*/ word count_v18000; /*1*/ count_v18000 = (32 - shift_v9052); /*1*/ var_c19628 = (word) XRM_BITLSHIFT(mant_v8936, count_v18000); /*1*/ guard_v8696 = ((word) XRM_BITRSHIFT(guard_v8696, BCK(shift_v9052, 32)) + var_c19628); /*1*/ }; SOURCE(4606, 38) /*1*/ mant_v8936 = (word) XRM_BITRSHIFT(mant_v8936, BCK(shift_v9052, 32)); SOURCE(4646, 10) /*1*/ resExp_v8780 = 0; /*1*/ }; }; }; }; }; SOURCE(4667, 195) if (( (int)guard_v8696 < (int)0)) { SOURCE(4704, 104) if (( (int)guard_v8696 == (int)2147483648)) { SOURCE(4749, 44) mant_v8936 = (mant_v8936 + (word) XRM_BITAND(mant_v8936, 1)); } else { SOURCE(4793, 15) mant_v8936 = (mant_v8936 + 1); }; SOURCE(4810, 52) resExp_v8780 = (resExp_v8780 + (word) XRM_BITRSHIFT(mant_v8936, 24)); }; SOURCE(4867, 60) if ((resExp_v8780 > 254)) { SOURCE(4893, 34) return((word) RaiseFloatError_P1920(2)); }; SOURCE(4929, 78) return((((word) XRM_BITAND(mant_v8936, mMask_v8880) + (resExp_v8780 << 23)) + r0s_v8724)); }; }; }; }; } extern word XR_RealAdd(r0_v5404, r1_v5432) word r0_v5404; word r1_v5432; { word var_c5476; word sMask_v9096 = 2147483648; /* SoftAdd: */ SOURCE(5019, 2523) SOURCE(5156, 136) if (((word) XRM_BITOR(r0_v5404, sMask_v9096) < (word) XRM_BITOR(r1_v5432, sMask_v9096))) { SOURCE(5254, 40) { word temp_v9140; SOURCE(5256, 16) temp_v9140 = r0_v5404; SOURCE(5274, 7) r0_v5404 = r1_v5432; SOURCE(5283, 9) r1_v5432 = temp_v9140; }; }; SOURCE(5297, 2250) { word guard_v9184 = 0; word r0s_v9212; word r1s_v9240; word resExp_v9268; word dExp_v9296; SOURCE(5318, 58) r0s_v9212 = (word) XRM_BITAND(r0_v5404, sMask_v9096); SOURCE(5378, 58) r1s_v9240 = (word) XRM_BITAND(r1_v5432, sMask_v9096); SOURCE(5438, 20) resExp_v9268 = (((unsigned)r0_v5404 << 1) >> 24); SOURCE(5460, 25) dExp_v9296 = (resExp_v9268 - (((unsigned)r1_v5432 << 1) >> 24)); if ((resExp_v9268 == 255)) { SOURCE(5525, 29) return((word) RaiseFloatError_P1920(1)); } else { if ((dExp_v9296 > 24)) { SOURCE(5580, 11) return(r0_v5404); } else { SOURCE(5604, 1940) { word mnr_v9340 = 8388608; word mMask_v9368 = 8388607; word r0m_v9396; word mant_v9424; SOURCE(5672, 58) r0m_v9396 = (word) XRM_BITAND(r0_v5404, mMask_v9368); SOURCE(5732, 65) mant_v9424 = ((word) XRM_BITAND(r1_v5432, mMask_v9368) + mnr_v9340); SOURCE(5799, 238) if ((dExp_v9296 == resExp_v9268)) { SOURCE(5823, 42) if ((resExp_v9268 > 24)) { SOURCE(5854, 11) return(r0_v5404); }; SOURCE(5867, 35) mant_v9424 = (word) XRM_BITAND(mant_v9424, mMask_v9368); SOURCE(5904, 110) if ((resExp_v9268 == 0)) { SOURCE(5925, 58) if ((r0s_v9212 == r1s_v9240)) { SOURCE(5943, 23) mant_v9424 = (r0m_v9396 + mant_v9424); } else { SOURCE(5966, 17) mant_v9424 = (r0m_v9396 - mant_v9424); }; SOURCE(5985, 29) return((mant_v9424 + r0s_v9212)); }; SOURCE(6019, 18) mant_v9424 = (mant_v9424 + mant_v9424); }; SOURCE(6042, 30) r0m_v9396 = (word) XRM_BITOR(r0m_v9396, mnr_v9340); SOURCE(6074, 99) if ((dExp_v9296 != 0)) { SOURCE(6093, 41) { word var_c19788; word count_v17952; count_v17952 = (32 - dExp_v9296); var_c19788 = (word) XRM_BITLSHIFT(mant_v9424, count_v17952); guard_v9184 = var_c19788; }; SOURCE(6136, 37) mant_v9424 = (word) XRM_BITRSHIFT(mant_v9424, BCK(dExp_v9296, 32)); }; SOURCE(6178, 1013) if ((r0s_v9212 == r1s_v9240)) { SOURCE(6198, 17) mant_v9424 = (mant_v9424 + r0m_v9396); SOURCE(6217, 152) if ((mant_v9424 >= (mnr_v9340 + mnr_v9340))) { SOURCE(6243, 69) guard_v9184 = ((word) XRM_BITRSHIFT(guard_v9184, 1) + (word) XRM_BITLSHIFT(mant_v9424, 31)); SOURCE(6314, 34) mant_v9424 = (word) XRM_BITRSHIFT(mant_v9424, 1); SOURCE(6350, 19) resExp_v9268 = (resExp_v9268 + 1); }; } else { SOURCE(6383, 17) mant_v9424 = (r0m_v9396 - mant_v9424); SOURCE(6402, 53) if ((guard_v9184 != 0)) { SOURCE(6421, 15) mant_v9424 = (mant_v9424 - 1); SOURCE(6438, 17) guard_v9184 = (0 - guard_v9184); }; SOURCE(6458, 733) if ((mant_v9424 < mnr_v9340)) { SOURCE(6477, 719) { word shift_v9468 = 0; word temp_v9496 = 12; word var_c19852; word count_v17060; word var_c19916; word count_v17012; word var_c19980; word count_v16964; word var_c20044; word count_v16916; SOURCE(6514, 33) if ((mant_v9424 == 0)) { SOURCE(6531, 16) return(0); }; SOURCE(6549, 51) if (((word) XRM_BITRSHIFT(mant_v9424, 12) != 0)) { SOURCE(6590, 10) shift_v9468 = 12; }; SOURCE(6602, 61) count_v17060 = (shift_v9468 + 8); var_c19852 = (word) XRM_BITRSHIFT(mant_v9424, count_v17060); if ((var_c19852 != 0)) { SOURCE(6648, 15) shift_v9468 = (shift_v9468 + 8); }; SOURCE(6665, 61) count_v17012 = (shift_v9468 + 4); var_c19916 = (word) XRM_BITRSHIFT(mant_v9424, count_v17012); if ((var_c19916 != 0)) { SOURCE(6711, 15) shift_v9468 = (shift_v9468 + 4); }; SOURCE(6728, 61) count_v16964 = (shift_v9468 + 2); var_c19980 = (word) XRM_BITRSHIFT(mant_v9424, count_v16964); if ((var_c19980 != 0)) { SOURCE(6774, 15) shift_v9468 = (shift_v9468 + 2); }; SOURCE(6791, 61) count_v16916 = (shift_v9468 + 1); var_c20044 = (word) XRM_BITRSHIFT(mant_v9424, count_v16916); if ((var_c20044 != 0)) { SOURCE(6837, 15) shift_v9468 = (shift_v9468 + 1); }; SOURCE(6854, 16) shift_v9468 = (23 - shift_v9468); SOURCE(6872, 76) { word var_c20108; word count_v16868; count_v16868 = (32 - shift_v9468); var_c20108 = (word) XRM_BITRSHIFT(guard_v9184, count_v16868); mant_v9424 = ((word) XRM_BITLSHIFT(mant_v9424, BCK(shift_v9468, 32)) + var_c20108); }; SOURCE(6950, 40) guard_v9184 = (word) XRM_BITLSHIFT(guard_v9184, BCK(shift_v9468, 32)); SOURCE(6992, 23) resExp_v9268 = (resExp_v9268 - shift_v9468); SOURCE(7017, 174) if ((resExp_v9268 <= 0)) { SOURCE(7037, 156) { /*1*/ word shift_v9540; SOURCE(7039, 21) /*1*/ shift_v9540 = (1 - resExp_v9268); SOURCE(7062, 77) /*1*/ { /*1*/ word var_c20172; /*1*/ word count_v17904; /*1*/ count_v17904 = (32 - shift_v9540); /*1*/ var_c20172 = (word) XRM_BITLSHIFT(mant_v9424, count_v17904); /*1*/ guard_v9184 = ((word) XRM_BITRSHIFT(guard_v9184, BCK(shift_v9540, 32)) + var_c20172); /*1*/ }; SOURCE(7141, 38) /*1*/ mant_v9424 = (word) XRM_BITRSHIFT(mant_v9424, BCK(shift_v9540, 32)); SOURCE(7181, 10) /*1*/ resExp_v9268 = 0; /*1*/ }; }; }; }; }; SOURCE(7202, 195) if (( (int)guard_v9184 < (int)0)) { SOURCE(7239, 104) if (( (int)guard_v9184 == (int)2147483648)) { SOURCE(7284, 44) mant_v9424 = (mant_v9424 + (word) XRM_BITAND(mant_v9424, 1)); } else { SOURCE(7328, 15) mant_v9424 = (mant_v9424 + 1); }; SOURCE(7345, 52) resExp_v9268 = (resExp_v9268 + (word) XRM_BITRSHIFT(mant_v9424, 24)); }; SOURCE(7402, 60) if ((resExp_v9268 > 254)) { SOURCE(7428, 34) return((word) RaiseFloatError_P1920(2)); }; SOURCE(7464, 78) return((((word) XRM_BITAND(mant_v9424, mMask_v9368) + (resExp_v9268 << 23)) + r0s_v9212)); }; }; }; }; } extern word XR_RealMul(r0_v5536, r1_v5564) word r0_v5536; word r1_v5564; { word var_c5608; word sign_v9584; word r0exp_v9612; word r1exp_v9640; word resExp_v9668; word mMask_v9696 = 8388607; word r0Mant_v9724; word r1Mant_v9752; word mant_v9780 = 0; word guard_v9808 = 0; /* SoftMul: */ SOURCE(7554, 2537) SOURCE(7624, 106) { word w2_v18268; w2_v18268 = (word) XRM_BITXOR(r0_v5536, r1_v5564); sign_v9584 = (word) XRM_BITAND(2147483648, w2_v18268); }; SOURCE(7732, 23) r0exp_v9612 = (((unsigned)r0_v5536 << 1) >> 24); SOURCE(7757, 23) r1exp_v9640 = (((unsigned)r1_v5564 << 1) >> 24); SOURCE(7782, 39) resExp_v9668 = ((r0exp_v9612 + r1exp_v9640) - 127); SOURCE(7858, 61) r0Mant_v9724 = (word) XRM_BITAND(mMask_v9696, r0_v5536); SOURCE(7921, 61) r1Mant_v9752 = (word) XRM_BITAND(mMask_v9696, r1_v5564); SOURCE(8022, 54) if (( (int)r0exp_v9612 == (int)255)) { SOURCE(8047, 29) return((word) RaiseFloatError_P1920(1)); }; SOURCE(8078, 54) if (( (int)r1exp_v9640 == (int)255)) { SOURCE(8103, 29) return((word) RaiseFloatError_P1920(1)); }; SOURCE(8134, 152) if (( (int)r0exp_v9612 == (int)0)) { SOURCE(8154, 42) if ((r0Mant_v9724 == 0)) { SOURCE(8173, 23) return(sign_v9584); }; SOURCE(8198, 88) lab_L100017: ; SOURCE(8201, 24) r0Mant_v9724 = (r0Mant_v9724 + r0Mant_v9724); SOURCE(8227, 34) if ((r0Mant_v9724 >= 8388608)) { SOURCE(8261, 4) goto lab_L100016; }; SOURCE(8267, 19) resExp_v9668 = (resExp_v9668 - 1); goto lab_L100017; lab_L100016: ; }; SOURCE(8300, 152) if (( (int)r1exp_v9640 == (int)0)) { SOURCE(8320, 42) if ((r1Mant_v9752 == 0)) { SOURCE(8339, 23) return(sign_v9584); }; SOURCE(8364, 88) lab_L100020: ; SOURCE(8367, 24) r1Mant_v9752 = (r1Mant_v9752 + r1Mant_v9752); SOURCE(8393, 34) if ((r1Mant_v9752 >= 8388608)) { SOURCE(8427, 4) goto lab_L100019; }; SOURCE(8433, 19) resExp_v9668 = (resExp_v9668 - 1); goto lab_L100020; lab_L100019: ; }; SOURCE(8466, 48) r0Mant_v9724 = (word) XRM_BITOR(r0Mant_v9724, 8388608); SOURCE(8516, 48) r1Mant_v9752 = (word) XRM_BITOR(r1Mant_v9752, 8388608); SOURCE(8566, 845) { word pLo_v9880; word pMid_v9908; word pHi_v9936; word sumLo_v9964; SOURCE(8660, 48) { word x_v16264; x_v16264 = (word) XRM_BITAND(r0Mant_v9724, 255); SOURCE(8617, 38) if ((x_v16264 == 0)) { pLo_v9880 = 0; } else { pLo_v9880 = (x_v16264 * r1Mant_v9752); }; }; SOURCE(8710, 72) { word x_v16216; { word w1_v18220; w1_v18220 = (word) XRM_BITRSHIFT(r0Mant_v9724, 8); x_v16216 = (word) XRM_BITAND(w1_v18220, 255); }; SOURCE(8617, 38) if ((x_v16216 == 0)) { pMid_v9908 = 0; } else { pMid_v9908 = (x_v16216 * r1Mant_v9752); }; }; SOURCE(8784, 53) pHi_v9936 = ((word) XRM_BITRSHIFT(r0Mant_v9724, 16) * r1Mant_v9752); SOURCE(8839, 156) { word var_c20556; word value_v17856; word var_c20620; word value_v17808; word var_c0299; value_v17856 = (word) XRM_BITAND(255, pHi_v9936); var_c20556 = (word) XRM_BITLSHIFT(value_v17856, 16); value_v17808 = (word) XRM_BITAND(65535, pMid_v9908); var_c20620 = (word) XRM_BITLSHIFT(value_v17808, 8); var_c0299 = (var_c20556 + var_c20620); sumLo_v9964 = (var_c0299 + (word) XRM_BITAND(16777215, pLo_v9880)); }; SOURCE(8997, 126) mant_v9780 = ((((word) XRM_BITRSHIFT(pHi_v9936, 8) + (word) XRM_BITRSHIFT(pMid_v9908, 16)) + (word) XRM_BITRSHIFT(pLo_v9880, 24) ) + (word) XRM_BITRSHIFT(sumLo_v9964, 24)); SOURCE(9125, 36) guard_v9808 = (word) XRM_BITLSHIFT(sumLo_v9964, 8); SOURCE(9163, 238) if ((mant_v9780 < 8388608)) { SOURCE(9196, 52) mant_v9780 = ((mant_v9780 + mant_v9780) + (word) XRM_BITRSHIFT(guard_v9808, 31)); SOURCE(9250, 21) guard_v9808 = (guard_v9808 + guard_v9808); } else { SOURCE(9333, 19) resExp_v9668 = (resExp_v9668 + 1); }; }; SOURCE(9414, 335) if (( (int)resExp_v9668 <= (int)0)) { SOURCE(9434, 320) { word shift_v10112; SOURCE(9436, 21) shift_v10112 = (1 - resExp_v9668); SOURCE(9459, 290) if ((shift_v10112 > 24)) { SOURCE(9478, 29) return(sign_v9584); } else { SOURCE(9507, 244) { word guardOut_v10156; SOURCE(9509, 54) { word count_v17760; count_v17760 = (32 - shift_v10112); guardOut_v10156 = (word) XRM_BITLSHIFT(guard_v9808, count_v17760); }; SOURCE(9565, 77) { word var_c20748; word count_v17712; count_v17712 = (32 - shift_v10112); var_c20748 = (word) XRM_BITLSHIFT(mant_v9780, count_v17712); guard_v9808 = ((word) XRM_BITRSHIFT(guard_v9808, BCK(shift_v10112, 32)) + var_c20748); }; SOURCE(9644, 53) if ((guardOut_v10156 != 0)) { SOURCE(9665, 32) guard_v9808 = (word) XRM_BITOR(guard_v9808, 1); }; SOURCE(9699, 38) mant_v9780 = (word) XRM_BITRSHIFT(mant_v9780, BCK(shift_v10112, 32)); SOURCE(9739, 10) resExp_v9668 = 0; }; }; }; }; SOURCE(9757, 180) if (( (int)guard_v9808 < (int)0)) { SOURCE(9794, 89) if ((guard_v9808 == 2147483648)) { SOURCE(9824, 44) mant_v9780 = (mant_v9780 + (word) XRM_BITAND(mant_v9780, 1)); } else { SOURCE(9868, 15) mant_v9780 = (mant_v9780 + 1); }; SOURCE(9885, 52) resExp_v9668 = (resExp_v9668 + (word) XRM_BITRSHIFT(mant_v9780, 24)); }; SOURCE(9942, 60) if (( (int)resExp_v9668 > (int)254)) { SOURCE(9968, 34) return((word) RaiseFloatError_P1920(2)); }; SOURCE(10004, 87) { word var_c0301; { word var_c20876; word value_v17664; word var_c0300; value_v17664 = resExp_v9668; var_c20876 = (word) XRM_BITLSHIFT(value_v17664, 23); var_c0300 = ((word) XRM_BITAND(mant_v9780, mMask_v9696) + var_c20876); var_c0301 = (var_c0300 + sign_v9584); }; return(var_c0301); }; } extern word XR_RealDiv(r0_v5668, r1_v5696) word r0_v5668; word r1_v5696; { word var_c5740; word guard_v10200 = 0; word sign_v10228; word r0exp_v10256; word r1exp_v10284; word resExp_v10312; word mMask_v10340 = 8388607; word r0Mant_v10368; word r1Mant_v10396; word mant_v10424 = 0; /* SoftDiv: */ SOURCE(10097, 2232) SOURCE(10186, 106) { word w2_v18172; w2_v18172 = (word) XRM_BITXOR(r0_v5668, r1_v5696); sign_v10228 = (word) XRM_BITAND(2147483648, w2_v18172); }; SOURCE(10294, 19) r0exp_v10256 = (((unsigned)r0_v5668 << 1) >> 24); SOURCE(10315, 19) r1exp_v10284 = (((unsigned)r1_v5696 << 1) >> 24); SOURCE(10336, 43) resExp_v10312 = ((r0exp_v10256 - r1exp_v10284) + 127); SOURCE(10416, 61) r0Mant_v10368 = (word) XRM_BITAND(mMask_v10340, r0_v5668); SOURCE(10479, 61) r1Mant_v10396 = (word) XRM_BITAND(mMask_v10340, r1_v5696); SOURCE(10561, 54) if ((r0exp_v10256 == 255)) { SOURCE(10586, 29) return((word) RaiseFloatError_P1920(1)); }; SOURCE(10617, 54) if ((r1exp_v10284 == 255)) { SOURCE(10642, 29) return((word) RaiseFloatError_P1920(1)); }; SOURCE(10673, 164) if ((r1exp_v10284 == 0)) { SOURCE(10693, 54) if ((r1Mant_v10396 == 0)) { SOURCE(10712, 35) return((word) RaiseFloatError_P1920(4)); }; SOURCE(10749, 88) lab_L100032: ; SOURCE(10752, 24) r1Mant_v10396 = (r1Mant_v10396 + r1Mant_v10396); SOURCE(10778, 34) if ((r1Mant_v10396 >= 8388608)) { SOURCE(10812, 4) goto lab_L100031; }; SOURCE(10818, 19) resExp_v10312 = (resExp_v10312 - 1); goto lab_L100032; lab_L100031: ; }; SOURCE(10851, 152) if ((r0exp_v10256 == 0)) { SOURCE(10871, 42) if ((r0Mant_v10368 == 0)) { SOURCE(10890, 23) return(sign_v10228); }; SOURCE(10915, 88) lab_L100035: ; SOURCE(10918, 24) r0Mant_v10368 = (r0Mant_v10368 + r0Mant_v10368); SOURCE(10944, 34) if ((r0Mant_v10368 >= 8388608)) { SOURCE(10978, 4) goto lab_L100034; }; SOURCE(10984, 19) resExp_v10312 = (resExp_v10312 - 1); goto lab_L100035; lab_L100034: ; }; SOURCE(11017, 48) r0Mant_v10368 = (word) XRM_BITOR(r0Mant_v10368, 8388608); SOURCE(11067, 48) r1Mant_v10396 = (word) XRM_BITOR(r1Mant_v10396, 8388608); SOURCE(11118, 640) SOURCE(11120, 29) { word bit_v10468 = 8388608; SOURCE(11151, 22) mant_v10424 = 8388608; SOURCE(11175, 71) if ((r0Mant_v10368 < r1Mant_v10396)) { SOURCE(11201, 24) r0Mant_v10368 = (r0Mant_v10368 + r0Mant_v10368); SOURCE(11227, 19) resExp_v10312 = (resExp_v10312 - 1); }; SOURCE(11251, 24) r0Mant_v10368 = (r0Mant_v10368 - r1Mant_v10396); SOURCE(11277, 19) if ((r0Mant_v10368 == 0)) { SOURCE(11296, 15) goto lab_L100036; }; SOURCE(11313, 393) lab_L100039: ; SOURCE(11316, 24) r0Mant_v10368 = (r0Mant_v10368 + r0Mant_v10368); SOURCE(11342, 222) if ((bit_v10468 == 1)) { SOURCE(11360, 204) if ((r0Mant_v10368 >= r1Mant_v10396)) { SOURCE(11387, 83) if ((r0Mant_v10368 == r1Mant_v10396)) { SOURCE(11411, 44) mant_v10424 = (mant_v10424 + (word) XRM_BITAND(mant_v10424, 1)); } else { SOURCE(11455, 15) mant_v10424 = (mant_v10424 + 1); }; SOURCE(11472, 92) if ((mant_v10424 == 16777216)) { SOURCE(11521, 22) mant_v10424 = 8388608; SOURCE(11545, 19) resExp_v10312 = (resExp_v10312 + 1); }; }; SOURCE(11572, 4) goto lab_L100038; }; SOURCE(11581, 32) bit_v10468 = (word) XRM_BITRSHIFT(bit_v10468, 1); SOURCE(11615, 91) if ((r0Mant_v10368 >= r1Mant_v10396)) { SOURCE(11642, 17) mant_v10424 = (mant_v10424 + bit_v10468); SOURCE(11661, 24) r0Mant_v10368 = (r0Mant_v10368 - r1Mant_v10396); SOURCE(11687, 19) if ((r0Mant_v10368 == 0)) { SOURCE(11706, 15) goto lab_L100036; }; }; goto lab_L100039; lab_L100038: ; }; goto lab_L100040; lab_L100036: ; lab_L100040: ; SOURCE(11761, 220) if (( (int)resExp_v10312 <= (int)0)) { SOURCE(11783, 198) lab_L100043: ; SOURCE(11786, 113) { word var_c21100; word w1_v18096; word w2_v18124; w1_v18096 = (word) XRM_BITAND(guard_v10200, 1); w2_v18124 = ((word) XRM_BITRSHIFT(guard_v10200, 1) + (word) XRM_BITLSHIFT(mant_v10424, 31)); var_c21100 = (word) XRM_BITOR(w1_v18096, w2_v18124); guard_v10200 = var_c21100; }; SOURCE(11901, 34) mant_v10424 = (word) XRM_BITRSHIFT(mant_v10424, 1); SOURCE(11937, 19) if (( (int)resExp_v10312 == (int)0)) { SOURCE(11956, 4) goto lab_L100042; }; SOURCE(11962, 19) resExp_v10312 = (resExp_v10312 + 1); goto lab_L100043; lab_L100042: ; }; SOURCE(11995, 180) if (( (int)guard_v10200 < (int)0)) { SOURCE(12032, 89) if ((guard_v10200 == 2147483648)) { SOURCE(12062, 44) mant_v10424 = (mant_v10424 + (word) XRM_BITAND(mant_v10424, 1)); } else { SOURCE(12106, 15) mant_v10424 = (mant_v10424 + 1); }; SOURCE(12123, 52) resExp_v10312 = (resExp_v10312 + (word) XRM_BITRSHIFT(mant_v10424, 24)); }; SOURCE(12180, 60) if (( (int)resExp_v10312 > (int)254)) { SOURCE(12206, 34) return((word) RaiseFloatError_P1920(2)); }; SOURCE(12242, 87) { word var_c0303; { word var_c21228; word value_v17616; word var_c0302; value_v17616 = resExp_v10312; var_c21228 = (word) XRM_BITLSHIFT(value_v17616, 23); var_c0302 = ((word) XRM_BITAND(mant_v10424, mMask_v10340) + var_c21228); var_c0303 = (var_c0302 + sign_v10228); }; return(var_c0303); }; } extern word XR_FloatInt(i_v5800) word i_v5800; { word var_c5844; word sign_v10512 = 0; word c_v10540; word shift_v10568 = 0; word temp_v10596 = 0; word guard_v10624; word exp_v10652; word mMask_v10680 = 8388607; word var_c21292; word count_v16820; word var_c21356; word count_v16772; word var_c21420; word count_v16724; word var_c21484; word count_v16676; /* FloatInt: */ SOURCE(12335, 1026) SOURCE(12419, 23) c_v10540 = i_v5800; SOURCE(12538, 39) if (( (int)i_v5800 == (int)0)) { SOURCE(12552, 25) return(0); }; SOURCE(12579, 43) if (( (int)i_v5800 < (int)0)) { SOURCE(12594, 6) c_v10540 = INEG(i_v5800); SOURCE(12602, 20) sign_v10512 = 2147483648; }; SOURCE(12625, 48) if (((word) XRM_BITRSHIFT(c_v10540, 16) != 0)) { SOURCE(12663, 10) shift_v10568 = 16; }; SOURCE(12675, 58) count_v16820 = (shift_v10568 + 8); var_c21292 = (word) XRM_BITRSHIFT(c_v10540, count_v16820); if ((var_c21292 != 0)) { SOURCE(12718, 15) shift_v10568 = (shift_v10568 + 8); }; SOURCE(12735, 58) count_v16772 = (shift_v10568 + 4); var_c21356 = (word) XRM_BITRSHIFT(c_v10540, count_v16772); if ((var_c21356 != 0)) { SOURCE(12778, 15) shift_v10568 = (shift_v10568 + 4); }; SOURCE(12795, 58) count_v16724 = (shift_v10568 + 2); var_c21420 = (word) XRM_BITRSHIFT(c_v10540, count_v16724); if ((var_c21420 != 0)) { SOURCE(12838, 15) shift_v10568 = (shift_v10568 + 2); }; SOURCE(12855, 58) count_v16676 = (shift_v10568 + 1); var_c21484 = (word) XRM_BITRSHIFT(c_v10540, count_v16676); if ((var_c21484 != 0)) { SOURCE(12898, 15) shift_v10568 = (shift_v10568 + 1); }; SOURCE(12915, 19) exp_v10652 = (shift_v10568 + 127); SOURCE(12936, 341) if ((shift_v10568 <= 23)) { SOURCE(12958, 38) { word var_c21548; word count_v17568; count_v17568 = (23 - shift_v10568); var_c21548 = (word) XRM_BITLSHIFT(c_v10540, count_v17568); temp_v10596 = var_c21548; }; } else { SOURCE(13007, 38) { word var_c21612; word count_v16628; count_v16628 = (shift_v10568 - 23); var_c21612 = (word) XRM_BITRSHIFT(c_v10540, count_v16628); temp_v10596 = var_c21612; }; SOURCE(13047, 39) { word var_c21676; word count_v17520; count_v17520 = (32 - shift_v10568); var_c21676 = (word) XRM_BITLSHIFT(c_v10540, count_v17520); guard_v10624 = var_c21676; }; SOURCE(13088, 189) if (( (int)guard_v10624 < (int)0)) { SOURCE(13125, 104) if (( (int)guard_v10624 == (int)2147483648)) { SOURCE(13170, 44) temp_v10596 = (temp_v10596 + (word) XRM_BITAND(temp_v10596, 1)); } else { SOURCE(13214, 15) temp_v10596 = (temp_v10596 + 1); }; SOURCE(13231, 46) exp_v10652 = (exp_v10652 + (word) XRM_BITRSHIFT(temp_v10596, 24)); }; }; SOURCE(13287, 74) return((((word) XRM_BITAND(temp_v10596, mMask_v10680) + (exp_v10652 << 23)) + sign_v10512)); } extern word XR_FloatCard(c_v5904) word c_v5904; { word var_c5948; word shift_v10724 = 0; word temp_v10752 = 0; word exp_v10780; word guard_v10808; word mMask_v10836 = 8388607; word var_c21772; word count_v16580; word var_c21836; word count_v16532; word var_c21900; word count_v16484; word var_c21964; word count_v16436; /* FloatCard: */ SOURCE(13367, 933) SOURCE(13530, 39) if ((c_v5904 == 0)) { SOURCE(13544, 25) return(0); }; SOURCE(13571, 48) if (((word) XRM_BITRSHIFT(c_v5904, 16) != 0)) { SOURCE(13609, 10) shift_v10724 = 16; }; SOURCE(13621, 58) count_v16580 = (shift_v10724 + 8); var_c21772 = (word) XRM_BITRSHIFT(c_v5904, count_v16580); if ((var_c21772 != 0)) { SOURCE(13664, 15) shift_v10724 = (shift_v10724 + 8); }; SOURCE(13681, 58) count_v16532 = (shift_v10724 + 4); var_c21836 = (word) XRM_BITRSHIFT(c_v5904, count_v16532); if ((var_c21836 != 0)) { SOURCE(13724, 15) shift_v10724 = (shift_v10724 + 4); }; SOURCE(13741, 58) count_v16484 = (shift_v10724 + 2); var_c21900 = (word) XRM_BITRSHIFT(c_v5904, count_v16484); if ((var_c21900 != 0)) { SOURCE(13784, 15) shift_v10724 = (shift_v10724 + 2); }; SOURCE(13801, 58) count_v16436 = (shift_v10724 + 1); var_c21964 = (word) XRM_BITRSHIFT(c_v5904, count_v16436); if ((var_c21964 != 0)) { SOURCE(13844, 15) shift_v10724 = (shift_v10724 + 1); }; SOURCE(13861, 19) exp_v10780 = (shift_v10724 + 127); SOURCE(13882, 341) if ((shift_v10724 <= 23)) { SOURCE(13904, 38) { word var_c22028; word count_v17472; count_v17472 = (23 - shift_v10724); var_c22028 = (word) XRM_BITLSHIFT(c_v5904, count_v17472); temp_v10752 = var_c22028; }; } else { SOURCE(13953, 38) { word var_c22092; word count_v16388; count_v16388 = (shift_v10724 - 23); var_c22092 = (word) XRM_BITRSHIFT(c_v5904, count_v16388); temp_v10752 = var_c22092; }; SOURCE(13993, 39) { word var_c22156; word count_v17424; count_v17424 = (32 - shift_v10724); var_c22156 = (word) XRM_BITLSHIFT(c_v5904, count_v17424); guard_v10808 = var_c22156; }; SOURCE(14034, 189) if (( (int)guard_v10808 < (int)0)) { SOURCE(14071, 104) if (( (int)guard_v10808 == (int)2147483648)) { SOURCE(14116, 44) temp_v10752 = (temp_v10752 + (word) XRM_BITAND(temp_v10752, 1)); } else { SOURCE(14160, 15) temp_v10752 = (temp_v10752 + 1); }; SOURCE(14177, 46) exp_v10780 = (exp_v10780 + (word) XRM_BITRSHIFT(temp_v10752, 24)); }; }; SOURCE(14231, 69) return(((word) XRM_BITAND(temp_v10752, mMask_v10836) + (exp_v10780 << 23))); } extern word XR_REAL32_Fix(c_v6008) word c_v6008; { word var_c6052; word exponent_v10880; word newInt_v10908; word neg0_v10936 = 2147483648; /* SoftFix: */ SOURCE(14307, 630) SOURCE(14372, 21) exponent_v10880 = (((unsigned)c_v6008 << 1) >> 24); SOURCE(14433, 41) if ((c_v6008 == neg0_v10936) || (c_v6008 == 0)) { SOURCE(14465, 9) return(0); }; SOURCE(14476, 66) if ((exponent_v10880 == 255)) { SOURCE(14504, 38) return((word) RaiseFloatError_P1920(1)); }; SOURCE(14544, 73) if ((exponent_v10880 > 158)) { SOURCE(14574, 43) return((word) RaiseFloatError_P1920(2)); }; SOURCE(14619, 36) if ((exponent_v10880 < 127)) { SOURCE(14646, 9) return(0); }; SOURCE(14657, 62) newInt_v10908 = ((( (((unsigned)c_v6008 << 16) >> 16) ) + (word) XRM_BITLSHIFT((((unsigned)c_v6008 << 9) >> 25), 16)) + 8388608); SOURCE(14721, 155) if ((exponent_v10880 >= 151)) { { word var_c22316; word value_v17348; word count_v17376; value_v17348 = newInt_v10908; count_v17376 = ((exponent_v10880 - 127) - 23); var_c22316 = (word) XRM_BITLSHIFT(value_v17348, count_v17376); newInt_v10908 = var_c22316; }; } else { { word var_c22380; word value_v16312; word count_v16340; value_v16312 = newInt_v10908; count_v16340 = (23 - (exponent_v10880 - 127)); var_c22380 = (word) XRM_BITRSHIFT(value_v16312, count_v16340); newInt_v10908 = var_c22380; }; }; SOURCE(14878, 59) if (( (int)c_v6008 < (int)0)) { return(INEG(newInt_v10908)); } else { return(newInt_v10908); }; } extern word XR_REAL32_Round(c_v6112) word c_v6112; { word var_c6156; word half_v10980 = 1056964608; word abs_v11008; word fix_v11036; word flt_v11064; word delta_v11092; /* SoftRnd: */ SOURCE(14943, 430) SOURCE(15072, 24) abs_v11008 = ((c_v6112 << 1) >> 1); SOURCE(15098, 25) fix_v11036 = (word) XR_REAL32_Fix(abs_v11008); SOURCE(15125, 26) flt_v11064 = (word) XR_FloatInt(fix_v11036); SOURCE(15153, 32) delta_v11092 = (word) XR_RealSub(abs_v11008, flt_v11064); if (( (int)delta_v11092 <= (int)half_v10980)) { } else { if (( (int)delta_v11092 > (int)half_v10980)) { SOURCE(15256, 13) fix_v11036 = (fix_v11036 + 1); } else { if (((fix_v11036 & 1) == 1)) { SOURCE(15308, 13) fix_v11036 = (fix_v11036 + 1); }; }; }; SOURCE(15332, 27) if ((abs_v11008 != c_v6112)) { SOURCE(15348, 11) fix_v11036 = INEG(fix_v11036); }; SOURCE(15361, 12) return(fix_v11036); } extern word XR_REAL32_Floor(c_v6216) word c_v6216; { word var_c6260; word temp_v11136; /* SoftFloor: */ SOURCE(15379, 190) SOURCE(15445, 41) temp_v11136 = (word) XR_REAL32_Fix(c_v6216); SOURCE(15488, 28) { word x5; word x7; if ((( x5 = c_v6216, *(float*)&x5 ) >= ( x7 = (* (ptr) &fc6 ), *(float*)&x7 ))) { SOURCE(15503, 13) return(temp_v11136); }; }; SOURCE(15518, 51) { word x8; if ((( x8 = c_v6216, *(float*)&x8 ) == (float)(int)temp_v11136)) { SOURCE(15535, 19) return(temp_v11136); } else { SOURCE(15554, 15) return((temp_v11136 - 1)); }; }; } extern word XR_REAL32_Ceiling(c_v6320) word c_v6320; { word var_c6364; word temp_v11180; /* SoftCeiling: */ SOURCE(15575, 192) SOURCE(15643, 41) temp_v11180 = (word) XR_REAL32_Fix(c_v6320); SOURCE(15686, 28) { word x9; word x10; if ((( x9 = c_v6320, *(float*)&x9 ) <= ( x10 = (* (ptr) &fc6 ), *(float*)&x10 ))) { SOURCE(15701, 13) return(temp_v11180); }; }; SOURCE(15716, 51) { word x11; if ((( x11 = c_v6320, *(float*)&x11 ) == (float)(int)temp_v11180)) { SOURCE(15733, 19) return(temp_v11180); } else { SOURCE(15752, 15) return((temp_v11180 + 1)); }; }; } extern word XR_RealNeg(a_v6424) word a_v6424; { word var_c6468; /* SoftNeg: */ SOURCE(15773, 198) SOURCE(15838, 54) if (((((unsigned)a_v6424 << 1) >> 24) == 255)) { SOURCE(15863, 29) return((word) RaiseFloatError_P1920(1)); }; SOURCE(15894, 77) return((word) XRM_BITXOR(a_v6424, 2147483648)); } extern word XR_RealAbs(a_v6528) word a_v6528; { word var_c6572; word c_v11252; /* SoftAbs: */ SOURCE(15977, 249) SOURCE(16117, 37) c_v11252 = ((a_v6528 << 1) >> 1); SOURCE(16156, 48) if ((c_v11252 >= 2139095040)) { SOURCE(16175, 29) return((word) RaiseFloatError_P1920(1)); }; SOURCE(16206, 20) return(c_v11252); } extern word XR_RealMin(a_v6632, b_v6660) word a_v6632; word b_v6660; { word var_c6704; word neg0_v11296 = 2147483648; word nanLow_v11324 = 2139095040; /* RealMin: */ SOURCE(16232, 501) SOURCE(16388, 28) if ((a_v6632 == neg0_v11296)) { SOURCE(16405, 11) a_v6632 = 0; }; SOURCE(16418, 28) if ((b_v6660 == neg0_v11296)) { SOURCE(16435, 11) b_v6660 = 0; }; SOURCE(16448, 98) if (((word) XRM_BITAND(a_v6632, nanLow_v11324) == nanLow_v11324) || ((word) XRM_BITAND(b_v6660, nanLow_v11324) == nanLow_v11324)) { SOURCE(16517, 29) return((word) RaiseFloatError_P1920(1)); }; SOURCE(16548, 111) if (( (int)(word) XRM_BITAND(a_v6632, b_v6660) < (int)0)) { SOURCE(16592, 67) if (( (int)a_v6632 > (int)b_v6660)) { return(a_v6632); } else { return(b_v6660); }; }; SOURCE(16661, 72) if (( (int)a_v6632 > (int)b_v6660)) { SOURCE(16709, 15) return(b_v6660); } else { SOURCE(16724, 9) return(a_v6632); }; } extern word XR_RealMax(a_v6764, b_v6792) word a_v6764; word b_v6792; { word var_c6836; word neg0_v11368 = 2147483648; word nanLow_v11396 = 2139095040; /* RealMax: */ SOURCE(16739, 503) SOURCE(16895, 28) if ((a_v6764 == neg0_v11368)) { SOURCE(16912, 11) a_v6764 = 0; }; SOURCE(16925, 28) if ((b_v6792 == neg0_v11368)) { SOURCE(16942, 11) b_v6792 = 0; }; SOURCE(16955, 98) if (((word) XRM_BITAND(a_v6764, nanLow_v11396) == nanLow_v11396) || ((word) XRM_BITAND(b_v6792, nanLow_v11396) == nanLow_v11396)) { SOURCE(17024, 29) return((word) RaiseFloatError_P1920(1)); }; SOURCE(17055, 111) if (( (int)(word) XRM_BITAND(a_v6764, b_v6792) < (int)0)) { SOURCE(17099, 67) if (( (int)a_v6764 > (int)b_v6792)) { return(b_v6792); } else { return(a_v6764); }; }; SOURCE(17168, 74) if (( (int)a_v6764 > (int)b_v6792)) { SOURCE(17216, 16) return(a_v6764); } else { SOURCE(17232, 10) return(b_v6792); }; } extern word XR_RealGt(r0_v6896, r1_v6924) word r0_v6896; word r1_v6924; { word var_c6968; word neg0_v11440 = 2147483648; word nanLow_v11468 = 2139095040; /* SoftGt: */ SOURCE(17248, 486) SOURCE(17404, 30) if ((r0_v6896 == neg0_v11440)) { SOURCE(17422, 12) r0_v6896 = 0; }; SOURCE(17436, 30) if ((r1_v6924 == neg0_v11440)) { SOURCE(17454, 12) r1_v6924 = 0; }; SOURCE(17468, 114) if (((word) XRM_BITAND(r0_v6896, nanLow_v11468) == nanLow_v11468) || ((word) XRM_BITAND(r1_v6924, nanLow_v11468) == nanLow_v11468)) { SOURCE(17541, 25) { word var_c22604; var_c22604 = (word) RaiseFloatError_P1920(1); }; SOURCE(17568, 14) return(0); }; SOURCE(17587, 95) if (( (int)(word) XRM_BITAND(r0_v6896, r1_v6924) < (int)0)) { SOURCE(17633, 49) return(( (int)r0_v6896 < (int)r1_v6924)); }; SOURCE(17684, 50) return(( (int)r0_v6896 > (int)r1_v6924)); } extern word XR_RealGe(r0_v7028, r1_v7056) word r0_v7028; word r1_v7056; { word var_c7100; word neg0_v11512 = 2147483648; word nanLow_v11540 = 2139095040; /* SoftGe: */ SOURCE(17740, 488) SOURCE(17896, 30) if ((r0_v7028 == neg0_v11512)) { SOURCE(17914, 12) r0_v7028 = 0; }; SOURCE(17928, 30) if ((r1_v7056 == neg0_v11512)) { SOURCE(17946, 12) r1_v7056 = 0; }; SOURCE(17960, 114) if (((word) XRM_BITAND(r0_v7028, nanLow_v11540) == nanLow_v11540) || ((word) XRM_BITAND(r1_v7056, nanLow_v11540) == nanLow_v11540)) { SOURCE(18033, 25) { word var_c22636; var_c22636 = (word) RaiseFloatError_P1920(1); }; SOURCE(18060, 14) return(0); }; SOURCE(18079, 96) if (( (int)(word) XRM_BITAND(r0_v7028, r1_v7056) < (int)0)) { SOURCE(18125, 50) return(( (int)r0_v7028 <= (int)r1_v7056)); }; SOURCE(18177, 51) return(( (int)r0_v7028 >= (int)r1_v7056)); } extern word XR_RealEq(r0_v7160, r1_v7188) word r0_v7160; word r1_v7188; { word var_c7232; word neg0_v11584 = 2147483648; word nanLow_v11612 = 2139095040; /* SoftEq: */ SOURCE(18234, 389) SOURCE(18390, 30) if ((r0_v7160 == neg0_v11584)) { SOURCE(18408, 12) r0_v7160 = 0; }; SOURCE(18422, 30) if ((r1_v7188 == neg0_v11584)) { SOURCE(18440, 12) r1_v7188 = 0; }; SOURCE(18454, 114) if (((word) XRM_BITAND(r0_v7160, nanLow_v11612) == nanLow_v11612) || ((word) XRM_BITAND(r1_v7188, nanLow_v11612) == nanLow_v11612)) { SOURCE(18527, 25) { word var_c22668; var_c22668 = (word) RaiseFloatError_P1920(1); }; SOURCE(18554, 14) return(0); }; SOURCE(18573, 50) return(( (int)r0_v7160 == (int)r1_v7188)); } static word SoftCmp_P1500(r0_v7292, r1_v7320) word r0_v7292; word r1_v7320; { word var_c7364; word neg0_v11656 = 2147483648; word nanLow_v11684 = 2139095040; /* SoftCmp: */ SOURCE(18629, 682) SOURCE(18806, 30) if ((r0_v7292 == neg0_v11656)) { SOURCE(18824, 12) r0_v7292 = 0; }; SOURCE(18838, 30) if ((r1_v7320 == neg0_v11656)) { SOURCE(18856, 12) r1_v7320 = 0; }; SOURCE(18870, 92) if (((word) XRM_BITAND(r0_v7292, nanLow_v11684) == nanLow_v11684) || ((word) XRM_BITAND(r0_v7292, nanLow_v11684) == nanLow_v11684)) { SOURCE(18941, 21) return(3); }; SOURCE(18964, 195) if (( (int)(word) XRM_BITAND(r0_v7292, r1_v7320) < (int)0)) { SOURCE(19012, 66) if (( (int)r0_v7292 < (int)r1_v7320)) { SOURCE(19062, 16) return(2); }; SOURCE(19080, 63) if (( (int)r1_v7320 < (int)r0_v7292)) { SOURCE(19130, 13) return(0); }; SOURCE(19145, 14) return(1); }; SOURCE(19164, 63) if (( (int)r0_v7292 < (int)r1_v7320)) { SOURCE(19214, 13) return(0); }; SOURCE(19229, 66) if (( (int)r1_v7320 < (int)r0_v7292)) { SOURCE(19279, 16) return(2); }; SOURCE(19297, 14) return(1); } extern word XR_RealLt(r0_v7424, r1_v7452) word r0_v7424; word r1_v7452; { word var_c7496; word neg0_v11728 = 2147483648; word nanLow_v11756 = 2139095040; /* SoftLt: */ SOURCE(19317, 486) SOURCE(19473, 30) if ((r0_v7424 == neg0_v11728)) { SOURCE(19491, 12) r0_v7424 = 0; }; SOURCE(19505, 30) if ((r1_v7452 == neg0_v11728)) { SOURCE(19523, 12) r1_v7452 = 0; }; SOURCE(19537, 114) if (((word) XRM_BITAND(r0_v7424, nanLow_v11756) == nanLow_v11756) || ((word) XRM_BITAND(r1_v7452, nanLow_v11756) == nanLow_v11756)) { SOURCE(19610, 25) { word var_c22700; var_c22700 = (word) RaiseFloatError_P1920(1); }; SOURCE(19637, 14) return(0); }; SOURCE(19656, 95) if (( (int)(word) XRM_BITAND(r0_v7424, r1_v7452) < (int)0)) { SOURCE(19702, 49) return(( (int)r0_v7424 > (int)r1_v7452)); }; SOURCE(19753, 50) return(( (int)r0_v7424 < (int)r1_v7452)); } extern word XR_RealLe(r0_v7556, r1_v7584) word r0_v7556; word r1_v7584; { word var_c7628; word neg0_v11800 = 2147483648; word nanLow_v11828 = 2139095040; /* SoftLe: */ SOURCE(19809, 488) SOURCE(19965, 30) if ((r0_v7556 == neg0_v11800)) { SOURCE(19983, 12) r0_v7556 = 0; }; SOURCE(19997, 30) if ((r1_v7584 == neg0_v11800)) { SOURCE(20015, 12) r1_v7584 = 0; }; SOURCE(20029, 114) if (((word) XRM_BITAND(r0_v7556, nanLow_v11828) == nanLow_v11828) || ((word) XRM_BITAND(r1_v7584, nanLow_v11828) == nanLow_v11828)) { SOURCE(20102, 25) { word var_c22732; var_c22732 = (word) RaiseFloatError_P1920(1); }; SOURCE(20129, 14) return(0); }; SOURCE(20148, 96) if (( (int)(word) XRM_BITAND(r0_v7556, r1_v7584) < (int)0)) { SOURCE(20194, 50) return(( (int)r0_v7556 >= (int)r1_v7584)); }; SOURCE(20246, 51) return(( (int)r0_v7556 <= (int)r1_v7584)); } extern word XR_SignedPwr(base_v7688, exp_v7716) word base_v7688; word exp_v7716; { word var_c7760; word p_v11872 = 1; word b_v11900; word e_v11928; /* SignedPwr: */ SOURCE(20303, 528) SOURCE(20392, 15) b_v11900 = base_v7688; SOURCE(20409, 14) e_v11928 = exp_v7716; SOURCE(20425, 163) { word var_c22764; var_c22764 = b_v11900; switch (var_c22764) { case 0: SOURCE(20445, 55) if (( (int)e_v11928 <= (int)0)) { SOURCE(20460, 40) return((word) RaiseFloatError_P1920(5)); }; SOURCE(20503, 9) return(0); case 1: SOURCE(20521, 9) return(1); case 4294967295: SOURCE(20538, 50) if ((0 != (e_v11928 & 1))) { SOURCE(20563, 16) return( (word) -1); } else { SOURCE(20579, 9) return(1); }; default: break; }; }; SOURCE(20607, 23) if (( (int)e_v11928 < (int)0)) { SOURCE(20621, 9) return(0); }; SOURCE(20632, 176) lab_L100064: ; SOURCE(20646, 44) if ((0 != (e_v11928 & 1))) { SOURCE(20673, 7) p_v11872 = IOP2( * , (int)p_v11872, (int)b_v11900); SOURCE(20683, 7) e_v11928 = (e_v11928 - 1); }; SOURCE(20694, 114) if (( (int)e_v11928 != (int)0)) { SOURCE(20711, 7) b_v11900 = IOP2( * , (int)b_v11900, (int)b_v11900); SOURCE(20721, 7) e_v11928 = IOP2( / , (int)e_v11928, (int)2); } else { SOURCE(20739, 27) if (( (int)base_v7688 != (int)0)) { SOURCE(20757, 9) return(p_v11872); }; SOURCE(20768, 40) return((word) RaiseFloatError_P1920(5)); }; goto lab_L100064; /* c2c skipped dead code */ } extern word XR_UnsignedPwr(base_v7820, exp_v7848) word base_v7820; word exp_v7848; { word var_c7892; word p_v11972 = 1; word b_v12000; word e_v12028; /* UnsignedPwr: */ SOURCE(20860, 331) SOURCE(20955, 17) b_v12000 = base_v7820; SOURCE(20974, 15) e_v12028 = exp_v7848; SOURCE(20991, 177) lab_L100067: ; SOURCE(21005, 45) if ((0 != (e_v12028 & 1))) { SOURCE(21033, 7) p_v11972 = (p_v11972 * b_v12000); SOURCE(21043, 7) e_v12028 = (e_v12028 - 1); }; SOURCE(21054, 114) if ((e_v12028 != 0)) { SOURCE(21071, 7) b_v12000 = (b_v12000 * b_v12000); SOURCE(21081, 7) e_v12028 = (e_v12028 >> 1); } else { SOURCE(21099, 27) if ((base_v7820 != 0)) { SOURCE(21117, 9) return(p_v11972); }; SOURCE(21128, 40) return((word) RaiseFloatError_P1920(5)); }; goto lab_L100067; /* c2c skipped dead code */ } extern word XR_RealPwr(base_v7952, exp_v7980) word base_v7952; word exp_v7980; { register ptr gf_c23116 = (ptr) &globalframe; word var_c8024; /* RealPwr: */ SOURCE(21221, 107) SOURCE(21296, 32) { word pd12; pd12 = (* (( (ptr) (* (( (ptr) gf_c23116)+62)/* var_c22924 */ ))+7) ); return((word) ( *( (fPt) ((* (ptr) pd12 ))))(base_v7952, exp_v7980, pd12)); }; } static word SetExceptionFlag_P1860(which_v8268) word which_v8268; { word fault_v8312; /* SetExceptionFlag: */ SOURCE(21476, 335) SOURCE(21476, 335) fault_v8312 = 0; SOURCE(21584, 227) { word var_c22956; var_c22956 = which_v8268; switch (var_c22956) { case 0: break; case 1: SOURCE(21623, 30) fault_v8312 = (fault_v8312 & 4294967287) | (((1)) << 3); break; case 2: SOURCE(21667, 22) fault_v8312 = (fault_v8312 & 4294967293) | (((1)) << 1); break; case 3: SOURCE(21704, 23) fault_v8312 = (fault_v8312 & 4294967294) | ((1)); break; case 4: SOURCE(21742, 28) fault_v8312 = (fault_v8312 & 4294967291) | (((1)) << 2); break; case 5: SOURCE(21781, 30) fault_v8312 = (fault_v8312 & 4294967287) | (((1)) << 3); break; default: SOURCE(21824, 5) (void) XR_RaiseUnnamedError(); break; }; }; SOURCE(21476, 335) return(fault_v8312); } static word RaiseFloatError_P1920(kind_v8372) word kind_v8372; { register ptr gf_c23148 = (ptr) &globalframe; word var_c8416; word var_c23020; W2 var_c0289; word var_c0290; /* RaiseFloatError: */ SOURCE(21835, 190) SOURCE(21900, 37) (* (( (ptr) gf_c23148)+4)/* floatErrorCount_v4120 */ ) = ((* (( (ptr) gf_c23148)+4)/* floatErrorCount_v4120 */ ) + 1); SOURCE(21939, 63) var_c23020 = (word) SetExceptionFlag_P1860(kind_v8372); (* (ptr) (word) &var_c0289 ) = var_c23020; (* (( (ptr) (word) &var_c0289) + 1) ) = 0; (void) (XR_RaiseSignal((* (( (ptr) (* (( (ptr) gf_c23148)+63)/* var_c22988 */ ))+11) ), (word) &var_c0290, (word) &var_c0289) ); if ((0 != var_c0290)) { SOURCE(22002, 5) (void) XR_RaiseUnnamedError(); }; SOURCE(22009, 16) return(0); } static word GetStickyFlags_P1980() { register ptr gf_c23180 = (ptr) &globalframe; word var_c8476; /* GetStickyFlags: */ SOURCE(22031, 79) SOURCE(22086, 24) return((* (( (ptr) gf_c23180)+5)/* floatErrorFlags_v4148 */ )); } static word SetStickyFlags_P2040(new_v8536) word new_v8536; { register ptr gf_c23212 = (ptr) &globalframe; word old_v8580; /* SetStickyFlags: */ SOURCE(22116, 151) SOURCE(22116, 151) old_v8580 = 0; SOURCE(22223, 21) old_v8580 = (* (( (ptr) gf_c23212)+5)/* floatErrorFlags_v4148 */ ); SOURCE(22246, 21) (* (( (ptr) gf_c23212)+5)/* floatErrorFlags_v4148 */ ) = new_v8536; SOURCE(22116, 151) return(old_v8580); } /* file: FloatOpsImpl, module: FloatOpsImpl, compiled at: February 21, 1992 11:53:27 pm PST */ extern void XR_install_FloatOpsImpl() { NoName_Q5268(); } extern void XR_run_FloatOpsImpl() { XR_Start(&globalframe); }