Lines Matching refs:build
51 void nir_builder_init(nir_builder *build, nir_function_impl *impl);
103 void nir_builder_instr_insert(nir_builder *build, nir_instr *instr);
106 nir_builder_last_instr(nir_builder *build)
108 assert(build->cursor.option == nir_cursor_after_instr);
109 return build->cursor.instr;
114 nir_build_alu(nir_builder *build, nir_op op, nir_ssa_def *src0,
119 nir_build_alu1(nir_builder *build, nir_op op, nir_ssa_def *src0);
121 nir_build_alu2(nir_builder *build, nir_op op, nir_ssa_def *src0,
124 nir_build_alu3(nir_builder *build, nir_op op, nir_ssa_def *src0,
127 nir_build_alu4(nir_builder *build, nir_op op, nir_ssa_def *src0,
130 nir_ssa_def *nir_build_alu_src_arr(nir_builder *build, nir_op op, nir_ssa_def **srcs);
132 nir_instr *nir_builder_last_instr(nir_builder *build);
134 void nir_builder_cf_insert(nir_builder *build, nir_cf_node *cf);
136 bool nir_builder_is_inside_cf(nir_builder *build, nir_cf_node *cf_node);
139 nir_push_if_src(nir_builder *build, nir_src condition);
142 nir_push_if(nir_builder *build, nir_ssa_def *condition);
145 nir_push_else(nir_builder *build, nir_if *nif);
147 void nir_pop_if(nir_builder *build, nir_if *nif);
150 nir_if_phi(nir_builder *build, nir_ssa_def *then_def, nir_ssa_def *else_def);
153 nir_push_loop(nir_builder *build);
155 void nir_pop_loop(nir_builder *build, nir_loop *loop);
158 nir_ssa_undef(nir_builder *build, unsigned num_components, unsigned bit_size)
161 nir_ssa_undef_instr_create(build->shader, num_components, bit_size);
165 nir_instr_insert(nir_before_cf_list(&build->impl->body), &undef->instr);
166 if (build->update_divergence)
167 nir_update_instr_divergence(build->shader, &undef->instr);
173 nir_build_imm(nir_builder *build, unsigned num_components,
177 nir_load_const_instr_create(build->shader, num_components, bit_size);
183 nir_builder_instr_insert(build, &load_const->instr);
189 nir_imm_zero(nir_builder *build, unsigned num_components, unsigned bit_size)
192 nir_load_const_instr_create(build->shader, num_components, bit_size);
196 nir_builder_instr_insert(build, &load_const->instr);
202 nir_imm_boolN_t(nir_builder *build, bool x, unsigned bit_size)
205 return nir_build_imm(build, 1, bit_size, &v);
209 nir_imm_bool(nir_builder *build, bool x)
211 return nir_imm_boolN_t(build, x, 1);
215 nir_imm_true(nir_builder *build)
217 return nir_imm_bool(build, true);
221 nir_imm_false(nir_builder *build)
223 return nir_imm_bool(build, false);
227 nir_imm_floatN_t(nir_builder *build, double x, unsigned bit_size)
230 return nir_build_imm(build, 1, bit_size, &v);
234 nir_imm_float16(nir_builder *build, float x)
236 return nir_imm_floatN_t(build, x, 16);
240 nir_imm_float(nir_builder *build, float x)
242 return nir_imm_floatN_t(build, x, 32);
246 nir_imm_double(nir_builder *build, double x)
248 return nir_imm_floatN_t(build, x, 64);
252 nir_imm_vec2(nir_builder *build, float x, float y)
258 return nir_build_imm(build, 2, 32, v);
262 nir_imm_vec3(nir_builder *build, float x, float y, float z)
269 return nir_build_imm(build, 3, 32, v);
273 nir_imm_vec4(nir_builder *build, float x, float y, float z, float w)
282 return nir_build_imm(build, 4, 32, v);
286 nir_imm_vec4_16(nir_builder *build, float x, float y, float z, float w)
295 return nir_build_imm(build, 4, 16, v);
299 nir_imm_intN_t(nir_builder *build, uint64_t x, unsigned bit_size)
302 return nir_build_imm(build, 1, bit_size, &v);
306 nir_imm_int(nir_builder *build, int x)
308 return nir_imm_intN_t(build, x, 32);
312 nir_imm_int64(nir_builder *build, int64_t x)
314 return nir_imm_intN_t(build, x, 64);
318 nir_imm_ivec2(nir_builder *build, int x, int y)
325 return nir_build_imm(build, 2, 32, v);
329 nir_imm_ivec3(nir_builder *build, int x, int y, int z)
337 return nir_build_imm(build, 3, 32, v);
341 nir_imm_ivec4(nir_builder *build, int x, int y, int z, int w)
350 return nir_build_imm(build, 4, 32, v);
354 nir_builder_alu_instr_finish_and_insert(nir_builder *build, nir_alu_instr *instr);
358 nir_build_alu_src_arr(nir_builder *build, nir_op op, nir_ssa_def **srcs);
362 nir_load_system_value(nir_builder *build, nir_intrinsic_op op, int index,
369 nir_vec(nir_builder *build, nir_ssa_def **comp, unsigned num_components)
371 return nir_build_alu_src_arr(build, nir_op_vec(num_components), comp);
375 nir_vec_scalars(nir_builder *build, nir_ssa_scalar *comp, unsigned num_components);
378 nir_mov_alu(nir_builder *build, nir_alu_src src, unsigned num_components)
391 nir_alu_instr *mov = nir_alu_instr_create(build->shader, nir_op_mov);
394 mov->exact = build->exact;
397 nir_builder_instr_insert(build, &mov->instr);
406 nir_swizzle(nir_builder *build, nir_ssa_def *src, const unsigned *swiz,
423 return nir_mov_alu(build, alu_src, num_components);
428 nir_fdot(nir_builder *build, nir_ssa_def *src0, nir_ssa_def *src1)
432 case 1: return nir_fmul(build, src0, src1);
433 case 2: return nir_fdot2(build, src0, src1);
434 case 3: return nir_fdot3(build, src0, src1);
435 case 4: return nir_fdot4(build, src0, src1);
436 case 5: return nir_fdot5(build, src0, src1);
437 case 8: return nir_fdot8(build, src0, src1);
438 case 16: return nir_fdot16(build, src0, src1);
606 nir_i2i(nir_builder *build, nir_ssa_def *x, unsigned dest_bit_size)
612 case 64: return nir_i2i64(build, x);
613 case 32: return nir_i2i32(build, x);
614 case 16: return nir_i2i16(build, x);
615 case 8: return nir_i2i8(build, x);
621 nir_u2u(nir_builder *build, nir_ssa_def *x, unsigned dest_bit_size)
627 case 64: return nir_u2u64(build, x);
628 case 32: return nir_u2u32(build, x);
629 case 16: return nir_u2u16(build, x);
630 case 8: return nir_u2u8(build, x);
636 nir_iadd_imm(nir_builder *build, nir_ssa_def *x, uint64_t y)
644 return nir_iadd(build, x, nir_imm_intN_t(build, y, x->bit_size));
666 nir_ieq_imm(nir_builder *build, nir_ssa_def *x, uint64_t y)
668 return nir_ieq(build, x, nir_imm_intN_t(build, y, x->bit_size));
672 nir_ine_imm(nir_builder *build, nir_ssa_def *x, uint64_t y)
674 return nir_ine(build, x, nir_imm_intN_t(build, y, x->bit_size));
679 nir_isub_imm(nir_builder *build, uint64_t y, nir_ssa_def *x)
681 return nir_isub(build, nir_imm_intN_t(build, y, x->bit_size), x);
685 _nir_mul_imm(nir_builder *build, nir_ssa_def *x, uint64_t y, bool amul)
691 return nir_imm_intN_t(build, 0, x->bit_size);
694 } else if (!build->shader->options->lower_bitops &&
696 return nir_ishl(build, x, nir_imm_int(build, ffsll(y) - 1));
698 return nir_amul(build, x, nir_imm_intN_t(build, y, x->bit_size));
700 return nir_imul(build, x, nir_imm_intN_t(build, y, x->bit_size));
705 nir_imul_imm(nir_builder *build, nir_ssa_def *x, uint64_t y)
707 return _nir_mul_imm(build, x, y, false);
711 nir_amul_imm(nir_builder *build, nir_ssa_def *x, uint64_t y)
713 return _nir_mul_imm(build, x, y, true);
717 nir_fadd_imm(nir_builder *build, nir_ssa_def *x, double y)
719 return nir_fadd(build, x, nir_imm_floatN_t(build, y, x->bit_size));
723 nir_fmul_imm(nir_builder *build, nir_ssa_def *x, double y)
725 return nir_fmul(build, x, nir_imm_floatN_t(build, y, x->bit_size));
729 nir_iand_imm(nir_builder *build, nir_ssa_def *x, uint64_t y)
735 return nir_imm_intN_t(build, 0, x->bit_size);
739 return nir_iand(build, x, nir_imm_intN_t(build, y, x->bit_size));
744 nir_test_mask(nir_builder *build, nir_ssa_def *x, uint64_t mask)
747 return nir_ine_imm(build, nir_iand_imm(build, x, mask), 0);
751 nir_ior_imm(nir_builder *build, nir_ssa_def *x, uint64_t y)
759 return nir_imm_intN_t(build, y, x->bit_size);
761 return nir_ior(build, x, nir_imm_intN_t(build, y, x->bit_size));
765 nir_ishl_imm(nir_builder *build, nir_ssa_def *x, uint32_t y)
770 return nir_imm_intN_t(build, 0, x->bit_size);
772 return nir_ishl(build, x, nir_imm_int(build, y));
777 nir_ishr_imm(nir_builder *build, nir_ssa_def *x, uint32_t y)
782 return nir_ishr(build, x, nir_imm_int(build, y));
787 nir_ushr_imm(nir_builder *build, nir_ssa_def *x, uint32_t y)
792 return nir_ushr(build, x, nir_imm_int(build, y));
797 nir_udiv_imm(nir_builder *build, nir_ssa_def *x, uint64_t y)
805 return nir_ushr_imm(build, x, ffsll(y) - 1);
807 return nir_udiv(build, x, nir_imm_intN_t(build, y, x->bit_size));
812 nir_ibfe_imm(nir_builder *build, nir_ssa_def *x, uint32_t offset, uint32_t size)
814 return nir_ibfe(build, x, nir_imm_int(build, offset), nir_imm_int(build, size));
818 nir_ubfe_imm(nir_builder *build, nir_ssa_def *x, uint32_t offset, uint32_t size)
820 return nir_ubfe(build, x, nir_imm_int(build, offset), nir_imm_int(build, size));
845 nir_ffma_imm12(nir_builder *build, nir_ssa_def *src0, double src1, double src2)
847 if (build->shader->options->avoid_ternary_with_two_constants)
848 return nir_fadd_imm(build, nir_fmul_imm(build, src0, src1), src2);
850 return nir_ffma(build, src0, nir_imm_floatN_t(build, src1, src0->bit_size),
851 nir_imm_floatN_t(build, src2, src0->bit_size));
855 nir_ffma_imm1(nir_builder *build, nir_ssa_def *src0, double src1, nir_ssa_def *src2)
857 return nir_ffma(build, src0, nir_imm_floatN_t(build, src1, src0->bit_size), src2);
861 nir_ffma_imm2(nir_builder *build, nir_ssa_def *src0, nir_ssa_def *src1, double src2)
863 return nir_ffma(build, src0, src1, nir_imm_floatN_t(build, src2, src0->bit_size));
867 nir_a_minus_bc(nir_builder *build, nir_ssa_def *src0, nir_ssa_def *src1,
870 return nir_ffma(build, nir_fneg(build, src1), src2, src0);
1113 nir_ssa_for_src(nir_builder *build, nir_src src, int num_components);
1116 nir_ssa_for_alu_src(nir_builder *build, nir_alu_instr *instr, unsigned srcn);
1127 nir_build_deref_var(nir_builder *build, nir_variable *var)
1130 nir_deref_instr_create(build->shader, nir_deref_type_var);
1137 nir_get_ptr_bitsize(build->shader), NULL);
1139 nir_builder_instr_insert(build, &deref->instr);
1145 nir_build_deref_array(nir_builder *build, nir_deref_instr *parent,
1155 nir_deref_instr_create(build->shader, nir_deref_type_array);
1166 nir_builder_instr_insert(build, &deref->instr);
1172 nir_build_deref_array_imm(nir_builder *build, nir_deref_instr *parent,
1176 nir_ssa_def *idx_ssa = nir_imm_intN_t(build, index,
1179 return nir_build_deref_array(build, parent, idx_ssa);
1183 nir_build_deref_ptr_as_array(nir_builder *build, nir_deref_instr *parent,
1193 nir_deref_instr_create(build->shader, nir_deref_type_ptr_as_array);
1204 nir_builder_instr_insert(build, &deref->instr);
1210 nir_build_deref_array_wildcard(nir_builder *build, nir_deref_instr *parent)
1216 nir_deref_instr_create(build->shader, nir_deref_type_array_wildcard);
1226 nir_builder_instr_insert(build, &deref->instr);
1232 nir_build_deref_struct(nir_builder *build, nir_deref_instr *parent,
1238 nir_deref_instr_create(build->shader, nir_deref_type_struct);
1249 nir_builder_instr_insert(build, &deref->instr);
1255 nir_build_deref_cast(nir_builder *build, nir_ssa_def *parent,
1260 nir_deref_instr_create(build->shader, nir_deref_type_cast);
1270 nir_builder_instr_insert(build, &deref->instr);
1276 nir_alignment_deref_cast(nir_builder *build, nir_deref_instr *parent,
1280 nir_deref_instr_create(build->shader, nir_deref_type_cast);
1293 nir_builder_instr_insert(build, &deref->instr);
1351 nir_load_reg(nir_builder *build, nir_register *reg)
1353 return nir_ssa_for_src(build, nir_src_for_reg(reg), reg->num_components);
1357 nir_store_reg(nir_builder *build, nir_register *reg,
1363 nir_alu_instr *mov = nir_alu_instr_create(build->shader, nir_op_mov);
1367 nir_builder_instr_insert(build, &mov->instr);
1371 nir_load_deref_with_access(nir_builder *build, nir_deref_instr *deref,
1374 return nir_build_load_deref(build, glsl_get_vector_elements(deref->type),
1381 nir_load_deref(nir_builder *build, nir_deref_instr *deref)
1383 return nir_load_deref_with_access(build, deref, (enum gl_access_qualifier)0);
1387 nir_store_deref_with_access(nir_builder *build, nir_deref_instr *deref,
1392 nir_build_store_deref(build, &deref->dest.ssa, value, writemask, access);
1397 nir_store_deref(nir_builder *build, nir_deref_instr *deref,
1400 nir_store_deref_with_access(build, deref, value, writemask,
1405 nir_copy_deref_with_access(nir_builder *build, nir_deref_instr *dest,
1410 nir_build_copy_deref(build, &dest->dest.ssa, &src->dest.ssa, dest_access, src_access);
1415 nir_copy_deref(nir_builder *build, nir_deref_instr *dest, nir_deref_instr *src)
1417 nir_copy_deref_with_access(build, dest, src,
1423 nir_memcpy_deref_with_access(nir_builder *build, nir_deref_instr *dest,
1428 nir_build_memcpy_deref(build, &dest->dest.ssa, &src->dest.ssa,
1434 nir_memcpy_deref(nir_builder *build, nir_deref_instr *dest,
1437 nir_memcpy_deref_with_access(build, dest, src, size,
1443 nir_load_var(nir_builder *build, nir_variable *var)
1445 return nir_load_deref(build, nir_build_deref_var(build, var));
1449 nir_store_var(nir_builder *build, nir_variable *var, nir_ssa_def *value,
1452 nir_store_deref(build, nir_build_deref_var(build, var), value, writemask);
1456 nir_copy_var(nir_builder *build, nir_variable *dest, nir_variable *src)
1458 nir_copy_deref(build, nir_build_deref_var(build, dest),
1459 nir_build_deref_var(build, src));
1463 nir_load_array_var(nir_builder *build, nir_variable *var, nir_ssa_def *index)
1466 nir_build_deref_array(build, nir_build_deref_var(build, var), index);
1467 return nir_load_deref(build, deref);
1471 nir_load_array_var_imm(nir_builder *build, nir_variable *var, int64_t index)
1474 nir_build_deref_array_imm(build, nir_build_deref_var(build, var), index);
1475 return nir_load_deref(build, deref);
1479 nir_store_array_var(nir_builder *build, nir_variable *var, nir_ssa_def *index,
1483 nir_build_deref_array(build, nir_build_deref_var(build, var), index);
1484 nir_store_deref(build, deref, value, writemask);
1488 nir_store_array_var_imm(nir_builder *build, nir_variable *var, int64_t index,
1492 nir_build_deref_array_imm(build, nir_build_deref_var(build, var), index);
1493 nir_store_deref(build, deref, value, writemask);
1498 nir_load_global(nir_builder *build, nir_ssa_def *addr, unsigned align,
1502 nir_intrinsic_instr_create(build->shader, nir_intrinsic_load_global);
1508 nir_builder_instr_insert(build, &load->instr);
1514 nir_store_global(nir_builder *build, nir_ssa_def *addr, unsigned align,
1518 nir_intrinsic_instr_create(build->shader, nir_intrinsic_store_global);
1525 nir_builder_instr_insert(build, &store->instr);
1530 nir_load_global_constant(nir_builder *build, nir_ssa_def *addr, unsigned align,
1534 nir_intrinsic_instr_create(build->shader, nir_intrinsic_load_global_constant);
1540 nir_builder_instr_insert(build, &load->instr);
1546 nir_load_param(nir_builder *build, uint32_t param_idx)
1548 assert(param_idx < build->impl->function->num_params);
1549 nir_parameter *param = &build->impl->function->params[param_idx];
1550 return nir_build_load_param(build, param->num_components, param->bit_size, param_idx);
1562 nir_f2b(nir_builder *build, nir_ssa_def *f)
1564 return nir_f2b1(build, f);
1568 nir_i2b(nir_builder *build, nir_ssa_def *i)
1570 return nir_i2b1(build, i);
1574 nir_b2f(nir_builder *build, nir_ssa_def *b, uint32_t bit_size)
1577 case 64: return nir_b2f64(build, b);
1578 case 32: return nir_b2f32(build, b);
1579 case 16: return nir_b2f16(build, b);
1586 nir_b2i(nir_builder *build, nir_ssa_def *b, uint32_t bit_size)
1589 case 64: return nir_b2i64(build, b);
1590 case 32: return nir_b2i32(build, b);
1591 case 16: return nir_b2i16(build, b);
1592 case 8: return nir_b2i8(build, b);
1598 nir_load_barycentric(nir_builder *build, nir_intrinsic_op op,
1602 nir_intrinsic_instr *bary = nir_intrinsic_instr_create(build->shader, op);
1605 nir_builder_instr_insert(build, &bary->instr);
1610 nir_jump(nir_builder *build, nir_jump_type jump_type)
1613 nir_jump_instr *jump = nir_jump_instr_create(build->shader, jump_type);
1614 nir_builder_instr_insert(build, &jump->instr);
1618 nir_goto(nir_builder *build, struct nir_block *target)
1620 assert(!build->impl->structured);
1621 nir_jump_instr *jump = nir_jump_instr_create(build->shader, nir_jump_goto);
1623 nir_builder_instr_insert(build, &jump->instr);
1627 nir_goto_if(nir_builder *build, struct nir_block *target, nir_src cond,
1630 assert(!build->impl->structured);
1631 nir_jump_instr *jump = nir_jump_instr_create(build->shader, nir_jump_goto_if);
1635 nir_builder_instr_insert(build, &jump->instr);