* its destination to be the NIR reg's destination
*/
static void
-ntq_store_dest(struct vc4_compile *c, nir_dest *dest, int chan,
- struct qreg result)
+ntq_store_def(struct vc4_compile *c, nir_def *def, int chan,
+ struct qreg result)
{
struct qinst *last_inst = NULL;
if (!list_is_empty(&c->cur_block->instructions))
(result.file == QFILE_TEMP &&
last_inst && last_inst == c->defs[result.index]));
- nir_intrinsic_instr *store = nir_store_reg_for_def(&dest->ssa);
+ nir_intrinsic_instr *store = nir_store_reg_for_def(def);
if (store == NULL) {
- assert(chan < dest->ssa.num_components);
+ assert(chan < def->num_components);
struct qreg *qregs;
struct hash_entry *entry =
- _mesa_hash_table_search(c->def_ht, &dest->ssa);
+ _mesa_hash_table_search(c->def_ht, def);
if (entry)
qregs = entry->data;
else
- qregs = ntq_init_ssa_def(c, &dest->ssa);
+ qregs = ntq_init_ssa_def(c, def);
qregs[chan] = result;
} else {
if (util_format_is_depth_or_stencil(format)) {
struct qreg scaled = ntq_scale_depth_texture(c, tex);
for (int i = 0; i < 4; i++)
- ntq_store_dest(c, &instr->dest, i, qir_MOV(c, scaled));
+ ntq_store_def(c, &instr->dest.ssa, i, qir_MOV(c, scaled));
} else {
for (int i = 0; i < 4; i++)
- ntq_store_dest(c, &instr->dest, i,
- qir_UNPACK_8_F(c, tex, i));
+ ntq_store_def(c, &instr->dest.ssa, i,
+ qir_UNPACK_8_F(c, tex, i));
}
}
}
for (int i = 0; i < 4; i++)
- ntq_store_dest(c, &instr->dest, i,
- qir_MOV(c, depth_output));
+ ntq_store_def(c, &instr->dest.ssa, i,
+ qir_MOV(c, depth_output));
} else {
for (int i = 0; i < 4; i++)
- ntq_store_dest(c, &instr->dest, i,
- qir_UNPACK_8_F(c, tex, i));
+ ntq_store_def(c, &instr->dest.ssa, i,
+ qir_UNPACK_8_F(c, tex, i));
}
}
struct qreg rep = ntq_get_src(c,
instr->src[0].src,
instr->src[0].swizzle[0]);
- ntq_store_dest(c, &instr->dest.dest, 0, qir_PACK_8888_F(c, rep));
+ ntq_store_def(c, &instr->dest.dest.ssa, 0, qir_PACK_8888_F(c, rep));
return;
}
qir_PACK_8_F(c, result, src, i);
}
- ntq_store_dest(c, &instr->dest.dest, 0, qir_MOV(c, result));
+ ntq_store_def(c, &instr->dest.dest.ssa, 0, qir_MOV(c, result));
}
/** Handles sign-extended bitfield extracts for 16 bits. */
break;
}
- /* Make the temporary for nir_store_dest(). */
+ /* Make the temporary for nir_store_def(). */
*dest = qir_MOV(c, *dest);
return true;
srcs[i] = ntq_get_src(c, instr->src[i].src,
instr->src[i].swizzle[0]);
for (int i = 0; i < nir_op_infos[instr->op].num_inputs; i++)
- ntq_store_dest(c, &instr->dest.dest, i,
- qir_MOV(c, srcs[i]));
+ ntq_store_def(c, &instr->dest.dest.ssa, i,
+ qir_MOV(c, srcs[i]));
return;
}
instr->src[0].swizzle[0]);
unsigned count = nir_dest_num_components(instr->dest.dest);
for (int i = 0; i < count; i++) {
- ntq_store_dest(c, &instr->dest.dest, i,
- qir_UNPACK_8_F(c, src, i));
+ ntq_store_def(c, &instr->dest.dest.ssa, i,
+ qir_UNPACK_8_F(c, src, i));
}
return;
}
abort();
}
- ntq_store_dest(c, &instr->dest.dest, 0, result);
+ ntq_store_def(c, &instr->dest.dest.ssa, 0, result);
}
static void
qir_TLB_COLOR_READ(c);
}
}
- ntq_store_dest(c, &instr->dest, 0,
- qir_MOV(c, c->color_reads[sample_index]));
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ qir_MOV(c, c->color_reads[sample_index]));
}
static void
uint32_t offset = nir_intrinsic_base(instr) +
nir_src_as_uint(instr->src[0]);
int comp = nir_intrinsic_component(instr);
- ntq_store_dest(c, &instr->dest, 0,
- qir_MOV(c, c->inputs[offset * 4 + comp]));
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ qir_MOV(c, c->inputs[offset * 4 + comp]));
}
static void
assert(offset % 4 == 0);
/* We need dwords */
offset = offset / 4;
- ntq_store_dest(c, &instr->dest, 0,
- qir_uniform(c, QUNIFORM_UNIFORM,
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ qir_uniform(c, QUNIFORM_UNIFORM,
offset));
} else {
- ntq_store_dest(c, &instr->dest, 0,
- indirect_uniform_load(c, instr));
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ indirect_uniform_load(c, instr));
}
break;
case nir_intrinsic_load_ubo:
assert(instr->num_components == 1);
- ntq_store_dest(c, &instr->dest, 0, vc4_ubo_load(c, instr));
+ ntq_store_def(c, &instr->dest.ssa, 0, vc4_ubo_load(c, instr));
break;
case nir_intrinsic_load_user_clip_plane:
for (int i = 0; i < nir_intrinsic_dest_components(instr); i++) {
- ntq_store_dest(c, &instr->dest, i,
- qir_uniform(c, QUNIFORM_USER_CLIP_PLANE,
- nir_intrinsic_ucp_id(instr) *
- 4 + i));
+ ntq_store_def(c, &instr->dest.ssa, i,
+ qir_uniform(c, QUNIFORM_USER_CLIP_PLANE,
+ nir_intrinsic_ucp_id(instr) *
+ 4 + i));
}
break;
case nir_intrinsic_load_blend_const_color_g_float:
case nir_intrinsic_load_blend_const_color_b_float:
case nir_intrinsic_load_blend_const_color_a_float:
- ntq_store_dest(c, &instr->dest, 0,
- qir_uniform(c, QUNIFORM_BLEND_CONST_COLOR_X +
- (instr->intrinsic -
- nir_intrinsic_load_blend_const_color_r_float),
- 0));
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ qir_uniform(c, QUNIFORM_BLEND_CONST_COLOR_X +
+ (instr->intrinsic -
+ nir_intrinsic_load_blend_const_color_r_float),
+ 0));
break;
case nir_intrinsic_load_blend_const_color_rgba8888_unorm:
- ntq_store_dest(c, &instr->dest, 0,
- qir_uniform(c, QUNIFORM_BLEND_CONST_COLOR_RGBA,
- 0));
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ qir_uniform(c, QUNIFORM_BLEND_CONST_COLOR_RGBA,
+ 0));
break;
case nir_intrinsic_load_blend_const_color_aaaa8888_unorm:
- ntq_store_dest(c, &instr->dest, 0,
- qir_uniform(c, QUNIFORM_BLEND_CONST_COLOR_AAAA,
- 0));
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ qir_uniform(c, QUNIFORM_BLEND_CONST_COLOR_AAAA,
+ 0));
break;
case nir_intrinsic_load_sample_mask_in:
- ntq_store_dest(c, &instr->dest, 0,
- qir_uniform(c, QUNIFORM_SAMPLE_MASK, 0));
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ qir_uniform(c, QUNIFORM_SAMPLE_MASK, 0));
break;
case nir_intrinsic_load_front_face:
/* The register contains 0 (front) or 1 (back), and we need to
* turn it into a NIR bool where true means front.
*/
- ntq_store_dest(c, &instr->dest, 0,
- qir_ADD(c,
- qir_uniform_ui(c, -1),
- qir_reg(QFILE_FRAG_REV_FLAG, 0)));
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ qir_ADD(c,
+ qir_uniform_ui(c, -1),
+ qir_reg(QFILE_FRAG_REV_FLAG, 0)));
break;
case nir_intrinsic_load_input:
assert(nir_src_is_const(instr->src[0]));
int sampler = nir_src_as_int(instr->src[0]);
- ntq_store_dest(c, &instr->dest, 0,
- qir_uniform(c, QUNIFORM_TEXRECT_SCALE_X, sampler));
- ntq_store_dest(c, &instr->dest, 1,
- qir_uniform(c, QUNIFORM_TEXRECT_SCALE_Y, sampler));
+ ntq_store_def(c, &instr->dest.ssa, 0,
+ qir_uniform(c, QUNIFORM_TEXRECT_SCALE_X, sampler));
+ ntq_store_def(c, &instr->dest.ssa, 1,
+ qir_uniform(c, QUNIFORM_TEXRECT_SCALE_Y, sampler));
break;
}