Lines Matching refs:val

183 mi_value_is_reg(struct mi_value val)
185 return val.type == MI_VALUE_TYPE_REG32 ||
186 val.type == MI_VALUE_TYPE_REG64;
190 mi_value_is_gpr(struct mi_value val)
192 return mi_value_is_reg(val) &&
193 val.reg >= _MI_BUILDER_GPR_BASE &&
194 val.reg < _MI_BUILDER_GPR_BASE +
199 _mi_value_is_allocated_gpr(struct mi_value val)
201 return mi_value_is_reg(val) &&
202 val.reg >= _MI_BUILDER_GPR_BASE &&
203 val.reg < _MI_BUILDER_GPR_BASE +
208 _mi_value_as_gpr(struct mi_value val)
210 assert(mi_value_is_gpr(val));
211 assert(val.reg % 8 == 0);
212 return (val.reg - _MI_BUILDER_GPR_BASE) / 8;
242 mi_value_ref(struct mi_builder *b, struct mi_value val)
245 if (_mi_value_is_allocated_gpr(val)) {
246 unsigned gpr = _mi_value_as_gpr(val);
254 return val;
262 mi_value_unref(struct mi_builder *b, struct mi_value val)
265 if (_mi_value_is_allocated_gpr(val)) {
266 unsigned gpr = _mi_value_as_gpr(val);
288 struct mi_value val = {
293 assert(!_mi_value_is_allocated_gpr(val));
295 return val;
301 struct mi_value val = {
306 assert(!_mi_value_is_allocated_gpr(val));
308 return val;
716 mi_value_to_gpr(struct mi_builder *b, struct mi_value val)
718 if (mi_value_is_gpr(val))
719 return val;
722 bool invert = val.invert;
723 val.invert = false;
726 _mi_copy_no_unref(b, tmp, val);
733 mi_value_to_u64(struct mi_value val)
735 assert(val.type == MI_VALUE_TYPE_IMM);
736 return val.invert ? ~val.imm : val.imm;
740 _mi_math_load_src(struct mi_builder *b, unsigned src, struct mi_value *val)
742 if (val->type == MI_VALUE_TYPE_IMM &&
743 (val->imm == 0 || val->imm == UINT64_MAX)) {
744 uint64_t imm = val->invert ? ~val->imm : val->imm;
747 *val = mi_value_to_gpr(b, *val);
748 return _mi_pack_alu(val->invert ? MI_ALU_LOADINV : MI_ALU_LOAD,
749 src, _mi_value_as_gpr(*val));
774 mi_inot(struct mi_builder *b, struct mi_value val)
776 if (val.type == MI_VALUE_TYPE_IMM)
777 return mi_imm(~mi_value_to_u64(val));
779 val.invert = !val.invert;
780 return val;