tnum_subreg
struct tnum tnum_subreg(struct tnum a);
return !(tnum_subreg(a)).mask;
return tnum_or(tnum_clear_subreg(reg), tnum_subreg(subreg));
struct tnum var32_off = tnum_subreg(dst_reg->var_off);
struct tnum var32_off = tnum_subreg(dst_reg->var_off);
struct tnum var32_off = tnum_subreg(dst_reg->var_off);
struct tnum subreg = tnum_subreg(dst_reg->var_off);
dst_reg->var_off = tnum_subreg(tnum_lshift(subreg, umin_val));
struct tnum subreg = tnum_subreg(dst_reg->var_off);
dst_reg->var_off = tnum_arshift(tnum_subreg(dst_reg->var_off), umin_val, 32);
struct tnum t1 = is_jmp32 ? tnum_subreg(reg1->var_off) : reg1->var_off;
struct tnum t2 = is_jmp32 ? tnum_subreg(reg2->var_off) : reg2->var_off;
t = tnum_intersect(tnum_subreg(reg1->var_off), tnum_subreg(reg2->var_off));
t = tnum_or(tnum_subreg(reg1->var_off), tnum_const(val));
t = tnum_and(tnum_subreg(reg1->var_off), tnum_const(~val));
struct tnum var32_off = tnum_subreg(reg->var_off);
struct tnum var32_off = tnum_intersect(tnum_subreg(var64_off),
u32 uval32 = tnum_subreg(reg->var_off).value;
tnum_is_const(subreg32 ? tnum_subreg(reg->var_off) : reg->var_off);
return subreg32 ? tnum_subreg(reg->var_off).value : reg->var_off.value;
reg->var_off = tnum_subreg(reg->var_off);
reg->var_off = tnum_subreg(tnum_unknown);
reg->var_off = tnum_subreg(tnum_range(s32_min, s32_max));