Home | History | Annotate | Download | only in vc4

Lines Matching refs:block

47 queue(struct qblock *block, uint64_t inst)
49 struct queued_qpu_inst *q = rzalloc(block, struct queued_qpu_inst);
51 list_addtail(&q->link, &block->qpu_inst_list);
55 last_inst(struct qblock *block)
58 (struct queued_qpu_inst *)block->qpu_inst_list.prev;
63 set_last_cond_add(struct qblock *block, uint32_t cond)
65 *last_inst(block) = qpu_set_cond_add(*last_inst(block), cond);
69 set_last_cond_mul(struct qblock *block, uint32_t cond)
71 *last_inst(block) = qpu_set_cond_mul(*last_inst(block), cond);
103 * the QPU reuse the VRI (varying interpolation) block's FIFOs to talk to the
104 * VPM block. In the VS/CS (unlike in the FS), the block starts out
105 * uninitialized, and you need to emit setup to the block before any VPM
113 * FIFO, the VPM block will start asynchronously reading vertex attributes and
114 * filling the read FIFO -- that way hopefully the QPU doesn't have to block
124 * write FIFO, it will immediately update the VPM block's setup register.
133 setup_for_vpm_read(struct vc4_compile *c, struct qblock *block)
142 queue(block,
163 fixup_raddr_conflict(struct qblock *block,
186 queue(block, qpu_a_FMAX(qpu_rb(14), *src0, *src0));
188 queue(block, qpu_a_MOV(qpu_rb(14), *src0));
194 *last_inst(block) |= *unpack;
199 queue(block, qpu_a_MOV(qpu_ra(14), *src0));
205 set_last_dst_pack(struct qblock *block, struct qinst *inst)
207 bool had_pm = *last_inst(block) & QPU_PM;
208 bool had_ws = *last_inst(block) & QPU_WS;
209 uint32_t unpack = QPU_GET_FIELD(*last_inst(block), QPU_UNPACK);
214 *last_inst(block) |= QPU_SET_FIELD(inst->dst.pack, QPU_PACK);
218 *last_inst(block) |= QPU_PM;
226 handle_r4_qpu_write(struct qblock *block, struct qinst *qinst,
230 queue(block, qpu_a_MOV(dst, qpu_r4()));
232 queue(block, qpu_a_MOV(qpu_ra(QPU_W_NOP), qpu_r4()));
237 struct qblock *block,
242 qir_for_each_inst(qinst, block) {
327 setup_for_vpm_read(c, block);
427 queue(block, qpu_a_MOV(qpu_rb(QPU_W_SFU_RECIP),
431 queue(block, qpu_a_MOV(qpu_rb(QPU_W_SFU_RECIPSQRT),
435 queue(block, qpu_a_MOV(qpu_rb(QPU_W_SFU_EXP),
439 queue(block, qpu_a_MOV(qpu_rb(QPU_W_SFU_LOG),
446 handle_r4_qpu_write(block, qinst, dst);
452 queue(block, qpu_load_imm_ui(dst, qinst->src[0].index));
456 queue(block, qpu_load_imm_u2(dst, qinst->src[0].index));
460 queue(block, qpu_load_imm_i2(dst, qinst->src[0].index));
470 queue(block,
473 set_last_cond_mul(block, qinst->cond);
475 set_last_dst_pack(block, qinst);
480 fixup_raddr_conflict(block, dst, &src[0], &src[1],
482 queue(block, qpu_a_AND(qpu_ra(QPU_W_MS_FLAGS),
494 queue(block, qpu_NOP());
495 *last_inst(block) = qpu_set_sig(*last_inst(block),
497 handle_r4_qpu_write(block, qinst, dst);
501 queue(block, qpu_a_FADD(dst, src[0], qpu_r5()) | unpack);
506 queue(block, qpu_NOP());
507 *last_inst(block) = qpu_set_sig(*last_inst(block),
509 handle_r4_qpu_write(block, qinst, dst);
513 queue(block, qpu_NOP());
514 *last_inst(block) = qpu_set_sig(*last_inst(block),
516 c->last_thrsw = last_inst(block);
523 queue(block, (qpu_branch(qinst->cond, 0) |
529 fixup_raddr_conflict(block, dst, &src[0], &src[1],
532 queue(block, qpu_a_ADD(qpu_ra(QPU_W_UNIFORMS_ADDRESS),
553 fixup_raddr_conflict(block, dst, &src[0], &src[1],
557 queue(block, qpu_m_alu2(translate[qinst->op].op,
560 set_last_cond_mul(block, qinst->cond);
562 queue(block, qpu_a_alu2(translate[qinst->op].op,
565 set_last_cond_add(block, qinst->cond);
568 set_last_dst_pack(block, qinst);
577 *last_inst(block) |= QPU_SF;
601 qir_for_each_block(block, c)
602 vc4_generate_code_block(c, block, temp_registers);