Cast some expressions that multiply a long long constant by a

floating point constant to int64_t.  This avoids the runtime
conversion of the the other operand in a set of comparisons from
int64_t to floating point and doing the comparisions in floating
point.

Suggested by:	lidl
Submitted by:	Rasool Al-Saadi <ralsaadi@swin.edu.au>
MFC after:	2 weeks (with r300779)
This commit is contained in:
Don Lewis 2016-05-29 07:23:56 +00:00
parent 4eb767eab0
commit fe4b5f6659
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=300949
2 changed files with 12 additions and 12 deletions

View File

@ -244,17 +244,17 @@ calculate_drop_prob(void *x)
p *= (PIE_MAX_PROB << 12) / AQM_TIME_1S;
/* auto-tune drop probability */
if (prob< PIE_MAX_PROB * 0.000001)
if (prob < (int64_t)(PIE_MAX_PROB * 0.000001))
p >>= 11 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.00001)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.00001))
p >>= 9 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.0001)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.0001))
p >>= 7 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.001)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.001))
p >>= 5 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.01)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.01))
p >>= 3 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.1)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.1))
p >>= 1 + PIE_FIX_POINT_BITS+12;
else
p >>= PIE_FIX_POINT_BITS+12;

View File

@ -407,17 +407,17 @@ fq_calculate_drop_prob(void *x)
p *= (PIE_MAX_PROB << 12) / AQM_TIME_1S;
/* auto-tune drop probability */
if (prob< PIE_MAX_PROB * 0.000001)
if (prob < (int64_t)(PIE_MAX_PROB * 0.000001))
p >>= 11 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.00001)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.00001))
p >>= 9 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.0001)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.0001))
p >>= 7 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.001)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.001))
p >>= 5 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.01)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.01))
p >>= 3 + PIE_FIX_POINT_BITS+12;
else if (prob < PIE_MAX_PROB * 0.1)
else if (prob < (int64_t)(PIE_MAX_PROB * 0.1))
p >>= 1 + PIE_FIX_POINT_BITS+12;
else
p >>= PIE_FIX_POINT_BITS+12;