Lines Matching refs:xm
104 static unsigned get_rounding(int sn, unsigned xm)
108 if (xm & (SP_MBIT(3) - 1)) {
113 xm += 0x3 + ((xm >> 3) & 1);
114 /* xm += (xm&0x8)?0x4:0x3 */
118 xm += 0x8;
122 xm += 0x8;
126 return xm;
133 * xm is 3bit extended precision value.
135 ieee754sp ieee754sp_format(int sn, int xe, unsigned xm)
137 assert(xm); /* we don't gen exact zeros (probably should) */
139 assert((xm >> (SP_MBITS + 1 + 3)) == 0); /* no execess */
140 assert(xm & (SP_HIDDEN_BIT << 3));
168 && get_rounding(sn, xm) >> (SP_MBITS + 1 + 3))
172 xm = get_rounding(sn, xm);
173 xm >>= 1;
175 xm &= ~(SP_MBIT(3) - 1);
182 assert((xm & (SP_HIDDEN_BIT << 3)) == 0);
186 if (xm & (SP_MBIT(3) - 1)) {
188 if ((xm & (SP_HIDDEN_BIT << 3)) == 0) {
194 xm = get_rounding(sn, xm);
197 if (xm >> (SP_MBITS + 1 + 3)) {
199 xm >>= 1;
204 xm >>= 3;
206 assert((xm >> (SP_MBITS + 1)) == 0); /* no execess */
232 if ((xm & SP_HIDDEN_BIT) == 0) {
237 return buildsp(sn, SP_EMIN - 1 + SP_EBIAS, xm);
239 assert((xm >> (SP_MBITS + 1)) == 0); /* no execess */
240 assert(xm & SP_HIDDEN_BIT);
242 return buildsp(sn, xe + SP_EBIAS, xm & ~SP_HIDDEN_BIT);