Displaying 4 results from an estimated 4 matches for "emit_mov".
Did you mean:
em_mov
2009 Jun 21
0
[PATCH] nv50: better insn generation
...insn(struct nv50_pc *pc, const union tgsi_full_token *tok)
break;
case TGSI_OPCODE_COS:
temp = temp_temp(pc);
+ rtmp = *pp_rtmp;
emit_precossin(pc, temp, src[0][0]);
- emit_flop(pc, 5, temp, temp);
- for (c = 0; c < 4; c++) {
- if (!(mask & (1 << c)))
- continue;
- emit_mov(pc, dst[c], temp);
- }
+ emit_flop(pc, 5, rtmp, temp);
break;
case TGSI_OPCODE_DP3:
temp = temp_temp(pc);
+ rtmp = *pp_rtmp;
emit_mul(pc, temp, src[0][0], src[1][0]);
emit_mad(pc, temp, src[0][1], src[1][1], temp);
- emit_mad(pc, temp, src[0][2], src[1][2], temp);
- for (c = 0; c...
2009 May 06
2
nv50: shader generation patches
Hi ! I've been trying to improve NV50 shader generation a bit the last couple of weeks, so here is
what I've produced. I don't know if it's usable for you or just a pile of horrible hacks, but at
least it makes some mesa demos render more correcly, p.e. the teapot (aside from mip-mapping issues
of the floor texture), arbfplight, and I think the gears also didn't appear as they
2009 Jun 24
0
[PATCH] nv50: fix previous patches
...move_outputs(struct nv50_pc *pc)
ctor_reg(&out, P_TEMP, -1, -1);
for (i = 0; i < pc->result_nr * 4; i++) {
- if (pc->result[i].rhw < 0)
+ if (pc->result[i].rhw < 0 ||
+ pc->result[i].rhw == pc->result[i].hw)
continue;
out.hw = pc->result[i].rhw;
emit_mov(pc, &out, &pc->result[i]);
@@ -2337,7 +2349,7 @@ static void nv50_program_tx_postprocess(struct nv50_pc *pc)
if (pc->p->type == PIPE_SHADER_FRAGMENT)
nv50fp_move_outputs(pc);
else
- if (pc->p->type == PIPE_SHADER_VERTEX)
+ if (pc->p->type == PIPE_SHADER_VERTEX &a...
2009 Jun 21
0
[PATCH] nv50: initial support for IF, ELSE, ENDIF insns
...xec *e)
p->exec_head = e;
p->exec_tail = e;
p->exec_size += (e->inst[0] & 1) ? 2 : 1;
+
+ if (pc->join_on) {
+ e->inst[1] |= 0x00000002;
+ pc->join_on = FALSE;
+ }
}
static INLINE void set_long(struct nv50_pc *, struct nv50_program_exec *);
@@ -524,6 +521,28 @@ emit_mov_immdval(struct nv50_pc *pc, struct nv50_reg *dst, float f)
FREE(imm);
}
+/* Assign the hw of the discarded temporary register src
+ * to the tgsi register dst and free src.
+ */
+static void
+assimilate_temp(struct nv50_pc *pc, struct nv50_reg *dst, struct nv50_reg *src)
+{
+ assert(src->in...