Lines Matching refs:num

39 #define num_zerop(num) ((num.low | num.high) == 0)  argument
458 append_digit (cpp_num num, int digit, int base, size_t precision) in append_digit() argument
480 overflow = !!(num.high >> (PART_PRECISION - shift)); in append_digit()
481 result.high = num.high << shift; in append_digit()
482 result.low = num.low << shift; in append_digit()
483 result.high |= num.low >> (PART_PRECISION - shift); in append_digit()
484 result.unsignedp = num.unsignedp; in append_digit()
488 add_low = num.low << 1; in append_digit()
489 add_high = (num.high << 1) + (num.low >> (PART_PRECISION - 1)); in append_digit()
509 num.low = result.low; in append_digit()
510 num.high = result.high; in append_digit()
512 if (!num_eq (result, num)) in append_digit()
1075 num_trim (cpp_num num, size_t precision) in num_trim() argument
1081 num.high &= ((cpp_num_part) 1 << precision) - 1; in num_trim()
1086 num.low &= ((cpp_num_part) 1 << precision) - 1; in num_trim()
1087 num.high = 0; in num_trim()
1090 return num; in num_trim()
1095 num_positive (cpp_num num, size_t precision) in num_positive() argument
1100 return (num.high & (cpp_num_part) 1 << (precision - 1)) == 0; in num_positive()
1103 return (num.low & (cpp_num_part) 1 << (precision - 1)) == 0; in num_positive()
1109 cpp_num_sign_extend (cpp_num num, size_t precision) in cpp_num_sign_extend() argument
1111 if (!num.unsignedp) in cpp_num_sign_extend()
1117 && (num.high & (cpp_num_part) 1 << (precision - 1))) in cpp_num_sign_extend()
1118 num.high |= ~(~(cpp_num_part) 0 >> (PART_PRECISION - precision)); in cpp_num_sign_extend()
1120 else if (num.low & (cpp_num_part) 1 << (precision - 1)) in cpp_num_sign_extend()
1123 num.low |= ~(~(cpp_num_part) 0 >> (PART_PRECISION - precision)); in cpp_num_sign_extend()
1124 num.high = ~(cpp_num_part) 0; in cpp_num_sign_extend()
1128 return num; in cpp_num_sign_extend()
1133 num_negate (cpp_num num, size_t precision) in num_negate() argument
1137 copy = num; in num_negate()
1138 num.high = ~num.high; in num_negate()
1139 num.low = ~num.low; in num_negate()
1140 if (++num.low == 0) in num_negate()
1141 num.high++; in num_negate()
1142 num = num_trim (num, precision); in num_negate()
1143 num.overflow = (!num.unsignedp && num_eq (num, copy) && !num_zerop (num)); in num_negate()
1145 return num; in num_negate()
1240 num_rshift (cpp_num num, size_t precision, size_t n) in num_rshift() argument
1243 bool x = num_positive (num, precision); in num_rshift()
1245 if (num.unsignedp || x) in num_rshift()
1251 num.high = num.low = sign_mask; in num_rshift()
1256 num.high = sign_mask, num.low |= sign_mask << precision; in num_rshift()
1258 num.high |= sign_mask << (precision - PART_PRECISION); in num_rshift()
1263 num.low = num.high; in num_rshift()
1264 num.high = sign_mask; in num_rshift()
1269 num.low = (num.low >> n) | (num.high << (PART_PRECISION - n)); in num_rshift()
1270 num.high = (num.high >> n) | (sign_mask << (PART_PRECISION - n)); in num_rshift()
1274 num = num_trim (num, precision); in num_rshift()
1275 num.overflow = false; in num_rshift()
1276 return num; in num_rshift()
1281 num_lshift (cpp_num num, size_t precision, size_t n) in num_lshift() argument
1285 num.overflow = !num.unsignedp && !num_zerop (num); in num_lshift()
1286 num.high = num.low = 0; in num_lshift()
1293 orig = num; in num_lshift()
1297 num.high = num.low; in num_lshift()
1298 num.low = 0; in num_lshift()
1302 num.high = (num.high << m) | (num.low >> (PART_PRECISION - m)); in num_lshift()
1303 num.low <<= m; in num_lshift()
1305 num = num_trim (num, precision); in num_lshift()
1307 if (num.unsignedp) in num_lshift()
1308 num.overflow = false; in num_lshift()
1311 maybe_orig = num_rshift (num, precision, n); in num_lshift()
1312 num.overflow = !num_eq (orig, maybe_orig); in num_lshift()
1316 return num; in num_lshift()
1321 num_unary_op (cpp_reader *pfile, cpp_num num, enum cpp_ttype op) in num_unary_op() argument
1329 num.overflow = false; in num_unary_op()
1333 num = num_negate (num, CPP_OPTION (pfile, precision)); in num_unary_op()
1337 num.high = ~num.high; in num_unary_op()
1338 num.low = ~num.low; in num_unary_op()
1339 num = num_trim (num, CPP_OPTION (pfile, precision)); in num_unary_op()
1340 num.overflow = false; in num_unary_op()
1344 num.low = num_zerop (num); in num_unary_op()
1345 num.high = 0; in num_unary_op()
1346 num.overflow = false; in num_unary_op()
1347 num.unsignedp = false; in num_unary_op()
1351 return num; in num_unary_op()