Lines Matching refs:ins

285    agx_foreach_instr_global(ctx, ins) {
286 agx_foreach_src(ins, s) {
287 if (ins->src[s].type == AGX_INDEX_NORMAL) {
288 unsigned v = ssa_to_reg[ins->src[s].value];
289 ins->src[s] = agx_replace_index(ins->src[s], agx_register(v, ins->src[s].size));
293 agx_foreach_dest(ins, d) {
294 if (ins->dest[d].type == AGX_INDEX_NORMAL) {
295 unsigned v = ssa_to_reg[ins->dest[d].value];
296 ins->dest[d] = agx_replace_index(ins->dest[d], agx_register(v, ins->dest[d].size));
301 agx_foreach_instr_global_safe(ctx, ins) {
303 agx_builder b = agx_init_builder(ctx, agx_after_instr(ins));
305 if (ins->op == AGX_OPCODE_P_COMBINE) {
306 unsigned base = agx_index_to_reg(ssa_to_reg, ins->dest[0]);
307 unsigned width = agx_size_align_16(ins->dest[0].size);
314 if (agx_is_null(ins->src[i])) continue;
315 assert(ins->src[i].size == ins->dest[0].size);
319 .src = agx_index_to_reg(ssa_to_reg, ins->src[i]) ,
320 .size = ins->src[i].size
325 agx_remove_instruction(ins);
327 } else if (ins->op == AGX_OPCODE_P_EXTRACT) {
329 unsigned size = agx_size_align_16(ins->dest[0].size);
330 unsigned left = agx_index_to_reg(ssa_to_reg, ins->dest[0]);
331 unsigned right = agx_index_to_reg(ssa_to_reg, ins->src[0]) + (size * ins->imm);
334 agx_mov_to(&b, agx_register(left, ins->dest[0].size),
335 agx_register(right, ins->src[0].size));
338 agx_remove_instruction(ins);
340 } else if (ins->op == AGX_OPCODE_P_SPLIT) {
341 unsigned base = agx_index_to_reg(ssa_to_reg, ins->src[0]);
342 unsigned width = agx_size_align_16(ins->src[0].size);
349 if (agx_is_null(ins->dest[i])) continue;
350 assert(ins->dest[i].size == ins->src[0].size);
353 .dest = agx_index_to_reg(ssa_to_reg, ins->dest[i]),
355 .size = ins->dest[i].size
360 agx_builder b = agx_init_builder(ctx, agx_after_instr(ins));
362 agx_remove_instruction(ins);