Lines Matching refs:reg
21 static inline void fp_denormalize(struct fp_ext *reg, unsigned int cnt)
23 reg->exp += cnt;
27 reg->lowmant = reg->mant.m32[1] << (8 - cnt);
28 reg->mant.m32[1] = (reg->mant.m32[1] >> cnt) |
29 (reg->mant.m32[0] << (32 - cnt));
30 reg->mant.m32[0] = reg->mant.m32[0] >> cnt;
33 reg->lowmant = reg->mant.m32[1] >> (cnt - 8);
34 if (reg->mant.m32[1] << (40 - cnt))
35 reg->lowmant |= 1;
36 reg->mant.m32[1] = (reg->mant.m32[1] >> cnt) |
37 (reg->mant.m32[0] << (32 - cnt));
38 reg->mant.m32[0] = reg->mant.m32[0] >> cnt;
41 asm volatile ("bfextu %1{%2,#8},%0" : "=d" (reg->lowmant)
42 : "m" (reg->mant.m32[0]), "d" (64 - cnt));
43 if (reg->mant.m32[1] << (40 - cnt))
44 reg->lowmant |= 1;
45 reg->mant.m32[1] = reg->mant.m32[0] >> (cnt - 32);
46 reg->mant.m32[0] = 0;
49 reg->lowmant = reg->mant.m32[0] >> (cnt - 40);
50 if ((reg->mant.m32[0] << (72 - cnt)) || reg->mant.m32[1])
51 reg->lowmant |= 1;
52 reg->mant.m32[1] = reg->mant.m32[0] >> (cnt - 32);
53 reg->mant.m32[0] = 0;
56 reg->lowmant = reg->mant.m32[0] || reg->mant.m32[1];
57 reg->mant.m32[0] = 0;
58 reg->mant.m32[1] = 0;
63 static inline int fp_overnormalize(struct fp_ext *reg)
67 if (reg->mant.m32[0]) {
68 asm ("bfffo %1{#0,#32},%0" : "=d" (shift) : "dm" (reg->mant.m32[0]));
69 reg->mant.m32[0] = (reg->mant.m32[0] << shift) | (reg->mant.m32[1] >> (32 - shift));
70 reg->mant.m32[1] = (reg->mant.m32[1] << shift);
72 asm ("bfffo %1{#0,#32},%0" : "=d" (shift) : "dm" (reg->mant.m32[1]));
73 reg->mant.m32[0] = (reg->mant.m32[1] << shift);
74 reg->mant.m32[1] = 0;
97 static inline int fp_addcarry(struct fp_ext *reg)
99 if (++reg->exp == 0x7fff) {
100 if (reg->mant.m64)
102 reg->mant.m64 = 0;
106 reg->lowmant = (reg->mant.m32[1] << 7) | (reg->lowmant ? 1 : 0);
107 reg->mant.m32[1] = (reg->mant.m32[1] >> 1) |
108 (reg->mant.m32[0] << 31);
109 reg->mant.m32[0] = (reg->mant.m32[0] >> 1) | 0x80000000;