Lines Matching refs:num

39 #define num_zerop(num) ((num.low | num.high) == 0)  argument
461 append_digit (cpp_num num, int digit, int base, size_t precision) in append_digit() argument
483 overflow = !!(num.high >> (PART_PRECISION - shift)); in append_digit()
484 result.high = num.high << shift; in append_digit()
485 result.low = num.low << shift; in append_digit()
486 result.high |= num.low >> (PART_PRECISION - shift); in append_digit()
487 result.unsignedp = num.unsignedp; in append_digit()
491 add_low = num.low << 1; in append_digit()
492 add_high = (num.high << 1) + (num.low >> (PART_PRECISION - 1)); in append_digit()
512 num.low = result.low; in append_digit()
513 num.high = result.high; in append_digit()
515 if (!num_eq (result, num)) in append_digit()
1078 num_trim (cpp_num num, size_t precision) in num_trim() argument
1084 num.high &= ((cpp_num_part) 1 << precision) - 1; in num_trim()
1089 num.low &= ((cpp_num_part) 1 << precision) - 1; in num_trim()
1090 num.high = 0; in num_trim()
1093 return num; in num_trim()
1098 num_positive (cpp_num num, size_t precision) in num_positive() argument
1103 return (num.high & (cpp_num_part) 1 << (precision - 1)) == 0; in num_positive()
1106 return (num.low & (cpp_num_part) 1 << (precision - 1)) == 0; in num_positive()
1112 cpp_num_sign_extend (cpp_num num, size_t precision) in cpp_num_sign_extend() argument
1114 if (!num.unsignedp) in cpp_num_sign_extend()
1120 && (num.high & (cpp_num_part) 1 << (precision - 1))) in cpp_num_sign_extend()
1121 num.high |= ~(~(cpp_num_part) 0 >> (PART_PRECISION - precision)); in cpp_num_sign_extend()
1123 else if (num.low & (cpp_num_part) 1 << (precision - 1)) in cpp_num_sign_extend()
1126 num.low |= ~(~(cpp_num_part) 0 >> (PART_PRECISION - precision)); in cpp_num_sign_extend()
1127 num.high = ~(cpp_num_part) 0; in cpp_num_sign_extend()
1131 return num; in cpp_num_sign_extend()
1136 num_negate (cpp_num num, size_t precision) in num_negate() argument
1140 copy = num; in num_negate()
1141 num.high = ~num.high; in num_negate()
1142 num.low = ~num.low; in num_negate()
1143 if (++num.low == 0) in num_negate()
1144 num.high++; in num_negate()
1145 num = num_trim (num, precision); in num_negate()
1146 num.overflow = (!num.unsignedp && num_eq (num, copy) && !num_zerop (num)); in num_negate()
1148 return num; in num_negate()
1243 num_rshift (cpp_num num, size_t precision, size_t n) in num_rshift() argument
1246 bool x = num_positive (num, precision); in num_rshift()
1248 if (num.unsignedp || x) in num_rshift()
1254 num.high = num.low = sign_mask; in num_rshift()
1259 num.high = sign_mask, num.low |= sign_mask << precision; in num_rshift()
1261 num.high |= sign_mask << (precision - PART_PRECISION); in num_rshift()
1266 num.low = num.high; in num_rshift()
1267 num.high = sign_mask; in num_rshift()
1272 num.low = (num.low >> n) | (num.high << (PART_PRECISION - n)); in num_rshift()
1273 num.high = (num.high >> n) | (sign_mask << (PART_PRECISION - n)); in num_rshift()
1277 num = num_trim (num, precision); in num_rshift()
1278 num.overflow = false; in num_rshift()
1279 return num; in num_rshift()
1284 num_lshift (cpp_num num, size_t precision, size_t n) in num_lshift() argument
1288 num.overflow = !num.unsignedp && !num_zerop (num); in num_lshift()
1289 num.high = num.low = 0; in num_lshift()
1296 orig = num; in num_lshift()
1300 num.high = num.low; in num_lshift()
1301 num.low = 0; in num_lshift()
1305 num.high = (num.high << m) | (num.low >> (PART_PRECISION - m)); in num_lshift()
1306 num.low <<= m; in num_lshift()
1308 num = num_trim (num, precision); in num_lshift()
1310 if (num.unsignedp) in num_lshift()
1311 num.overflow = false; in num_lshift()
1314 maybe_orig = num_rshift (num, precision, n); in num_lshift()
1315 num.overflow = !num_eq (orig, maybe_orig); in num_lshift()
1319 return num; in num_lshift()
1324 num_unary_op (cpp_reader *pfile, cpp_num num, enum cpp_ttype op) in num_unary_op() argument
1332 num.overflow = false; in num_unary_op()
1336 num = num_negate (num, CPP_OPTION (pfile, precision)); in num_unary_op()
1340 num.high = ~num.high; in num_unary_op()
1341 num.low = ~num.low; in num_unary_op()
1342 num = num_trim (num, CPP_OPTION (pfile, precision)); in num_unary_op()
1343 num.overflow = false; in num_unary_op()
1347 num.low = num_zerop (num); in num_unary_op()
1348 num.high = 0; in num_unary_op()
1349 num.overflow = false; in num_unary_op()
1350 num.unsignedp = false; in num_unary_op()
1354 return num; in num_unary_op()