Lines Matching refs:q
63 #define Q_BT(q) __typeof(1 * q) argument
66 #define Q_BT(q) __typeof(q) argument
70 #define Q_TC(q, v) ((__typeof(q))(v)) argument
73 #define Q_NTBITS(q) ((uint32_t)(sizeof(q) << 3)) argument
79 #define Q_NFCBITS(q) \ argument
80 ((uint32_t)(((Q_GCRAW(q) & 0x3) + 1) << ((Q_GCRAW(q) & 0x4) ? 4 : 1)))
83 #define Q_MINNFBITS(q) ((uint32_t)(2)) argument
84 #define Q_MAXNFBITS(q) ((uint32_t)(Q_NTBITS(q) - Q_SIGNED(q) - Q_NCBITS)) argument
92 #define Q_NFBITS(q) \ argument
93 (Q_NFCBITS(q) > Q_MAXNFBITS(q) ? Q_MAXNFBITS(q) : Q_NFCBITS(q))
96 #define Q_NIBITS(q) ((uint32_t)(Q_NTBITS(q) - Q_RPSHFT(q) - Q_SIGNED(q))) argument
99 #define Q_RPSHFT(q) (Q_NCBITS + Q_NFBITS(q)) argument
102 #define Q_SIGNSHFT(q) (Q_NTBITS(q) - 1) argument
105 #define Q_SSIGN(q, isneg) \ argument
106 ((q) = ((Q_SIGNED(q) && (isneg)) ? (q) | (1ULL << Q_SIGNSHFT(q)) : \
107 (q) & ~(1ULL << Q_SIGNSHFT(q))))
110 #define Q_CRAWMASK(q) 0x7ULL argument
111 #define Q_SRAWMASK(q) (1ULL << Q_SIGNSHFT(q)) argument
112 #define Q_GCRAW(q) ((q) & Q_CRAWMASK(q)) argument
113 #define Q_GCVAL(q) Q_GCRAW(q) argument
114 #define Q_SCVAL(q, cv) ((q) = ((q) & ~Q_CRAWMASK(q)) | (cv)) argument
117 #define Q_IFRAWMASK(q) \ argument
118 Q_TC(q, Q_SIGNED(q) ? ~(Q_SRAWMASK(q) | Q_CRAWMASK(q)) : ~Q_CRAWMASK(q))
119 #define Q_IFMAXVAL(q) Q_TC(q, Q_IFRAWMASK(q) >> Q_NCBITS) argument
120 #define Q_IFMINVAL(q) Q_TC(q, Q_SIGNED(q) ? -Q_IFMAXVAL(q) : 0) argument
121 #define Q_IFVALIMASK(q) Q_TC(q, ~Q_IFVALFMASK(q)) argument
122 #define Q_IFVALFMASK(q) Q_TC(q, (1ULL << Q_NFBITS(q)) - 1) argument
123 #define Q_GIFRAW(q) Q_TC(q, (q) & Q_IFRAWMASK(q)) argument
124 #define Q_GIFABSVAL(q) Q_TC(q, Q_GIFRAW(q) >> Q_NCBITS) argument
125 #define Q_GIFVAL(q) Q_TC(q, Q_LTZ(q) ? -Q_GIFABSVAL(q) : Q_GIFABSVAL(q)) argument
126 #define Q_SIFVAL(q, ifv) \ argument
127 ((q) = ((q) & (~(Q_SRAWMASK(q) | Q_IFRAWMASK(q)))) | \
128 (Q_TC(q, Q_ABS(ifv)) << Q_NCBITS) | \
129 (Q_LTZ(ifv) ? 1ULL << Q_SIGNSHFT(q) : 0))
130 #define Q_SIFVALS(q, iv, fv) \ argument
131 ((q) = ((q) & (~(Q_SRAWMASK(q) | Q_IFRAWMASK(q)))) | \
132 (Q_TC(q, Q_ABS(iv)) << Q_RPSHFT(q)) | \
133 (Q_TC(q, Q_ABS(fv)) << Q_NCBITS) | \
134 (Q_LTZ(iv) || Q_LTZ(fv) ? 1ULL << Q_SIGNSHFT(q) : 0))
137 #define Q_IRAWMASK(q) Q_TC(q, Q_IFRAWMASK(q) & ~Q_FRAWMASK(q)) argument
138 #define Q_IMAXVAL(q) Q_TC(q, Q_IRAWMASK(q) >> Q_RPSHFT(q)) argument
139 #define Q_IMINVAL(q) Q_TC(q, Q_SIGNED(q) ? -Q_IMAXVAL(q) : 0) argument
140 #define Q_GIRAW(q) Q_TC(q, (q) & Q_IRAWMASK(q)) argument
141 #define Q_GIABSVAL(q) Q_TC(q, Q_GIRAW(q) >> Q_RPSHFT(q)) argument
142 #define Q_GIVAL(q) Q_TC(q, Q_LTZ(q) ? -Q_GIABSVAL(q) : Q_GIABSVAL(q)) argument
143 #define Q_SIVAL(q, iv) \ argument
144 ((q) = ((q) & ~(Q_SRAWMASK(q) | Q_IRAWMASK(q))) | \
145 (Q_TC(q, Q_ABS(iv)) << Q_RPSHFT(q)) | \
146 (Q_LTZ(iv) ? 1ULL << Q_SIGNSHFT(q) : 0))
149 #define Q_FRAWMASK(q) Q_TC(q, ((1ULL << Q_NFBITS(q)) - 1) << Q_NCBITS) argument
150 #define Q_FMAXVAL(q) Q_TC(q, Q_FRAWMASK(q) >> Q_NCBITS) argument
151 #define Q_GFRAW(q) Q_TC(q, (q) & Q_FRAWMASK(q)) argument
152 #define Q_GFABSVAL(q) Q_TC(q, Q_GFRAW(q) >> Q_NCBITS) argument
153 #define Q_GFVAL(q) Q_TC(q, Q_LTZ(q) ? -Q_GFABSVAL(q) : Q_GFABSVAL(q)) argument
154 #define Q_SFVAL(q, fv) \ argument
155 ((q) = ((q) & ~(Q_SRAWMASK(q) | Q_FRAWMASK(q))) | \
156 (Q_TC(q, Q_ABS(fv)) << Q_NCBITS) | \
157 (Q_LTZ(fv) ? 1ULL << Q_SIGNSHFT(q) : 0))
184 #define Q_MAXSTRLEN(q, base) \ argument
185 (2 + Q_NIBITS2NCHARS(Q_NIBITS(q), base) + \
186 Q_NFBITS2NCHARS(Q_NFBITS(q), base) + Q_SIGNED(q))
189 #define Q_IBITS2CH(q, bits, base) \ argument
198 #define Q_FBITS2CH(q, bits, base) \ argument
200 int _carry = 0, _idx, _nfbits = Q_NFBITS(q), _shift = 0; \
221 #define Q_TOSTR(q, prec, base, s, slen) \ argument
225 if (Q_LTZ(q) && ((ptrdiff_t)(slen)) > 0) \
227 Q_BT(q) _part = Q_GIABSVAL(q); \
232 *_s++ = Q_IBITS2CH(q, _part, base); \
251 _part = Q_GFABSVAL(q); \
252 if (_i < 0 || _i > (int)Q_NFBITS(q)) \
253 _i = Q_NFBITS(q); \
257 *_s++ = Q_FBITS2CH(q, _part, base); \
274 #define Q_SHL(q, iv) \ argument
275 (Q_LTZ(iv) ? -(int64_t)(Q_ABS(iv) << Q_NFBITS(q)) : \
276 Q_TC(q, iv) << Q_NFBITS(q))
319 #define Q_INI(q, iv, dfv, rpshft) \ argument
321 (*(q)) = Q_CTRLINI(rpshft); \
322 Q_SIFVALS(*(q), iv, Q_DFV2BFV(dfv, Q_NFBITS(*(q)))); \
347 #define Q_QABS(q) (Q_SIGNED(q) ? (q) & ~Q_SRAWMASK(q) : (q)) argument
350 #define Q_Q2F(q) ((float)Q_GIFVAL(q) / (float)(1ULL << Q_NFBITS(q))) argument
351 #define Q_Q2D(q) ((double)Q_GIFVAL(q) / (double)(1ULL << Q_NFBITS(q))) argument
394 #define Q_QCANREPI(q, i) \ argument
395 ((((Q_LTZ(i) && Q_SIGNED(q)) || !Q_LTZ(i)) && \
396 Q_ABS(i) <= Q_TC(i, Q_IMAXVAL(q))) ? 0 : EOVERFLOW)
433 #define Q_DEBUGFMT(q, prefmt, postfmt) \ argument
434 sizeof(q) == 8 ? Q_DEBUGFMT_(prefmt, postfmt, j, 16) : \
435 sizeof(q) == 4 ? Q_DEBUGFMT_(prefmt, postfmt, , 8) : \
436 sizeof(q) == 2 ? Q_DEBUGFMT_(prefmt, postfmt, h, 4) : \
437 sizeof(q) == 1 ? Q_DEBUGFMT_(prefmt, postfmt, hh, 2) : \
444 #define Q_DEBUG(q, prefmt, postfmt, incfmt) \ argument
445 Q_DEBUGFMT(q, prefmt, postfmt) \
446 , #q \
447 , &(q) \
448 , Q_SIGNED(q) ? 's' : 'u' \
449 , Q_NTBITS(q) \
450 , Q_NIBITS(q) \
451 , Q_NFBITS(q) \
452 , Q_RPSHFT(q) \
453 , Q_IMINVAL(q) \
454 , Q_IMAXVAL(q) \
455 , (q) \
456 , Q_IRAWMASK(q) \
457 , Q_FRAWMASK(q) \
458 , Q_TC(q, Q_CRAWMASK(q)) \
459 , Q_IFRAWMASK(q) \
460 , Q_GIRAW(q) \
461 , Q_GIABSVAL(q) \
462 , Q_GIVAL(q) \
463 , Q_GFRAW(q) \
464 , Q_GFABSVAL(q) \
465 , Q_GFVAL(q) \
466 , (incfmt) ? Q_DEBUGFMT(q, "\nfmt:", "") : "" \
554 #define Q_QCPYVALI(q, i) \ argument
556 int _err = Q_QCANREPI(*(q), i); \
558 Q_SIFVAL(*(q), Q_SHL(*(q), i)); \
562 #define Q_QADDSUBI(q, i, eop) \ argument
565 if (Q_NTBITS(*(q)) < (uint32_t)flsll(Q_ABS(i))) \
568 if (Q_IMAXVAL(*(q)) - Q_TC(*(q), Q_ABS(i)) < \
569 Q_GIVAL(*(q))) \
572 Q_SIFVAL(*(q), Q_GIFVAL(*(q)) + \
573 Q_SHL(*(q), Q_ABS(i))); \
575 if (Q_IMINVAL(*(q)) + Q_ABS(i) > Q_GIVAL(*(q))) \
578 Q_SIFVAL(*(q), Q_GIFVAL(*(q)) - \
579 Q_SHL(*(q), Q_ABS(i))); \
583 #define Q_QADDI(q, i) Q_QADDSUBI(q, i, (Q_LTZ(i) ? '-' : '+')) argument
584 #define Q_QSUBI(q, i) Q_QADDSUBI(q, i, (Q_LTZ(i) ? '+' : '-')) argument
586 #define Q_QDIVI(q, i) \ argument
589 if ((i) == 0 || (!Q_SIGNED(*(q)) && Q_LTZ(i))) \
591 else if (Q_GIFABSVAL(*(q)) != 0) { /* Result expected. */ \
592 Q_SIFVAL(*(q), Q_GIFVAL(*(q)) / Q_TC(*(q), i)); \
593 if (Q_GIFABSVAL(*(q)) == 0) \
599 #define Q_QMULI(q, i) \ argument
602 if (!Q_SIGNED(*(q)) && Q_LTZ(i)) \
604 else if ((i) != 0 && Q_IFMAXVAL(*(q)) / Q_TC(*(q), Q_ABS(i)) < \
605 Q_GIFABSVAL(*(q))) \
608 Q_SIFVAL(*(q), Q_GIFVAL(*(q)) * Q_TC(*(q), i)); \
612 #define Q_QFRACI(q, in, id) \ argument
619 Q_SIFVAL(*(q), in); \
620 else if ((_tmp = Q_ABS(in)) > (UINT64_MAX >> Q_RPSHFT(*(q)))) \
623 _tmp = Q_SHL(*(q), _tmp) / Q_ABS(id); \
624 if (Q_QCANREPI(*(q), _tmp & Q_IFVALIMASK(*(q)))) \
627 Q_SIFVAL(*(q), _tmp); \
628 Q_SSIGN(*(q), (Q_LTZ(in) && !Q_LTZ(id)) || \