Christoph Bumiller
2009-Sep-10 20:42 UTC
[PATCH 07/13] nv50: handle CEIL and TRUNC opcodes
--- src/gallium/drivers/nv50/nv50_program.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c index 381e396..16df4d8 100644 --- a/src/gallium/drivers/nv50/nv50_program.c +++ b/src/gallium/drivers/nv50/nv50_program.c @@ -1499,6 +1499,14 @@ nv50_program_tx_insn(struct nv50_pc *pc, emit_add(pc, dst[c], src[0][c], src[1][c]); } break; + case TGSI_OPCODE_CEIL: + for (c = 0; c < 4; c++) { + if (!(mask & (1 << c))) + continue; + emit_cvt(pc, dst[c], src[0][c], -1, + CVTOP_CEIL, CVT_F32_F32); + } + break; case TGSI_OPCODE_COS: if (mask & 8) { emit_precossin(pc, temp, src[0][3]); @@ -1678,6 +1686,14 @@ nv50_program_tx_insn(struct nv50_pc *pc, emit_tex(pc, dst, mask, src[0], unit, inst->InstructionExtTexture.Texture, TRUE); break; + case TGSI_OPCODE_TRUNC: + for (c = 0; c < 4; c++) { + if (!(mask & (1 << c))) + continue; + emit_cvt(pc, dst[c], src[0][c], -1, + CVTOP_TRUNC, CVT_F32_F32); + } + break; case TGSI_OPCODE_XPD: temp = temp_temp(pc); if (mask & (1 << 0)) { -- 1.6.3.3 --------------010208090904000401070505 Content-Type: text/plain; name="0008-nv50-cleanup-nv50_reg-initialization-a-little.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename*0="0008-nv50-cleanup-nv50_reg-initialization-a-little.patch"