Lines Matching refs:regs
64 bi_assign_slot_read(bi_registers *regs, bi_index src) in bi_assign_slot_read() argument
72 if (regs->slot[i] == src.value && regs->enabled[i]) in bi_assign_slot_read()
76 if (regs->slot[2] == src.value && regs->slot23.slot2 == BIFROST_OP_READ) in bi_assign_slot_read()
82 if (!regs->enabled[i]) { in bi_assign_slot_read()
83 regs->slot[i] = src.value; in bi_assign_slot_read()
84 regs->enabled[i] = true; in bi_assign_slot_read()
89 if (!regs->slot23.slot3) { in bi_assign_slot_read()
90 regs->slot[2] = src.value; in bi_assign_slot_read()
91 regs->slot23.slot2 = BIFROST_OP_READ; in bi_assign_slot_read()
95 bi_print_slots(regs, stderr); in bi_assign_slot_read()
113 bi_assign_slot_read(&now->regs, (now->fma)->src[src]); in bi_assign_slots()
118 bi_assign_slot_read(&now->regs, (now->add)->src[src]); in bi_assign_slots()
130 now->regs.slot[3] = idx.value; in bi_assign_slots()
131 now->regs.slot23.slot3 = BIFROST_OP_WRITE; in bi_assign_slots()
139 if (now->regs.slot23.slot3) { in bi_assign_slots()
141 assert(!now->regs.slot23.slot2); in bi_assign_slots()
142 now->regs.slot[2] = idx.value; in bi_assign_slots()
143 now->regs.slot23.slot2 = BIFROST_OP_WRITE; in bi_assign_slots()
145 now->regs.slot[3] = idx.value; in bi_assign_slots()
146 now->regs.slot23.slot3 = BIFROST_OP_WRITE; in bi_assign_slots()
147 now->regs.slot23.slot3_fma = true; in bi_assign_slots()
152 return now->regs; in bi_assign_slots()
173 bi_pack_registers(bi_registers regs) in bi_pack_registers() argument
175 enum bifrost_reg_mode mode = bi_pack_register_mode(regs); in bi_pack_registers()
185 if (regs.first_instruction) { in bi_pack_registers()
198 if (!(regs.slot23.slot2 && regs.slot23.slot3)) in bi_pack_registers()
206 if (regs.enabled[1]) { in bi_pack_registers()
208 assert(regs.slot[1] > regs.slot[0]); in bi_pack_registers()
209 assert(regs.enabled[0]); in bi_pack_registers()
212 if (regs.slot[0] > 31) { in bi_pack_registers()
213 regs.slot[0] = 63 - regs.slot[0]; in bi_pack_registers()
214 regs.slot[1] = 63 - regs.slot[1]; in bi_pack_registers()
217 assert(regs.slot[0] <= 31); in bi_pack_registers()
218 assert(regs.slot[1] <= 63); in bi_pack_registers()
221 s.reg1 = regs.slot[1]; in bi_pack_registers()
222 s.reg0 = regs.slot[0]; in bi_pack_registers()
228 if (regs.enabled[0]) { in bi_pack_registers()
230 s.reg1 |= (regs.slot[0] >> 5); in bi_pack_registers()
233 s.reg0 = (regs.slot[0] & 0b11111); in bi_pack_registers()
242 assert(regs.slot[3] == regs.slot[2] || !(regs.slot23.slot2 && regs.slot23.slot3)); in bi_pack_registers()
244 if (regs.slot23.slot2) in bi_pack_registers()
245 regs.slot[3] = regs.slot[2]; in bi_pack_registers()
247 regs.slot[2] = regs.slot[3]; in bi_pack_registers()
248 } else if (!regs.first_instruction) { in bi_pack_registers()
250 assert(regs.slot[2] != regs.slot[3]); in bi_pack_registers()
253 s.reg2 = regs.slot[2]; in bi_pack_registers()
254 s.reg3 = regs.slot[3]; in bi_pack_registers()
255 s.fau_idx = regs.fau_idx; in bi_pack_registers()
265 bi_flip_slots(bi_registers *regs) in bi_flip_slots() argument
267 if (regs->enabled[0] && regs->enabled[1] && regs->slot[1] < regs->slot[0]) { in bi_flip_slots()
268 unsigned temp = regs->slot[0]; in bi_flip_slots()
269 regs->slot[0] = regs->slot[1]; in bi_flip_slots()
270 regs->slot[1] = temp; in bi_flip_slots()
276 bi_get_src_slot(bi_registers *regs, unsigned reg) in bi_get_src_slot() argument
278 if (regs->slot[0] == reg && regs->enabled[0]) in bi_get_src_slot()
280 else if (regs->slot[1] == reg && regs->enabled[1]) in bi_get_src_slot()
282 else if (regs->slot[2] == reg && regs->slot23.slot2 == BIFROST_OP_READ) in bi_get_src_slot()
289 bi_get_src_new(bi_instr *ins, bi_registers *regs, unsigned s) in bi_get_src_new() argument
297 return bi_get_src_slot(regs, src.value); in bi_get_src_new()
312 tuple->regs.fau_idx = tuple->fau_idx; in bi_pack_tuple()
313 tuple->regs.first_instruction = first_tuple; in bi_pack_tuple()
315 bi_flip_slots(&tuple->regs); in bi_pack_tuple()
320 uint64_t reg = bi_pack_registers(tuple->regs); in bi_pack_tuple()
322 bi_get_src_new(tuple->fma, &tuple->regs, 0), in bi_pack_tuple()
323 bi_get_src_new(tuple->fma, &tuple->regs, 1), in bi_pack_tuple()
324 bi_get_src_new(tuple->fma, &tuple->regs, 2), in bi_pack_tuple()
325 bi_get_src_new(tuple->fma, &tuple->regs, 3)); in bi_pack_tuple()
328 bi_get_src_new(tuple->add, &tuple->regs, sr_read + 0), in bi_pack_tuple()
329 bi_get_src_new(tuple->add, &tuple->regs, sr_read + 1), in bi_pack_tuple()
330 bi_get_src_new(tuple->add, &tuple->regs, sr_read + 2), in bi_pack_tuple()
704 unsigned loc = tuple->regs.fau_idx - BIR_FAU_BLEND_0; in bi_collect_blend_ret_addr()