Lines Matching full:lo
41 #define __clamp(val, lo, hi) \ argument
42 ((val) >= (hi) ? (hi) : ((val) <= (lo) ? (lo) : (val)))
44 #define __clamp_once(val, lo, hi, unique_val, unique_lo, unique_hi) ({ \ argument
46 typeof(lo) unique_lo = (lo); \
50 #define __clamp_input_check(lo, hi) \ argument
52 __is_constexpr((lo) > (hi)), (lo) > (hi), false)))
54 #define __careful_clamp(val, lo, hi) ({ \ argument
55 __clamp_input_check(lo, hi) + \
56 __builtin_choose_expr(__typecheck(val, lo) && __typecheck(val, hi) && \
57 __typecheck(hi, lo) && __is_constexpr(val) && \
58 __is_constexpr(lo) && __is_constexpr(hi), \
59 __clamp(val, lo, hi), \
60 __clamp_once(val, lo, hi, __UNIQUE_ID(__val), \
106 * @lo: lowest allowable value
109 * This macro does strict typechecking of @lo/@hi to make sure they are of the
112 #define clamp(val, lo, hi) __careful_clamp(val, lo, hi) argument
205 * @lo: minimum allowable value
211 #define clamp_t(type, val, lo, hi) __careful_clamp((type)(val), (type)(lo), (type)(hi)) argument
216 * @lo: minimum allowable value
221 * type and @lo and @hi are literals that will otherwise be assigned a signed
224 #define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi) argument