Lines Matching refs:rv
303 eval_bop(struct place *p, int lv, enum tokens op, int rv) in eval_bop() argument
308 case T_PIPEPIPE: return lv || rv; in eval_bop()
309 case T_AMPAMP: return lv && rv; in eval_bop()
310 case T_PIPE: return (int)((unsigned)lv | (unsigned)rv); in eval_bop()
311 case T_CARET: return (int)((unsigned)lv ^ (unsigned)rv); in eval_bop()
312 case T_AMP: return (int)((unsigned)lv & (unsigned)rv); in eval_bop()
313 case T_EQEQ: return lv == rv; in eval_bop()
314 case T_BANGEQ: return lv != rv; in eval_bop()
315 case T_LT: return lv < rv; in eval_bop()
316 case T_GT: return lv > rv; in eval_bop()
317 case T_LTEQ: return lv <= rv; in eval_bop()
318 case T_GTEQ: return lv >= rv; in eval_bop()
322 if (rv < 0) { in eval_bop()
325 rv = 0; in eval_bop()
327 if ((unsigned)rv >= CHAR_BIT * sizeof(unsigned)) { in eval_bop()
330 rv = 0; in eval_bop()
333 return (int)((unsigned)lv << (unsigned)rv); in eval_bop()
335 mask = ((unsigned)-1) << (CHAR_BIT * sizeof(unsigned) - rv); in eval_bop()
336 lv = (int)(((unsigned)lv >> (unsigned)rv) | mask); in eval_bop()
340 if (rv == INT_MIN) { in eval_bop()
345 rv++; in eval_bop()
347 rv = -rv; in eval_bop()
350 if (rv > 0 && lv > (INT_MAX - rv)) { in eval_bop()
355 if (rv < 0 && lv < (INT_MIN - rv)) { in eval_bop()
360 return lv + rv; in eval_bop()
363 if (rv == 0) { in eval_bop()
366 if (rv == 1) { in eval_bop()
369 if (rv == -1 && lv == INT_MIN) { in eval_bop()
380 if (lv == INT_MIN && rv < 0) { in eval_bop()
385 if (lv == INT_MIN && rv > 0) { in eval_bop()
390 if (rv < 0) { in eval_bop()
391 rv = -rv; in eval_bop()
394 if (lv > 0 && lv > INT_MAX / rv) { in eval_bop()
399 if (lv < 0 && lv < INT_MIN / rv) { in eval_bop()
404 return lv * rv; in eval_bop()
407 if (rv == 0) { in eval_bop()
412 return lv / rv; in eval_bop()
415 if (rv == 0) { in eval_bop()
420 return lv % rv; in eval_bop()