Lines Matching refs:instr

58 #define NIR_INSTR_UNSUPPORTED(instr) \
62 nir_print_instr(instr, stderr); \
66 #define TRACE_CONVERSION(instr) \
70 nir_print_instr(instr, stderr); \
2506 NIR_INSTR_UNSUPPORTED(&alu->instr);
4403 NIR_INSTR_UNSUPPORTED(&intr->instr);
4445 emit_deref(struct ntd_context* ctx, nir_deref_instr* instr)
4447 assert(instr->deref_type == nir_deref_type_var ||
4448 instr->deref_type == nir_deref_type_array);
4460 nir_variable *var = nir_deref_instr_get_variable(instr);
4468 const struct glsl_type *type = instr->type;
4473 if (instr->deref_type == nir_deref_type_var) {
4476 const struct dxil_value *base = get_src(ctx, &instr->parent, 0, nir_type_uint32);
4477 const struct dxil_value *offset = get_src(ctx, &instr->arr.index, 0, nir_type_uint32);
4481 if (glsl_type_is_array(instr->type)) {
4483 dxil_module_get_int32_const(&ctx->mod, glsl_get_aoa_size(instr->type)), 0);
4495 store_dest(ctx, &instr->dest, 0, binding, nir_type_uint32);
4520 store_dest_value(ctx, &instr->dest, 0, handle);
4542 emit_jump(struct ntd_context *ctx, nir_jump_instr *instr)
4544 switch (instr->type) {
4547 assert(instr->instr.block->successors[0]);
4548 assert(!instr->instr.block->successors[1]);
4549 return emit_branch(ctx, instr->instr.block->successors[0]->index);
4562 emit_phi(struct ntd_context *ctx, nir_phi_instr *instr)
4564 unsigned bit_size = nir_dest_bit_size(instr->dest);
4569 vphi->num_components = nir_dest_num_components(instr->dest);
4575 store_dest_value(ctx, &instr->dest, i, dxil_instr_get_return_value(phi));
4577 _mesa_hash_table_insert(ctx->phis, instr, vphi);
4582 fixup_phi(struct ntd_context *ctx, nir_phi_instr *instr,
4589 nir_foreach_phi_src(src, instr) {
4808 emit_tex(struct ntd_context *ctx, nir_tex_instr *instr)
4813 params.tex = ctx->srv_handles[instr->texture_index];
4814 params.sampler = ctx->sampler_handles[instr->sampler_index];
4823 params.overload = get_overload(instr->dest_type, 32);
4825 for (unsigned i = 0; i < instr->num_srcs; i++) {
4826 nir_alu_type type = nir_tex_instr_src_type(instr, i);
4828 switch (instr->src[i].src_type) {
4831 &instr->src[i], type);
4838 &instr->src[i], nir_type_int);
4844 assert(instr->op == nir_texop_txb);
4845 assert(nir_src_num_components(instr->src[i].src) == 1);
4846 params.bias = get_src(ctx, &instr->src[i].src, 0, nir_type_float);
4852 assert(nir_src_num_components(instr->src[i].src) == 1);
4853 if (instr->op == nir_texop_txf_ms) {
4854 assert(nir_src_as_int(instr->src[i].src) == 0);
4859 if (instr->sampler_dim != GLSL_SAMPLER_DIM_BUF)
4860 params.lod_or_sample = get_src(ctx, &instr->src[i].src, 0, type);
4868 assert(nir_src_num_components(instr->src[i].src) == 1);
4869 params.min_lod = get_src(ctx, &instr->src[i].src, 0, type);
4875 assert(nir_src_num_components(instr->src[i].src) == 1);
4876 params.cmp = get_src(ctx, &instr->src[i].src, 0, nir_type_float);
4883 &instr->src[i], nir_type_float);
4890 &instr->src[i], nir_type_float);
4896 params.lod_or_sample = get_src(ctx, &instr->src[i].src, 0, nir_type_int);
4903 params.tex = get_src_ssa(ctx, instr->src[i].src.ssa, 0);
4908 params.sampler = get_src_ssa(ctx, instr->src[i].src.ssa, 0);
4913 get_resource_id(ctx, DXIL_RESOURCE_CLASS_SRV, 0, instr->texture_index),
4915 get_src_ssa(ctx, instr->src[i].src.ssa, 0),
4916 dxil_module_get_int32_const(&ctx->mod, instr->texture_index), 0),
4917 instr->texture_non_uniform);
4921 if (nir_tex_instr_need_sampler(instr)) {
4923 get_resource_id(ctx, DXIL_RESOURCE_CLASS_SAMPLER, 0, instr->sampler_index),
4925 get_src_ssa(ctx, instr->src[i].src.ssa, 0),
4926 dxil_module_get_int32_const(&ctx->mod, instr->sampler_index), 0),
4927 instr->sampler_non_uniform);
4935 fprintf(stderr, "texture source: %d\n", instr->src[i].src_type);
4941 assert(instr->op == nir_texop_txf ||
4942 instr->op == nir_texop_txf_ms ||
4943 nir_tex_instr_is_query(instr) ||
4951 switch (instr->op) {
4978 if (instr->sampler_dim == GLSL_SAMPLER_DIM_BUF) {
4992 sample = emit_texture_gather(ctx, &params, instr->component);
4997 store_dest(ctx, &instr->dest, 0, sample, nir_alu_type_get_base_type(instr->dest_type));
4999 store_dest(ctx, &instr->dest, 1, sample, nir_alu_type_get_base_type(instr->dest_type));
5006 store_dest(ctx, &instr->dest, 0, retval, nir_alu_type_get_base_type(instr->dest_type));
5010 fprintf(stderr, "texture op: %d\n", instr->op);
5017 for (unsigned i = 0; i < nir_dest_num_components(instr->dest); ++i) {
5019 store_dest(ctx, &instr->dest, i, retval, nir_alu_type_get_base_type(instr->dest_type));
5033 static bool emit_instr(struct ntd_context *ctx, struct nir_instr* instr)
5035 switch (instr->type) {
5037 return emit_alu(ctx, nir_instr_as_alu(instr));
5039 return emit_intrinsic(ctx, nir_instr_as_intrinsic(instr));
5041 return emit_load_const(ctx, nir_instr_as_load_const(instr));
5043 return emit_deref(ctx, nir_instr_as_deref(instr));
5045 return emit_jump(ctx, nir_instr_as_jump(instr));
5047 return emit_phi(ctx, nir_instr_as_phi(instr));
5049 return emit_tex(ctx, nir_instr_as_tex(instr));
5051 return emit_undefined(ctx, nir_instr_as_ssa_undef(instr));
5053 NIR_INSTR_UNSUPPORTED(instr);
5066 nir_foreach_instr(instr, block) {
5067 TRACE_CONVERSION(instr);
5069 if (!emit_instr(ctx, instr)) {
5211 nir_foreach_instr(instr, block) {
5212 if (instr->type == nir_instr_type_phi) {
5213 nir_phi_instr *ir = nir_instr_as_phi(instr);
5293 nir_foreach_instr(instr, block) {
5294 if (instr->type != nir_instr_type_intrinsic)
5296 nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
5563 lower_bit_size_callback(const nir_instr* instr, void *data)
5565 if (instr->type != nir_instr_type_alu)
5567 const nir_alu_instr *alu = nir_instr_as_alu(instr);