search for: temp_temp

Displaying 5 results from an estimated 5 matches for "temp_temp".

2009 Jun 21
0
[PATCH] nv50: better insn generation
...nst->FullSrcRegisters[i]; if (fs->SrcRegister.File == TGSI_FILE_SAMPLER) unit = fs->SrcRegister.Index; @@ -1327,10 +1334,15 @@ nv50_program_tx_insn(struct nv50_pc *pc, const union tgsi_full_token *tok) if (sat) { for (c = 0; c < 4; c++) { rdst[c] = dst[c]; - dst[c] = temp_temp(pc); + if (dst[c] && dst[c]->type != P_TEMP) + dst[c] = temp_temp(pc); } - } else - if (direct2dest_op(inst)) { + } + + if (direct2dest_op(inst) && (*pp_rtmp)) { + /* We really don't lose the real dst as we do not + * get here if sat overwrites dst with temp. + *...
2009 Jun 21
0
[PATCH] nv50: support for SLE, SNE, SEQ, SGT
...0, 4, 2, 6, 1, 5, 3, 7 }; struct nv50_reg *rdst; - assert(c_op <= 7); if (check_swap_src_0_1(pc, &src0, &src1)) - c_op = inv_cop[c_op]; + c_op += 8; rdst = dst; - if (dst->type != P_TEMP) - dst = alloc_temp(pc, NULL); + if (dst && dst->type != P_TEMP) + dst = temp_temp(pc); /* set.u32 */ set_long(pc, e); e->inst[0] |= 0xb0000000; - e->inst[1] |= (3 << 29); - e->inst[1] |= (c_op << 14); - /*XXX: breaks things, .u32 by default? - * decuda will disasm as .u16 and use .lo/.hi regs, but this - * doesn't seem to match what the...
2009 Sep 10
0
[PATCH 02/13] nv50: add functions for swizzle resolution
...don't call this function for these ops */ + assert(0); + break; default: - return TRUE; + /* linear vector instruction */ + return (1 << c); } } @@ -1393,25 +1432,6 @@ nv50_program_tx_insn(struct nv50_pc *pc, const union tgsi_full_token *tok) rdst[c] = dst[c]; dst[c] = temp_temp(pc); } - } else - if (direct2dest_op(inst)) { - for (c = 0; c < 4; c++) { - if (!dst[c] || dst[c]->type != P_TEMP) - continue; - - for (i = c + 1; i < 4; i++) { - if (dst[c] == src[0][i] || - dst[c] == src[1][i] || - dst[c] == src[2][i]) - break; - } - i...
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 21
0
[PATCH] nv50: initial support for IF, ELSE, ENDIF insns
...t;if_lvl]->bra = i; + if (pc->if_join[pc->if_lvl]) { + pc->if_join[pc->if_lvl]->bra = i; + pc->if_join[pc->if_lvl] = NULL; + pc->join_on = TRUE; + } + if (pc->insn_cur == (pc->insn_nr - 1)) + emit_nop(pc, TRUE); + break; case TGSI_OPCODE_EX2: temp = temp_temp(pc); rtmp = *pp_rtmp; @@ -1442,6 +1512,12 @@ nv50_program_tx_insn(struct nv50_pc *pc, const union tgsi_full_token *tok) emit_sub(pc, dst[c], src[0][c], temp); } break; + case TGSI_OPCODE_IF: + assert(pc->if_lvl < MAX_IF_LEVEL); + set_pred_wr(pc, 1, 0, pc->if_cond); + emit_b...