Lines Matching defs:tnum
2018 static struct cnum32 cnum32_from_tnum(struct tnum tnum)
2020 tnum = tnum_subreg(tnum);
2021 if ((tnum.mask & S32_MIN) || (tnum.value & S32_MIN))
2024 return cnum32_from_srange(tnum.value | (tnum.mask & S32_MIN),
2025 tnum.value | (tnum.mask & S32_MAX));
2027 return cnum32_from_urange(tnum.value, (tnum.value | tnum.mask));
2030 static struct cnum64 cnum64_from_tnum(struct tnum tnum)
2032 if ((tnum.mask & S64_MIN) || (tnum.value & S64_MIN))
2035 return cnum64_from_srange(tnum.value | (tnum.mask & S64_MIN),
2036 tnum.value | (tnum.mask & S64_MAX));
2038 return cnum64_from_urange(tnum.value, (tnum.value | tnum.mask));
2053 /* Check if u64 and tnum overlap in a single value */
2058 /* The u64 range and the tnum only overlap in umin.
2060 * tnum: --xx----------x-
2064 /* The u64 range and the tnum only overlap in the maximum value
2065 * represented by the tnum, called tmax.
2067 * tnum: xx-----x--------
2072 /* The u64 range and the tnum only overlap in between umin
2075 * tnum: xx----x-------x-
2106 struct tnum var64_off = tnum_intersect(reg->var_off,
2109 struct tnum var32_off = tnum_intersect(tnum_subreg(var64_off),
2169 msg = "const tnum out of sync with range bounds";
2174 msg = "const subreg tnum out of sync with range bounds";
5160 struct tnum reg_off;
5196 struct tnum reg_off;
14952 /* Reset other ranges/tnum to unbounded/unknown. */
14964 /* Reset other ranges/tnum to unbounded/unknown. */
15000 /* Reset other ranges/tnum to unbounded/unknown. */
15036 /* Reset other ranges/tnum to unbounded/unknown. */
15055 /* Reset other ranges/tnum to unbounded/unknown. */
15074 /* Reset other ranges/tnum to unbounded/unknown. */
15113 /* Reset other ranges/tnum to unbounded/unknown. */
15152 /* Reset other ranges/tnum to unbounded/unknown. */
15161 struct tnum var32_off = tnum_subreg(dst_reg->var_off);
15205 struct tnum var32_off = tnum_subreg(dst_reg->var_off);
15249 struct tnum var32_off = tnum_subreg(dst_reg->var_off);
15298 struct tnum subreg = tnum_subreg(dst_reg->var_off);
15303 * that we are forced to pick them up from tnum and zext later and
15354 struct tnum subreg = tnum_subreg(dst_reg->var_off);
15407 * so we can recalculate later from tnum.
15448 * and mark unbounded so we can recalculate later from tnum.
15494 * Bounds will be re-derived from the new tnum later.
15607 /* Calculate sign/unsigned bounds and tnum for alu32 and alu64 bit ops.
15619 * tnum to calculate an approximation of the sign/unsigned bounds.
16244 struct tnum t1 = is_jmp32 ? tnum_subreg(reg1->var_off) : reg1->var_off;
16245 struct tnum t2 = is_jmp32 ? tnum_subreg(reg2->var_off) : reg2->var_off;
16543 struct tnum t;
17590 struct tnum enforce_attach_type_range = tnum_unknown;