mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
svga: implement CEIL opcode translation
Reviewed-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
f7665ca4fc
commit
a1c5513c17
1 changed files with 28 additions and 0 deletions
|
|
@ -871,6 +871,31 @@ static boolean emit_floor(struct svga_shader_emitter *emit,
|
|||
}
|
||||
|
||||
|
||||
/* Translate the following TGSI CEIL instruction.
|
||||
* CEIL DST, SRC
|
||||
* To the following SVGA3D instruction sequence.
|
||||
* FRC TMP, -SRC
|
||||
* ADD DST, SRC, TMP
|
||||
*/
|
||||
static boolean emit_ceil(struct svga_shader_emitter *emit,
|
||||
const struct tgsi_full_instruction *insn)
|
||||
{
|
||||
SVGA3dShaderDestToken dst = translate_dst_register(emit, insn, 0);
|
||||
const struct src_register src0 = translate_src_register(emit, &insn->Src[0]);
|
||||
SVGA3dShaderDestToken temp = get_temp(emit);
|
||||
|
||||
/* FRC TMP, -SRC */
|
||||
if (!submit_op1(emit, inst_token(SVGA3DOP_FRC), temp, negate(src0)))
|
||||
return FALSE;
|
||||
|
||||
/* ADD DST, SRC, TMP */
|
||||
if (!submit_op2(emit, inst_token(SVGA3DOP_ADD), dst, src0, src(temp)))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* Translate the following TGSI CMP instruction.
|
||||
* CMP DST, SRC0, SRC1, SRC2
|
||||
* To the following SVGA3D instruction sequence.
|
||||
|
|
@ -2435,6 +2460,9 @@ static boolean svga_emit_instruction( struct svga_shader_emitter *emit,
|
|||
case TGSI_OPCODE_TRUNC: /* should be TRUNC, not FLR */
|
||||
return emit_floor( emit, insn );
|
||||
|
||||
case TGSI_OPCODE_CEIL:
|
||||
return emit_ceil( emit, insn );
|
||||
|
||||
case TGSI_OPCODE_CMP:
|
||||
return emit_cmp( emit, insn );
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue