Lines Matching refs:state

57 fail_instr(struct v3d_qpu_validate_state *state, const char *msg)
59 struct v3d_compile *c = state->c;
61 fprintf(stderr, "v3d_qpu_validate at ip %d: %s:\n", state->ip, msg);
67 if (dump_ip++ == state->ip)
78 in_branch_delay_slots(struct v3d_qpu_validate_state *state)
80 return (state->ip - state->last_branch_ip) < 3;
84 in_thrsw_delay_slots(struct v3d_qpu_validate_state *state)
86 return (state->ip - state->last_thrsw_ip) < 3;
110 qpu_validate_inst(struct v3d_qpu_validate_state *state, struct qinst *qinst)
112 const struct v3d_device_info *devinfo = state->c->devinfo;
122 if (state->last && state->last->sig.ldvary &&
124 fail_instr(state, "LDUNIF after a LDVARY");
134 if (state->c->devinfo->ver < 42) {
135 bool last_reads_ldunif = (state->last && (state->last->sig.ldunif ||
136 state->last->sig.ldunifrf));
137 bool last_reads_ldunifa = (state->last && (state->last->sig.ldunifa ||
138 state->last->sig.ldunifarf));
143 fail_instr(state,
156 if (v3d_qpu_magic_waddr_is_tmu(state->c->devinfo,
173 if (v3d_qpu_magic_waddr_is_tmu(state->c->devinfo,
188 if (in_thrsw_delay_slots(state)) {
193 fail_instr(state,
198 fail_instr(state, "LDVARY during THRSW delay slots");
206 if (state->ip - state->last_sfu_write < 2) {
208 fail_instr(state, "R4 read too soon after SFU");
211 fail_instr(state, "R4 write too soon after SFU");
214 fail_instr(state, "SFU write too soon after SFU");
229 fail_instr(state,
234 state->last_sfu_write = state->ip;
237 if (in_branch_delay_slots(state))
238 fail_instr(state, "THRSW in a branch delay slot.");
240 if (state->last_thrsw_found)
241 state->thrend_found = true;
243 if (state->last_thrsw_ip == state->ip - 1) {
247 if (state->last_thrsw_found)
248 fail_instr(state, "Two last-THRSW signals");
249 state->last_thrsw_found = true;
251 if (in_thrsw_delay_slots(state)) {
252 fail_instr(state,
255 state->thrsw_count++;
256 state->last_thrsw_ip = state->ip;
260 if (state->thrend_found &&
261 state->last_thrsw_ip - state->ip <= 2 &&
265 fail_instr(state, "RF write after THREND");
270 fail_instr(state, "RF write after THREND");
275 fail_instr(state, "RF write after THREND");
279 if (state->last_thrsw_ip - state->ip == 2 &&
281 fail_instr(state, "TMUWT in last instruction");
285 if (in_branch_delay_slots(state))
286 fail_instr(state, "branch in a branch delay slot.");
287 if (in_thrsw_delay_slots(state))
288 fail_instr(state, "branch in a THRSW delay slot.");
289 state->last_branch_ip = state->ip;
294 qpu_validate_block(struct v3d_qpu_validate_state *state, struct qblock *block)
297 qpu_validate_inst(state, qinst);
299 state->last = &qinst->qpu;
300 state->ip++;
319 struct v3d_qpu_validate_state state = {
330 qpu_validate_block(&state, block);
333 if (state.thrsw_count > 1 && !state.last_thrsw_found) {
334 fail_instr(&state,
338 if (!state.thrend_found)
339 fail_instr(&state, "No program-end THRSW found");