continue;
for (int i = 0; i < vir_get_nsrc(inst); i++) {
- struct qreg src = vir_follow_movs(c, inst->src[i]);
+ if (inst->src[i].file != QFILE_TEMP)
+ continue;
- if (src.file != QFILE_UNIF ||
- c->uniform_contents[src.index] !=
- QUNIFORM_CONSTANT) {
+ /* See if it's a uniform load. */
+ struct qinst *src_def = c->defs[inst->src[i].index];
+ if (!src_def || !src_def->qpu.sig.ldunif)
+ continue;
+ int uniform = src_def->uniform;
+
+ if (c->uniform_contents[uniform] != QUNIFORM_CONSTANT)
continue;
- }
/* Check if the uniform is suitable as a small
* immediate.
*/
- uint32_t imm = c->uniform_data[src.index];
+ uint32_t imm = c->uniform_data[uniform];
uint32_t packed;
if (!v3d_qpu_small_imm_pack(c->devinfo, imm, &packed))
continue;