Lines Matching refs:inst

33 set_src_raddr(uint64_t inst, struct qpu_reg src)
36 assert(QPU_GET_FIELD(inst, QPU_RADDR_A) == QPU_R_NOP ||
37 QPU_GET_FIELD(inst, QPU_RADDR_A) == src.addr);
38 return QPU_UPDATE_FIELD(inst, src.addr, QPU_RADDR_A);
42 assert((QPU_GET_FIELD(inst, QPU_RADDR_B) == QPU_R_NOP ||
43 QPU_GET_FIELD(inst, QPU_RADDR_B) == src.addr) &&
44 QPU_GET_FIELD(inst, QPU_SIG) != QPU_SIG_SMALL_IMM);
45 return QPU_UPDATE_FIELD(inst, src.addr, QPU_RADDR_B);
49 if (QPU_GET_FIELD(inst, QPU_SIG) == QPU_SIG_SMALL_IMM) {
50 assert(QPU_GET_FIELD(inst, QPU_RADDR_B) == src.addr);
52 inst = qpu_set_sig(inst, QPU_SIG_SMALL_IMM);
53 assert(QPU_GET_FIELD(inst, QPU_RADDR_B) == QPU_R_NOP);
55 return ((inst & ~QPU_RADDR_B_MASK) |
59 return inst;
65 uint64_t inst = 0;
67 inst |= QPU_SET_FIELD(QPU_A_NOP, QPU_OP_ADD);
68 inst |= QPU_SET_FIELD(QPU_M_NOP, QPU_OP_MUL);
71 inst |= QPU_SET_FIELD(QPU_W_NOP, QPU_WADDR_ADD);
72 inst |= QPU_SET_FIELD(QPU_W_NOP, QPU_WADDR_MUL);
73 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_A);
74 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_B);
75 inst |= QPU_SET_FIELD(QPU_SIG_NONE, QPU_SIG);
77 return inst;
83 uint64_t inst = 0;
87 inst |= QPU_SET_FIELD(32 + dst.mux, QPU_WADDR_ADD);
89 inst |= QPU_SET_FIELD(dst.addr, QPU_WADDR_ADD);
91 inst |= QPU_WS;
94 return inst;
100 uint64_t inst = 0;
104 inst |= QPU_SET_FIELD(32 + dst.mux, QPU_WADDR_MUL);
106 inst |= QPU_SET_FIELD(dst.addr, QPU_WADDR_MUL);
108 inst |= QPU_WS;
111 return inst;
117 uint64_t inst = 0;
119 inst |= QPU_SET_FIELD(QPU_SIG_NONE, QPU_SIG);
120 inst |= QPU_SET_FIELD(QPU_A_OR, QPU_OP_ADD);
121 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_A);
122 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_B);
123 inst |= qpu_a_dst(dst);
124 inst |= QPU_SET_FIELD(QPU_COND_ALWAYS, QPU_COND_ADD);
125 inst |= QPU_MUX(src.mux, QPU_ADD_A);
126 inst |= QPU_MUX(src.mux, QPU_ADD_B);
127 inst = set_src_raddr(inst, src);
128 inst |= QPU_SET_FIELD(QPU_W_NOP, QPU_WADDR_MUL);
130 return inst;
136 uint64_t inst = 0;
138 inst |= QPU_SET_FIELD(QPU_SIG_NONE, QPU_SIG);
139 inst |= QPU_SET_FIELD(QPU_M_V8MIN, QPU_OP_MUL);
140 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_A);
141 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_B);
142 inst |= qpu_m_dst(dst);
143 inst |= QPU_SET_FIELD(QPU_COND_ALWAYS, QPU_COND_MUL);
144 inst |= QPU_MUX(src.mux, QPU_MUL_A);
145 inst |= QPU_MUX(src.mux, QPU_MUL_B);
146 inst = set_src_raddr(inst, src);
147 inst |= QPU_SET_FIELD(QPU_W_NOP, QPU_WADDR_ADD);
149 return inst;
155 uint64_t inst = 0;
157 inst |= qpu_a_dst(dst);
158 inst |= QPU_SET_FIELD(QPU_W_NOP, QPU_WADDR_MUL);
159 inst |= QPU_SET_FIELD(QPU_COND_ALWAYS, QPU_COND_ADD);
160 inst |= QPU_SET_FIELD(QPU_COND_ALWAYS, QPU_COND_MUL);
161 inst |= QPU_SET_FIELD(QPU_SIG_LOAD_IMM, QPU_SIG);
162 inst |= val;
164 return inst;
184 uint64_t inst = 0;
186 inst |= qpu_a_dst(qpu_ra(QPU_W_NOP));
187 inst |= qpu_m_dst(qpu_rb(QPU_W_NOP));
188 inst |= QPU_SET_FIELD(cond, QPU_BRANCH_COND);
189 inst |= QPU_SET_FIELD(QPU_SIG_BRANCH, QPU_SIG);
190 inst |= QPU_SET_FIELD(target, QPU_BRANCH_TARGET);
192 return inst;
199 uint64_t inst = 0;
201 inst |= QPU_SET_FIELD(QPU_SIG_NONE, QPU_SIG);
202 inst |= QPU_SET_FIELD(op, QPU_OP_ADD);
203 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_A);
204 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_B);
205 inst |= qpu_a_dst(dst);
206 inst |= QPU_SET_FIELD(QPU_COND_ALWAYS, QPU_COND_ADD);
207 inst |= QPU_MUX(src0.mux, QPU_ADD_A);
208 inst = set_src_raddr(inst, src0);
209 inst |= QPU_MUX(src1.mux, QPU_ADD_B);
210 inst = set_src_raddr(inst, src1);
211 inst |= QPU_SET_FIELD(QPU_W_NOP, QPU_WADDR_MUL);
213 return inst;
220 uint64_t inst = 0;
222 inst |= QPU_SET_FIELD(QPU_SIG_NONE, QPU_SIG);
223 inst |= QPU_SET_FIELD(op, QPU_OP_MUL);
224 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_A);
225 inst |= QPU_SET_FIELD(QPU_R_NOP, QPU_RADDR_B);
226 inst |= qpu_m_dst(dst);
227 inst |= QPU_SET_FIELD(QPU_COND_ALWAYS, QPU_COND_MUL);
228 inst |= QPU_MUX(src0.mux, QPU_MUL_A);
229 inst = set_src_raddr(inst, src0);
230 inst |= QPU_MUX(src1.mux, QPU_MUL_B);
231 inst = set_src_raddr(inst, src1);
232 inst |= QPU_SET_FIELD(QPU_W_NOP, QPU_WADDR_ADD);
234 return inst;
240 uint64_t inst = 0;
241 inst = qpu_m_alu2(QPU_M_V8MIN, dst, src0, src0);
243 inst = QPU_UPDATE_FIELD(inst, QPU_SIG_SMALL_IMM, QPU_SIG);
244 inst = QPU_UPDATE_FIELD(inst, QPU_SMALL_IMM_MUL_ROT + rot,
247 return inst;
268 qpu_num_sf_accesses(uint64_t inst)
288 uint32_t waddr_add = QPU_GET_FIELD(inst, QPU_WADDR_ADD);
289 uint32_t waddr_mul = QPU_GET_FIELD(inst, QPU_WADDR_MUL);
290 uint32_t raddr_a = QPU_GET_FIELD(inst, QPU_RADDR_A);
291 uint32_t raddr_b = QPU_GET_FIELD(inst, QPU_RADDR_B);
303 QPU_GET_FIELD(inst, QPU_SIG) != QPU_SIG_SMALL_IMM)
307 switch (QPU_GET_FIELD(inst, QPU_SIG)) {
405 convert_mov(uint64_t *inst)
407 uint32_t add_a = QPU_GET_FIELD(*inst, QPU_ADD_A);
408 uint32_t waddr_add = QPU_GET_FIELD(*inst, QPU_WADDR_ADD);
409 uint32_t cond_add = QPU_GET_FIELD(*inst, QPU_COND_ADD);
412 if (QPU_GET_FIELD(*inst, QPU_OP_ADD) != QPU_A_OR ||
413 (add_a != QPU_GET_FIELD(*inst, QPU_ADD_B))) {
417 if (QPU_GET_FIELD(*inst, QPU_SIG) != QPU_SIG_NONE)
421 if (*inst & QPU_PM)
424 *inst = QPU_UPDATE_FIELD(*inst, QPU_A_NOP, QPU_OP_ADD);
425 *inst = QPU_UPDATE_FIELD(*inst, QPU_M_V8MIN, QPU_OP_MUL);
427 *inst = QPU_UPDATE_FIELD(*inst, add_a, QPU_MUL_A);
428 *inst = QPU_UPDATE_FIELD(*inst, add_a, QPU_MUL_B);
429 *inst = QPU_UPDATE_FIELD(*inst, QPU_MUX_R0, QPU_ADD_A);
430 *inst = QPU_UPDATE_FIELD(*inst, QPU_MUX_R0, QPU_ADD_B);
432 *inst = QPU_UPDATE_FIELD(*inst, waddr_add, QPU_WADDR_MUL);
433 *inst = QPU_UPDATE_FIELD(*inst, QPU_W_NOP, QPU_WADDR_ADD);
435 *inst = QPU_UPDATE_FIELD(*inst, cond_add, QPU_COND_MUL);
436 *inst = QPU_UPDATE_FIELD(*inst, QPU_COND_NEVER, QPU_COND_ADD);
439 *inst ^= QPU_WS;
445 writes_a_file(uint64_t inst)
447 if (!(inst & QPU_WS))
448 return QPU_GET_FIELD(inst, QPU_WADDR_ADD) < 32;
450 return QPU_GET_FIELD(inst, QPU_WADDR_MUL) < 32;
454 reads_r4(uint64_t inst)
456 return (QPU_GET_FIELD(inst, QPU_ADD_A) == QPU_MUX_R4 ||
457 QPU_GET_FIELD(inst, QPU_ADD_B) == QPU_MUX_R4 ||
458 QPU_GET_FIELD(inst, QPU_MUL_A) == QPU_MUX_R4 ||
459 QPU_GET_FIELD(inst, QPU_MUL_B) == QPU_MUX_R4);
636 qpu_set_sig(uint64_t inst, uint32_t sig)
638 assert(QPU_GET_FIELD(inst, QPU_SIG) == QPU_SIG_NONE);
639 return QPU_UPDATE_FIELD(inst, sig, QPU_SIG);
643 qpu_set_cond_add(uint64_t inst, uint32_t cond)
645 assert(QPU_GET_FIELD(inst, QPU_COND_ADD) == QPU_COND_ALWAYS);
646 return QPU_UPDATE_FIELD(inst, cond, QPU_COND_ADD);
650 qpu_set_cond_mul(uint64_t inst, uint32_t cond)
652 assert(QPU_GET_FIELD(inst, QPU_COND_MUL) == QPU_COND_ALWAYS);
653 return QPU_UPDATE_FIELD(inst, cond, QPU_COND_MUL);
670 qpu_inst_is_tlb(uint64_t inst)
672 uint32_t sig = QPU_GET_FIELD(inst, QPU_SIG);
674 return (qpu_waddr_is_tlb(QPU_GET_FIELD(inst, QPU_WADDR_ADD)) ||
675 qpu_waddr_is_tlb(QPU_GET_FIELD(inst, QPU_WADDR_MUL)) ||
731 qpu_serialize_one_inst(struct vc4_compile *c, uint64_t inst)
738 c->qpu_insts[c->qpu_inst_count++] = inst;