Lines Matching refs:src
1761 get_src(struct ntd_context *ctx, nir_src *src, unsigned chan,
1764 assert(src->is_ssa);
1765 const struct dxil_value *value = get_src_ssa(ctx, src->ssa, chan);
1767 const int bit_size = nir_src_bit_size(*src);
1782 assert(nir_src_bit_size(*src) >= 16);
1783 assert(nir_src_bit_size(*src) != 64 || ctx->mod.feats.doubles);
1802 get_alu_src_type(struct ntd_context *ctx, nir_alu_instr *alu, unsigned src)
1804 assert(!alu->src[src].abs);
1805 assert(!alu->src[src].negate);
1806 nir_ssa_def *ssa_src = alu->src[src].src.ssa;
1807 unsigned chan = alu->src[src].swizzle[0];
1813 get_alu_src(struct ntd_context *ctx, nir_alu_instr *alu, unsigned src)
1815 assert(!alu->src[src].abs);
1816 assert(!alu->src[src].negate);
1818 unsigned chan = alu->src[src].swizzle[0];
1819 return get_src(ctx, &alu->src[src].src, chan,
1820 nir_op_infos[alu->op].input_types[src]);
1846 unsigned op0_bit_size = nir_src_bit_size(alu->src[0].src);
1847 unsigned op1_bit_size = nir_src_bit_size(alu->src[1].src);
1880 unsigned src_bits = nir_src_bit_size(alu->src[0].src);
1993 if (is_double(info->input_types[0], nir_src_bit_size(alu->src[0].src)))
2039 unsigned src_bits = nir_src_bit_size(alu->src[0].src);
2058 assert(nir_src_bit_size(alu->src[0].src) == dst_bits);
2059 assert(nir_src_bit_size(alu->src[1].src) == dst_bits);
2079 assert(nir_src_bit_size(alu->src[0].src) == dst_bits);
2080 assert(nir_src_bit_size(alu->src[1].src) == dst_bits);
2081 assert(nir_src_bit_size(alu->src[2].src) == dst_bits);
2247 if (!nir_src_is_const(alu->src[1].src) || nir_src_as_int(alu->src[1].src) != 0) {
2274 const struct dxil_value *src =
2275 get_src(ctx, &alu->src[i].src, alu->src[i].swizzle[0], t);
2276 if (!src)
2279 store_alu_dest(ctx, alu, i, src);
2297 get_src(ctx, &alu->src[0].src, alu->src[0].swizzle[0], nir_type_uint32),
2298 get_src(ctx, &alu->src[0].src, alu->src[0].swizzle[1], nir_type_uint32),
2323 get_src(ctx, &alu->src[0].src, alu->src[0].swizzle[0], nir_type_float64)
2358 alu->src->src.ssa, alu->src->swizzle[0]));
2372 const struct dxil_value *src[4];
2375 src[i] = get_alu_src(ctx, alu, i);
2376 if (!src[i])
2382 case nir_op_fadd: return emit_binop(ctx, alu, DXIL_BINOP_ADD, src[0], src[1]);
2385 case nir_op_fsub: return emit_binop(ctx, alu, DXIL_BINOP_SUB, src[0], src[1]);
2388 case nir_op_fmul: return emit_binop(ctx, alu, DXIL_BINOP_MUL, src[0], src[1]);
2395 return emit_binop(ctx, alu, DXIL_BINOP_SDIV, src[0], src[1]);
2397 case nir_op_udiv: return emit_binop(ctx, alu, DXIL_BINOP_UDIV, src[0], src[1]);
2398 case nir_op_irem: return emit_binop(ctx, alu, DXIL_BINOP_SREM, src[0], src[1]);
2399 case nir_op_imod: return emit_binop(ctx, alu, DXIL_BINOP_UREM, src[0], src[1]);
2400 case nir_op_umod: return emit_binop(ctx, alu, DXIL_BINOP_UREM, src[0], src[1]);
2401 case nir_op_ishl: return emit_shift(ctx, alu, DXIL_BINOP_SHL, src[0], src[1]);
2402 case nir_op_ishr: return emit_shift(ctx, alu, DXIL_BINOP_ASHR, src[0], src[1]);
2403 case nir_op_ushr: return emit_shift(ctx, alu, DXIL_BINOP_LSHR, src[0], src[1]);
2404 case nir_op_iand: return emit_binop(ctx, alu, DXIL_BINOP_AND, src[0], src[1]);
2405 case nir_op_ior: return emit_binop(ctx, alu, DXIL_BINOP_OR, src[0], src[1]);
2406 case nir_op_ixor: return emit_binop(ctx, alu, DXIL_BINOP_XOR, src[0], src[1]);
2411 return emit_binop(ctx, alu, DXIL_BINOP_XOR, src[0], negative_one);
2413 case nir_op_ieq: return emit_cmp(ctx, alu, DXIL_ICMP_EQ, src[0], src[1]);
2414 case nir_op_ine: return emit_cmp(ctx, alu, DXIL_ICMP_NE, src[0], src[1]);
2415 case nir_op_ige: return emit_cmp(ctx, alu, DXIL_ICMP_SGE, src[0], src[1]);
2416 case nir_op_uge: return emit_cmp(ctx, alu, DXIL_ICMP_UGE, src[0], src[1]);
2417 case nir_op_ilt: return emit_cmp(ctx, alu, DXIL_ICMP_SLT, src[0], src[1]);
2418 case nir_op_ult: return emit_cmp(ctx, alu, DXIL_ICMP_ULT, src[0], src[1]);
2419 case nir_op_feq: return emit_cmp(ctx, alu, DXIL_FCMP_OEQ, src[0], src[1]);
2420 case nir_op_fneu: return emit_cmp(ctx, alu, DXIL_FCMP_UNE, src[0], src[1]);
2421 case nir_op_flt: return emit_cmp(ctx, alu, DXIL_FCMP_OLT, src[0], src[1]);
2422 case nir_op_fge: return emit_cmp(ctx, alu, DXIL_FCMP_OGE, src[0], src[1]);
2423 case nir_op_bcsel: return emit_select(ctx, alu, src[0], src[1], src[2]);
2424 case nir_op_ftrunc: return emit_unary_intin(ctx, alu, DXIL_INTR_ROUND_Z, src[0]);
2425 case nir_op_fabs: return emit_unary_intin(ctx, alu, DXIL_INTR_FABS, src[0]);
2426 case nir_op_fcos: return emit_unary_intin(ctx, alu, DXIL_INTR_FCOS, src[0]);
2427 case nir_op_fsin: return emit_unary_intin(ctx, alu, DXIL_INTR_FSIN, src[0]);
2428 case nir_op_fceil: return emit_unary_intin(ctx, alu, DXIL_INTR_ROUND_PI, src[0]);
2429 case nir_op_fexp2: return emit_unary_intin(ctx, alu, DXIL_INTR_FEXP2, src[0]);
2430 case nir_op_flog2: return emit_unary_intin(ctx, alu, DXIL_INTR_FLOG2, src[0]);
2431 case nir_op_ffloor: return emit_unary_intin(ctx, alu, DXIL_INTR_ROUND_NI, src[0]);
2432 case nir_op_ffract: return emit_unary_intin(ctx, alu, DXIL_INTR_FRC, src[0]);
2433 case nir_op_fisnormal: return emit_unary_intin(ctx, alu, DXIL_INTR_ISNORMAL, src[0]);
2434 case nir_op_fisfinite: return emit_unary_intin(ctx, alu, DXIL_INTR_ISFINITE, src[0]);
2437 case nir_op_fddx_coarse: return emit_unary_intin(ctx, alu, DXIL_INTR_DDX_COARSE, src[0]);
2438 case nir_op_fddx_fine: return emit_unary_intin(ctx, alu, DXIL_INTR_DDX_FINE, src[0]);
2440 case nir_op_fddy_coarse: return emit_unary_intin(ctx, alu, DXIL_INTR_DDY_COARSE, src[0]);
2441 case nir_op_fddy_fine: return emit_unary_intin(ctx, alu, DXIL_INTR_DDY_FINE, src[0]);
2443 case nir_op_fround_even: return emit_unary_intin(ctx, alu, DXIL_INTR_ROUND_NE, src[0]);
2446 return emit_binop(ctx, alu, DXIL_BINOP_SDIV, one, src[0]);
2448 case nir_op_fsat: return emit_unary_intin(ctx, alu, DXIL_INTR_SATURATE, src[0]);
2449 case nir_op_bit_count: return emit_unary_intin(ctx, alu, DXIL_INTR_COUNTBITS, src[0]);
2450 case nir_op_bitfield_reverse: return emit_unary_intin(ctx, alu, DXIL_INTR_BFREV, src[0]);
2451 case nir_op_ufind_msb_rev: return emit_unary_intin(ctx, alu, DXIL_INTR_FIRSTBIT_HI, src[0]);
2452 case nir_op_ifind_msb_rev: return emit_unary_intin(ctx, alu, DXIL_INTR_FIRSTBIT_SHI, src[0]);
2453 case nir_op_find_lsb: return emit_unary_intin(ctx, alu, DXIL_INTR_FIRSTBIT_LO, src[0]);
2454 case nir_op_imax: return emit_binary_intin(ctx, alu, DXIL_INTR_IMAX, src[0], src[1]);
2455 case nir_op_imin: return emit_binary_intin(ctx, alu, DXIL_INTR_IMIN, src[0], src[1]);
2456 case nir_op_umax: return emit_binary_intin(ctx, alu, DXIL_INTR_UMAX, src[0], src[1]);
2457 case nir_op_umin: return emit_binary_intin(ctx, alu, DXIL_INTR_UMIN, src[0], src[1]);
2458 case nir_op_frsq: return emit_unary_intin(ctx, alu, DXIL_INTR_RSQRT, src[0]);
2459 case nir_op_fsqrt: return emit_unary_intin(ctx, alu, DXIL_INTR_SQRT, src[0]);
2460 case nir_op_fmax: return emit_binary_intin(ctx, alu, DXIL_INTR_FMAX, src[0], src[1]);
2461 case nir_op_fmin: return emit_binary_intin(ctx, alu, DXIL_INTR_FMIN, src[0], src[1]);
2465 return emit_tertiary_intin(ctx, alu, DXIL_INTR_FMA, src[0], src[1], src[2]);
2467 case nir_op_ibfe: return emit_tertiary_intin(ctx, alu, DXIL_INTR_IBFE, src[2], src[1], src[0]);
2468 case nir_op_ubfe: return emit_tertiary_intin(ctx, alu, DXIL_INTR_UBFE, src[2], src[1], src[0]);
2469 case nir_op_bitfield_insert: return emit_bitfield_insert(ctx, alu, src[0], src[1], src[2], src[3]);
2471 case nir_op_unpack_half_2x16_split_x: return emit_f16tof32(ctx, alu, src[0], false);
2472 case nir_op_unpack_half_2x16_split_y: return emit_f16tof32(ctx, alu, src[0], true);
2473 case nir_op_pack_half_2x16_split: return emit_f32tof16(ctx, alu, src[0], src[1]);
2499 return emit_cast(ctx, alu, src[0]);
2501 case nir_op_f2b32: return emit_f2b32(ctx, alu, src[0]);
2502 case nir_op_b2f16: return emit_b2f16(ctx, alu, src[0]);
2503 case nir_op_b2f32: return emit_b2f32(ctx, alu, src[0]);
2504 case nir_op_b2f64: return emit_b2f64(ctx, alu, src[0]);
2816 get_resource_handle(struct ntd_context *ctx, nir_src *src, enum dxil_resource_class class,
2825 assert(src->ssa->num_components == 1 && src->ssa->bit_size == 32);
2826 nir_const_value *const_block_index = nir_src_as_const_value(*src);
2855 const struct dxil_value *value = get_src_ssa(ctx, src->ssa, 0);
2856 if (nir_src_as_deref(*src) ||
2901 nir_variable *var = nir_get_binding_variable(ctx->shader, nir_chase_binding(intr->src[0]));
2906 const struct dxil_value *handle = get_resource_handle(ctx, &intr->src[0], class, DXIL_RESOURCE_KIND_RAW_BUFFER);
2908 get_src(ctx, &intr->src[1], 0, nir_type_uint);
2912 assert(nir_src_bit_size(intr->src[0]) == 32);
2937 const struct dxil_value* handle = get_resource_handle(ctx, &intr->src[1], DXIL_RESOURCE_CLASS_UAV, DXIL_RESOURCE_KIND_RAW_BUFFER);
2939 get_src(ctx, &intr->src[2], 0, nir_type_uint);
2943 assert(nir_src_bit_size(intr->src[0]) == 32);
2944 unsigned num_components = nir_src_num_components(intr->src[0]);
2948 value[i] = get_src(ctx, &intr->src[0], i, nir_type_uint);
2977 get_src(ctx, &intr->src[0], 0, nir_type_uint);
2979 get_src(ctx, &intr->src[1], 0, nir_type_uint);
2980 const struct dxil_value* handle = get_resource_handle(ctx, &intr->src[2], DXIL_RESOURCE_CLASS_UAV, DXIL_RESOURCE_KIND_RAW_BUFFER);
2982 get_src(ctx, &intr->src[3], 0, nir_type_uint);
3007 assert(nir_src_bit_size(intr->src[0]) == 32);
3008 assert(nir_src_num_components(intr->src[0]) == 1);
3015 index = get_src(ctx, &intr->src[1], 0, nir_type_uint);
3017 index = get_src(ctx, &intr->src[2], 0, nir_type_uint);
3028 value = get_src(ctx, &intr->src[0], 0, nir_type_uint);
3035 const struct dxil_value *mask = get_src(ctx, &intr->src[1], 0, nir_type_uint);
3060 assert(nir_src_bit_size(intr->src[0]) == 32);
3061 assert(nir_src_num_components(intr->src[0]) == 1);
3067 index = get_src(ctx, &intr->src[1], 0, nir_type_uint);
3078 value = get_src(ctx, &intr->src[0], 0, nir_type_uint);
3088 const struct dxil_value* handle = get_resource_handle(ctx, &intr->src[0], DXIL_RESOURCE_CLASS_CBV, DXIL_RESOURCE_KIND_CBUFFER);
3093 nir_const_value *const_offset = nir_src_as_const_value(intr->src[1]);
3097 const struct dxil_value *offset_src = get_src(ctx, &intr->src[1], 0, nir_type_uint);
3124 const struct dxil_value* handle = get_resource_handle(ctx, &intr->src[0], DXIL_RESOURCE_CLASS_CBV, DXIL_RESOURCE_KIND_CBUFFER);
3126 get_src(ctx, &intr->src[1], 0, nir_type_uint);
3164 enum overload_type overload = get_overload(out_type, intr->src[0].ssa->bit_size);
3190 row = get_src(ctx, &intr->src[row_index], 0, nir_type_int);
3203 unsigned comp_size = intr->src[0].ssa->bit_size == 64 ? 2 : 1;
3217 if (!nir_src_is_const(intr->src[row_index])) {
3231 const struct dxil_value *value = get_src(ctx, &intr->src[0], i, out_type);
3300 vertex_id = get_src(ctx, &intr->src[0], 0, nir_type_int);
3327 row = get_src(ctx, &intr->src[row_index], 0, nir_type_int);
3355 if (!nir_src_is_const(intr->src[row_index])) {
3388 nir_intrinsic_instr *barycentric = nir_src_as_intrinsic(intr->src[0]);
3401 const struct dxil_value *float_offset = get_src(ctx, &barycentric->src[0], i, nir_type_float);
3419 args[4] = get_src(ctx, &barycentric->src[0], 0, nir_type_int);
3431 args[2] = get_src(ctx, &intr->src[1], 0, nir_type_int);
3451 if (!nir_src_is_const(intr->src[1])) {
3473 nir_deref_instr_get_variable(nir_src_as_deref(intr->src[0]));
3476 get_src(ctx, &intr->src[1], 0, nir_type_uint);
3510 index = get_src(ctx, &intr->src[0], 0, nir_type_uint);
3546 index = get_src(ctx, &intr->src[0], 0, nir_type_uint);
3587 const struct dxil_value *value = get_src(ctx, &intr->src[0], 0, nir_type_bool);
3644 const struct dxil_value *handle = get_resource_handle(ctx, &intr->src[0], DXIL_RESOURCE_CLASS_UAV, DXIL_RESOURCE_KIND_TEXTURE2D);
3650 is_array = glsl_sampler_type_is_array(nir_src_as_deref(intr->src[0])->type);
3661 glsl_get_sampler_dim(nir_src_as_deref(intr->src[0])->type);
3666 assert(num_coords <= nir_src_num_components(intr->src[1]));
3668 coord[i] = get_src(ctx, &intr->src[1], i, nir_type_uint);
3676 assert(nir_src_bit_size(intr->src[3]) == 32);
3677 unsigned num_components = nir_src_num_components(intr->src[3]);
3681 value[i] = get_src(ctx, &intr->src[3], i, in_type);
3704 const struct dxil_value *handle = get_resource_handle(ctx, &intr->src[0], DXIL_RESOURCE_CLASS_UAV, DXIL_RESOURCE_KIND_TEXTURE2D);
3710 is_array = glsl_sampler_type_is_array(nir_src_as_deref(intr->src[0])->type);
3721 glsl_get_sampler_dim(nir_src_as_deref(intr->src[0])->type);
3726 assert(num_coords <= nir_src_num_components(intr->src[1]));
3728 coord[i] = get_src(ctx, &intr->src[1], i, nir_type_uint);
3770 const struct dxil_value *handle = get_resource_handle(ctx, &intr->src[0], DXIL_RESOURCE_CLASS_UAV, DXIL_RESOURCE_KIND_TEXTURE2D);
3775 nir_deref_instr *src_as_deref = nir_src_as_deref(intr->src[0]);
3793 assert(num_coords <= nir_src_num_components(intr->src[1]));
3795 coord[i] = get_src(ctx, &intr->src[1], i, nir_type_uint);
3800 const struct dxil_value *value = get_src(ctx, &intr->src[3], 0, type);
3817 const struct dxil_value *handle = get_resource_handle(ctx, &intr->src[0], DXIL_RESOURCE_CLASS_UAV, DXIL_RESOURCE_KIND_TEXTURE2D);
3823 is_array = glsl_sampler_type_is_array(nir_src_as_deref(intr->src[0])->type);
3834 glsl_get_sampler_dim(nir_src_as_deref(intr->src[0])->type);
3839 assert(num_coords <= nir_src_num_components(intr->src[1]));
3841 coord[i] = get_src(ctx, &intr->src[1], i, nir_type_uint);
3846 const struct dxil_value *cmpval = get_src(ctx, &intr->src[3], 0, nir_type_uint);
3847 const struct dxil_value *newval = get_src(ctx, &intr->src[4], 0, nir_type_uint);
3889 const struct dxil_value *handle = get_resource_handle(ctx, &intr->src[0], DXIL_RESOURCE_CLASS_UAV, DXIL_RESOURCE_KIND_TEXTURE2D);
3893 const struct dxil_value *lod = get_src(ctx, &intr->src[1], 0, nir_type_uint);
3918 nir_variable *var = nir_get_binding_variable(ctx->shader, nir_chase_binding(intr->src[0]));
3923 const struct dxil_value *handle = get_resource_handle(ctx, &intr->src[0], class, DXIL_RESOURCE_KIND_RAW_BUFFER);
3947 const struct dxil_value* handle = get_resource_handle(ctx, &intr->src[0], DXIL_RESOURCE_CLASS_UAV, DXIL_RESOURCE_KIND_RAW_BUFFER);
3949 get_src(ctx, &intr->src[1], 0, nir_type_uint);
3951 get_src(ctx, &intr->src[2], 0, type);
3977 const struct dxil_value* handle = get_resource_handle(ctx, &intr->src[0], DXIL_RESOURCE_CLASS_UAV, DXIL_RESOURCE_KIND_RAW_BUFFER);
3979 get_src(ctx, &intr->src[1], 0, nir_type_uint);
3981 get_src(ctx, &intr->src[2], 0, nir_type_int);
3983 get_src(ctx, &intr->src[3], 0, nir_type_int);
4012 assert(nir_src_bit_size(intr->src[1]) == 32);
4018 index = get_src(ctx, &intr->src[0], 0, nir_type_uint);
4029 value = get_src(ctx, &intr->src[1], 0, type);
4048 assert(nir_src_bit_size(intr->src[1]) == 32);
4054 index = get_src(ctx, &intr->src[0], 0, nir_type_uint);
4065 cmpval = get_src(ctx, &intr->src[1], 0, nir_type_uint);
4066 newval = get_src(ctx, &intr->src[2], 0, nir_type_uint);
4085 bool const_index = nir_src_is_const(intr->src[0]);
4087 binding += nir_src_as_const_value(intr->src[0])->u32;
4095 const struct dxil_value *offset = get_src(ctx, &intr->src[0], 0, nir_type_uint32);
4112 nir_intrinsic_instr* index = nir_src_as_intrinsic(intr->src[0]);
4122 nir_variable *var = nir_get_binding_variable(ctx->shader, nir_chase_binding(intr->src[0]));
4142 const struct dxil_value *index_value = get_src(ctx, &intr->src[0], 0, nir_type_uint32);
4151 store_dest(ctx, &intr->dest, 1, get_src(ctx, &intr->src[0], 1, nir_type_uint32), nir_type_uint32);
4169 get_src(ctx, &intr->src[0], 0, nir_type_uint32),
4589 nir_foreach_phi_src(src, instr) {
4590 assert(src->src.is_ssa);
4591 const struct dxil_value *val = get_src_ssa(ctx, src->src.ssa, i);
4593 blocks[num_incoming] = src->pred->index;
4611 unsigned max_components, nir_tex_src *src, nir_alu_type type)
4613 unsigned num_components = nir_src_num_components(src->src);
4619 values[i] = get_src(ctx, &src->src, i, type);
4828 switch (instr->src[i].src_type) {
4831 &instr->src[i], type);
4838 &instr->src[i], nir_type_int);
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);
4854 assert(nir_src_as_int(instr->src[i].src) == 0);
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);
4915 get_src_ssa(ctx, instr->src[i].src.ssa, 0),
4925 get_src_ssa(ctx, instr->src[i].src.ssa, 0),
4935 fprintf(stderr, "texture source: %d\n", instr->src[i].src_type);
5216 nir_foreach_phi_src(src, ir) {
5218 store_ssa_def(ctx, src->src.ssa, i, dummy);
5578 unsigned bit_size = nir_src_bit_size(alu->src[i].src);