Lines Matching refs:build

28 nir_builder_init(nir_builder *build, nir_function_impl *impl)
30 memset(build, 0, sizeof(*build));
31 build->exact = false;
32 build->impl = impl;
33 build->shader = impl->function->shader;
66 nir_builder_alu_instr_finish_and_insert(nir_builder *build, nir_alu_instr *instr)
70 instr->exact = build->exact;
122 nir_builder_instr_insert(build, &instr->instr);
128 nir_build_alu(nir_builder *build, nir_op op, nir_ssa_def *src0,
131 nir_alu_instr *instr = nir_alu_instr_create(build->shader, op);
143 return nir_builder_alu_instr_finish_and_insert(build, instr);
147 nir_build_alu1(nir_builder *build, nir_op op, nir_ssa_def *src0)
149 nir_alu_instr *instr = nir_alu_instr_create(build->shader, op);
155 return nir_builder_alu_instr_finish_and_insert(build, instr);
159 nir_build_alu2(nir_builder *build, nir_op op, nir_ssa_def *src0,
162 nir_alu_instr *instr = nir_alu_instr_create(build->shader, op);
169 return nir_builder_alu_instr_finish_and_insert(build, instr);
173 nir_build_alu3(nir_builder *build, nir_op op, nir_ssa_def *src0,
176 nir_alu_instr *instr = nir_alu_instr_create(build->shader, op);
184 return nir_builder_alu_instr_finish_and_insert(build, instr);
188 nir_build_alu4(nir_builder *build, nir_op op, nir_ssa_def *src0,
191 nir_alu_instr *instr = nir_alu_instr_create(build->shader, op);
200 return nir_builder_alu_instr_finish_and_insert(build, instr);
205 nir_build_alu_src_arr(nir_builder *build, nir_op op, nir_ssa_def **srcs)
208 nir_alu_instr *instr = nir_alu_instr_create(build->shader, op);
215 return nir_builder_alu_instr_finish_and_insert(build, instr);
219 nir_vec_scalars(nir_builder *build, nir_ssa_scalar *comp, unsigned num_components)
222 nir_alu_instr *instr = nir_alu_instr_create(build->shader, op);
230 instr->exact = build->exact;
239 nir_builder_instr_insert(build, &instr->instr);
251 nir_ssa_for_src(nir_builder *build, nir_src src, int num_components)
263 return nir_mov_alu(build, alu, num_components);
271 nir_ssa_for_alu_src(nir_builder *build, nir_alu_instr *instr, unsigned srcn)
278 return nir_mov_alu(build, *src, num_components);
283 nir_load_system_value(nir_builder *build, nir_intrinsic_op op, int index,
286 nir_intrinsic_instr *load = nir_intrinsic_instr_create(build->shader, op);
295 nir_builder_instr_insert(build, &load->instr);
300 nir_builder_instr_insert(nir_builder *build, nir_instr *instr)
302 nir_instr_insert(build->cursor, instr);
304 if (build->update_divergence)
305 nir_update_instr_divergence(build->shader, instr);
308 build->cursor = nir_after_instr(instr);
312 nir_builder_cf_insert(nir_builder *build, nir_cf_node *cf)
314 nir_cf_node_insert(build->cursor, cf);
318 nir_builder_is_inside_cf(nir_builder *build, nir_cf_node *cf_node)
320 nir_block *block = nir_cursor_current_block(build->cursor);
329 nir_push_if_src(nir_builder *build, nir_src condition)
331 nir_if *nif = nir_if_create(build->shader);
333 nir_builder_cf_insert(build, &nif->cf_node);
334 build->cursor = nir_before_cf_list(&nif->then_list);
339 nir_push_if(nir_builder *build, nir_ssa_def *condition)
341 return nir_push_if_src(build, nir_src_for_ssa(condition));
345 nir_push_else(nir_builder *build, nir_if *nif)
348 assert(nir_builder_is_inside_cf(build, &nif->cf_node));
350 nir_block *block = nir_cursor_current_block(build->cursor);
353 build->cursor = nir_before_cf_list(&nif->else_list);
358 nir_pop_if(nir_builder *build, nir_if *nif)
361 assert(nir_builder_is_inside_cf(build, &nif->cf_node));
363 nir_block *block = nir_cursor_current_block(build->cursor);
366 build->cursor = nir_after_cf_node(&nif->cf_node);
370 nir_if_phi(nir_builder *build, nir_ssa_def *then_def, nir_ssa_def *else_def)
372 nir_block *block = nir_cursor_current_block(build->cursor);
375 nir_phi_instr *phi = nir_phi_instr_create(build->shader);
384 nir_builder_instr_insert(build, &phi->instr);
390 nir_push_loop(nir_builder *build)
392 nir_loop *loop = nir_loop_create(build->shader);
393 nir_builder_cf_insert(build, &loop->cf_node);
394 build->cursor = nir_before_cf_list(&loop->body);
399 nir_pop_loop(nir_builder *build, nir_loop *loop)
402 assert(nir_builder_is_inside_cf(build, &loop->cf_node));
404 nir_block *block = nir_cursor_current_block(build->cursor);
407 build->cursor = nir_after_cf_node(&loop->cf_node);