Lines Matching refs:pu

67 	unpacked	*pu)		/* unpacked result */
72 sr = pu->sticky|pu->rounded;
79 increment = pu->rounded;
85 increment = (pu->sign == 0) & (sr != 0);
88 increment = (pu->sign != 0) & (sr != 0);
92 pu->significand[3]++;
93 if (pu->significand[3] == 0) {
94 pu->significand[2]++;
95 if (pu->significand[2] == 0) {
96 pu->significand[1]++;
97 if (pu->significand[1] == 0) {
98 pu->significand[0]++; /* rounding carried out */
99 if (pu->significand[0] == 0x20000) {
100 pu->exponent++;
101 pu->significand[0] = 0x10000;
108 (pu->sticky == 0) && increment != 0) { /* ambiguous case */
109 pu->significand[3] &= 0xfffffffe; /* force round to even */
116 unpacked *pu, /* unpacked result */
119 switch (pu->fpclass) {
124 if (pu->exponent >= 32)
126 fpu_rightshift(pu, 112 - pu->exponent);
127 round(pfpsd, pu);
128 if (pu->significand[3] >= 0x80000000)
129 if ((pu->sign == 0)||(pu->significand[3] > 0x80000000))
131 *px = pu->significand[3];
132 if (pu->sign)
139 if (pu->sign)
152 unpacked *pu, /* unpacked result */
160 switch (pu->fpclass) {
165 if (pu->exponent >= 64)
167 fpu_rightshift(pu, 112 - pu->exponent);
168 round(pfpsd, pu);
169 if (pu->significand[2] >= 0x80000000)
170 if ((pu->sign == 0) ||
171 (pu->significand[2] > 0x80000000) ||
172 (((pu->significand[2] == 0x80000000) &&
173 (pu->significand[3] > 0))))
175 x.i[0] = pu->significand[2];
176 x.i[1] = pu->significand[3];
178 if (pu->sign)
185 if (pu->sign)
198 unpacked *pu, /* unpacked result */
201 px->sign = pu->sign;
202 switch (pu->fpclass) {
214 fpu_rightshift(pu, 113-24);
216 px->significand = 0x400000|(0x3fffff&pu->significand[3]);
219 fpu_rightshift(pu, 113-24);
220 pu->exponent += SINGLE_BIAS;
221 if (pu->exponent <= 0) {
223 fpu_rightshift(pu, 1 - pu->exponent);
224 round(pfpsd, pu);
225 if (pu->significand[3] == 0x800000) {
235 px->significand = 0x7fffff & pu->significand[3];
246 round(pfpsd, pu);
247 if (pu->significand[3] == 0x1000000) { /* rounding overflow */
248 pu->significand[3] = 0x800000;
249 pu->exponent += 1;
251 if (pu->exponent >= 0xff) {
258 if (overflow_to_infinity(pfpsd, pu->sign))
264 px->exponent = pu->exponent;
265 px->significand = 0x7fffff & pu->significand[3];
272 unpacked *pu, /* unpacked result */
276 px->sign = pu->sign;
277 switch (pu->fpclass) {
291 fpu_rightshift(pu, 113-53);
293 px->significand = 0x80000 | (0x7ffff & pu->significand[2]);
294 *py = pu->significand[3];
297 fpu_rightshift(pu, 113-53);
298 pu->exponent += DOUBLE_BIAS;
299 if (pu->exponent <= 0) { /* underflow */
301 fpu_rightshift(pu, 1 - pu->exponent);
302 round(pfpsd, pu);
303 if (pu->significand[2] == 0x100000) {
315 px->significand = 0xfffff & pu->significand[2];
316 *py = pu->significand[3];
327 round(pfpsd, pu);
328 if (pu->significand[2] == 0x200000) { /* rounding overflow */
329 pu->significand[2] = 0x100000;
330 pu->exponent += 1;
332 if (pu->exponent >= 0x7ff) { /* overflow */
339 if (overflow_to_infinity(pfpsd, pu->sign))
346 px->exponent = pu->exponent;
347 px->significand = 0xfffff & pu->significand[2];
348 *py = pu->significand[3];
356 unpacked *pu, /* unpacked result */
362 px->sign = pu->sign;
363 switch (pu->fpclass) {
382 px->significand = 0x8000 | pu->significand[0];
387 *py = pu->significand[1];
388 *pz = pu->significand[2];
389 *pw = pu->significand[3];
392 pu->exponent += EXTENDED_BIAS;
393 if (pu->exponent <= 0) { /* underflow */
394 fpu_rightshift(pu, 1-pu->exponent);
395 round(pfpsd, pu);
396 if (pu->significand[0] < 0x00010000) {
414 px->significand = pu->significand[0];
415 *py = pu->significand[1];
416 *pz = pu->significand[2];
417 *pw = pu->significand[3];
420 round(pfpsd, pu); /* rounding overflow handled in round() */
421 if (pu->exponent >= 0x7fff) { /* overflow */
428 if (overflow_to_infinity(pfpsd, pu->sign))
437 px->exponent = pu->exponent;
438 px->significand = pu->significand[0];
439 *py = pu->significand[1];
440 *pz = pu->significand[2];
441 *pw = pu->significand[3];
449 unpacked *pu, /* unpacked operand */
459 packint32(pfpsd, pu, &x);
468 packint64(pfpsd, pu, &x);
479 packsingle(pfpsd, pu, &x);
492 packdouble(pfpsd, pu, &db.x[0], &db.y[1]);
521 packsingle(pfpsd, pu, &tx);
522 pu = &U;
523 unpacksingle(pfpsd, pu, tx);
531 packdouble(pfpsd, pu, &tx, &ty);
532 pu = &U;
533 unpackdouble(pfpsd, pu, tx, ty);
538 k = pu->exponent + EXTENDED_BIAS;
541 fpu_rightshift(pu, 113-64);
542 round(pfpsd, pu);
543 pu->sticky = pu->rounded = 0;
544 pu->exponent += k;
545 fpu_normalize(pu);
549 packextended(pfpsd, pu, &ex.x, &ex.y[1],
569 uint32_t *pu, /* unpacked operand */
572 pfpsd->fp_current_write_freg(pu, n, pfpsd);
578 uint64_t *pu, /* unpacked operand */
583 pfpsd->fp_current_write_dreg(pu, DOUBLE(n), pfpsd);