Lines Matching refs:src
44 ntq_get_src(struct vc4_compile *c, nir_src src, int i);
95 struct qreg indirect_offset = ntq_get_src(c, intr->src[0], 0);
118 ASSERTED int buffer_index = nir_src_as_uint(intr->src[0]);
122 struct qreg offset = ntq_get_src(c, intr->src[1], 0);
250 ntq_get_src(struct vc4_compile *c, nir_src src, int i)
253 if (src.is_ssa) {
254 entry = _mesa_hash_table_search(c->def_ht, src.ssa);
255 assert(i < src.ssa->num_components);
257 nir_register *reg = src.reg.reg;
260 assert(src.reg.base_offset == 0);
270 unsigned src)
274 struct qreg r = ntq_get_src(c, instr->src[src].src,
275 instr->src[src].swizzle[chan]);
277 assert(!instr->src[src].abs);
278 assert(!instr->src[src].negate);
338 ntq_scale_depth_texture(struct vc4_compile *c, struct qreg src)
340 struct qreg depthf = qir_ITOF(c, qir_SHR(c, src,
368 assert(instr->src[0].src_type == nir_tex_src_coord);
369 addr = ntq_get_src(c, instr->src[0].src, 0);
408 switch (instr->src[i].src_type) {
410 s = ntq_get_src(c, instr->src[i].src, 0);
414 t = ntq_get_src(c, instr->src[i].src, 1);
416 r = ntq_get_src(c, instr->src[i].src, 2);
419 lod = ntq_get_src(c, instr->src[i].src, 0);
423 lod = ntq_get_src(c, instr->src[i].src, 0);
427 compare = ntq_get_src(c, instr->src[i].src, 0);
466 tmu->src[qir_get_tex_uniform_src(tmu)] =
475 tmu->src[qir_get_tex_uniform_src(tmu)] =
488 tmu->src[qir_get_tex_uniform_src(tmu)] =
493 tmu->src[qir_get_tex_uniform_src(tmu)] =
498 tmu->src[qir_get_tex_uniform_src(tmu)] = texture_u[next_texture_u++];
575 ntq_ffract(struct vc4_compile *c, struct qreg src)
577 struct qreg trunc = qir_ITOF(c, qir_FTOI(c, src));
578 struct qreg diff = qir_FSUB(c, src, trunc);
592 ntq_ffloor(struct vc4_compile *c, struct qreg src)
594 struct qreg result = qir_ITOF(c, qir_FTOI(c, src));
599 qir_SF(c, qir_FSUB(c, src, result));
613 ntq_fceil(struct vc4_compile *c, struct qreg src)
615 struct qreg result = qir_ITOF(c, qir_FTOI(c, src));
620 qir_SF(c, qir_FSUB(c, result, src));
656 ntq_fsin(struct vc4_compile *c, struct qreg src)
666 struct qreg x = ntq_shrink_sincos_input_range(c, src);
681 ntq_fcos(struct vc4_compile *c, struct qreg src)
692 struct qreg x_frac = ntq_shrink_sincos_input_range(c, src);
709 ntq_fsign(struct vc4_compile *c, struct qreg src)
713 qir_SF(c, src);
803 ntq_src_is_only_ssa_def_user(nir_src *src)
805 if (!src->is_ssa)
808 if (!list_is_empty(&src->ssa->if_uses))
811 return (src->ssa->uses.next == &src->use_link &&
812 src->ssa->uses.next->next == &src->ssa->uses);
831 if (instr->src[0].src.is_ssa &&
832 instr->src[0].src.ssa->parent_instr->type == nir_instr_type_alu &&
833 nir_instr_as_alu(instr->src[0].src.ssa->parent_instr)->op ==
835 vec4 = nir_instr_as_alu(instr->src[0].src.ssa->parent_instr);
842 if (instr->src[0].swizzle[0] == instr->src[0].swizzle[1] &&
843 instr->src[0].swizzle[0] == instr->src[0].swizzle[2] &&
844 instr->src[0].swizzle[0] == instr->src[0].swizzle[3]) {
846 instr->src[0].src,
847 instr->src[0].swizzle[0]);
853 int swiz = instr->src[0].swizzle[i];
854 struct qreg src;
856 src = ntq_get_src(c, vec4->src[swiz].src,
857 vec4->src[swiz].swizzle[0]);
859 src = ntq_get_src(c, instr->src[0].src, swiz);
863 ntq_src_is_only_ssa_def_user(&vec4->src[swiz].src) &&
864 src.file == QFILE_TEMP &&
865 c->defs[src.index] &&
866 qir_is_mul(c->defs[src.index]) &&
867 !c->defs[src.index]->dst.pack) {
868 struct qinst *rewrite = c->defs[src.index];
869 c->defs[src.index] = NULL;
875 qir_PACK_8_F(c, result, src, i);
996 struct qreg *src)
998 if (!instr->src[0].src.is_ssa)
1000 if (instr->src[0].src.ssa->parent_instr->type != nir_instr_type_alu)
1003 nir_instr_as_alu(instr->src[0].src.ssa->parent_instr);
1012 qir_SF(c, src[0]);
1013 return qir_MOV(c, qir_SEL(c, QPU_COND_NS, src[1], src[2]));
1017 ntq_fddx(struct vc4_compile *c, struct qreg src)
1022 if (src.pack || src.file != QFILE_TEMP)
1023 src = qir_MOV(c, src);
1025 struct qreg from_left = qir_ROT_MUL(c, src, 1);
1026 struct qreg from_right = qir_ROT_MUL(c, src, 15);
1033 qir_FSUB(c, from_right, src),
1034 qir_FSUB(c, src, from_left)));
1038 ntq_fddy(struct vc4_compile *c, struct qreg src)
1040 if (src.pack || src.file != QFILE_TEMP)
1041 src = qir_MOV(c, src);
1043 struct qreg from_bottom = qir_ROT_MUL(c, src, 2);
1044 struct qreg from_top = qir_ROT_MUL(c, src, 14);
1052 qir_FSUB(c, from_top, src),
1053 qir_FSUB(c, src, from_bottom)));
1071 srcs[i] = ntq_get_src(c, instr->src[i].src,
1072 instr->src[i].swizzle[0]);
1085 struct qreg src = ntq_get_src(c, instr->src[0].src,
1086 instr->src[0].swizzle[0]);
1090 qir_UNPACK_8_F(c, src, i));
1095 /* General case: We can just grab the one used channel per src. */
1096 struct qreg src[nir_op_infos[instr->op].num_inputs];
1098 src[i] = ntq_get_alu_src(c, instr, i);
1105 result = qir_MOV(c, src[0]);
1108 result = qir_FMUL(c, src[0], src[1]);
1111 result = qir_FADD(c, src[0], src[1]);
1114 result = qir_FSUB(c, src[0], src[1]);
1117 result = qir_FMIN(c, src[0], src[1]);
1120 result = qir_FMAX(c, src[0], src[1]);
1125 result = qir_FTOI(c, src[0]);
1129 result = qir_ITOF(c, src[0]);
1132 result = qir_AND(c, src[0], qir_uniform_f(c, 1.0));
1135 result = qir_AND(c, src[0], qir_uniform_ui(c, 1));
1139 qir_SF(c, src[0]);
1146 result = qir_ADD(c, src[0], src[1]);
1149 result = qir_SHR(c, src[0], src[1]);
1152 result = qir_SUB(c, src[0], src[1]);
1155 result = qir_ASR(c, src[0], src[1]);
1158 result = qir_SHL(c, src[0], src[1]);
1161 result = qir_MIN(c, src[0], src[1]);
1164 result = qir_MAX(c, src[0], src[1]);
1167 result = qir_AND(c, src[0], src[1]);
1170 result = qir_OR(c, src[0], src[1]);
1173 result = qir_XOR(c, src[0], src[1]);
1176 result = qir_NOT(c, src[0]);
1180 result = ntq_umul(c, src[0], src[1]);
1202 result = ntq_emit_bcsel(c, instr, src);
1205 qir_SF(c, src[0]);
1206 result = qir_MOV(c, qir_SEL(c, QPU_COND_ZC, src[1], src[2]));
1210 result = ntq_rcp(c, src[0]);
1213 result = ntq_rsq(c, src[0]);
1216 result = qir_EXP2(c, src[0]);
1219 result = qir_LOG2(c, src[0]);
1223 result = qir_ITOF(c, qir_FTOI(c, src[0]));
1226 result = ntq_fceil(c, src[0]);
1229 result = ntq_ffract(c, src[0]);
1232 result = ntq_ffloor(c, src[0]);
1236 result = ntq_fsin(c, src[0]);
1239 result = ntq_fcos(c, src[0]);
1243 result = ntq_fsign(c, src[0]);
1247 result = qir_FMAXABS(c, src[0], src[0]);
1250 result = qir_MAX(c, src[0],
1251 qir_SUB(c, qir_uniform_ui(c, 0), src[0]));
1255 result = ntq_emit_ibfe(c, src[0], src[1], src[2]);
1259 result = ntq_emit_ubfe(c, src[0], src[1], src[2]);
1263 result = qir_V8ADDS(c, src[0], src[1]);
1267 result = qir_V8SUBS(c, src[0], src[1]);
1271 result = qir_V8MIN(c, src[0], src[1]);
1275 result = qir_V8MAX(c, src[0], src[1]);
1279 result = qir_V8MULD(c, src[0], src[1]);
1285 result = ntq_fddx(c, src[0]);
1291 result = ntq_fddy(c, src[0]);
1678 assert(nir_src_as_uint(instr->src[0]) == 0);
1699 assert(nir_src_is_const(instr->src[0]) &&
1709 nir_src_as_uint(instr->src[0]);
1723 if (nir_src_is_const(instr->src[0])) {
1725 nir_src_as_uint(instr->src[0]);
1795 assert(nir_src_is_const(instr->src[1]) &&
1798 nir_src_as_uint(instr->src[1]);
1808 qir_MOV(c, ntq_get_src(c, instr->src[0],
1815 qir_MOV(c, ntq_get_src(c, instr->src[0], 0));
1832 struct qreg cond = ntq_get_src(c, instr->src[0], 0);
1843 ntq_get_src(c, instr->src[0], 0));
1850 assert(nir_src_is_const(instr->src[0]));
1851 int sampler = nir_src_as_int(instr->src[0]);
2510 if (inst->src[i].file == QFILE_VARY)
2511 input_live[inst->src[i].index] = true;