Commit a15eb196 authored by Brian Paul's avatar Brian Paul

svga: minor code movement in svga_tgsi_insn.c

Reviewed-by: default avatarJosé Fonseca <jfonseca@vmware.com>
parent f12954e1
......@@ -728,45 +728,6 @@ alias_src_dst(struct src_register src,
}
/**
* Translate/emit a LRP (linear interpolation) instruction.
*/
static boolean
submit_lrp(struct svga_shader_emitter *emit,
SVGA3dShaderDestToken dst,
struct src_register src0,
struct src_register src1,
struct src_register src2)
{
SVGA3dShaderDestToken tmp;
boolean need_dst_tmp = FALSE;
/* The dst reg must be a temporary, and not be the same as src0 or src2 */
if (SVGA3dShaderGetRegType(dst.value) != SVGA3DREG_TEMP ||
alias_src_dst(src0, dst) ||
alias_src_dst(src2, dst))
need_dst_tmp = TRUE;
if (need_dst_tmp) {
tmp = get_temp( emit );
tmp.mask = dst.mask;
}
else {
tmp = dst;
}
if (!submit_op3(emit, inst_token( SVGA3DOP_LRP ), tmp, src0, src1, src2))
return FALSE;
if (need_dst_tmp) {
if (!submit_op1(emit, inst_token( SVGA3DOP_MOV ), dst, src( tmp )))
return FALSE;
}
return TRUE;
}
/**
* Helper for emitting SVGA immediate values using the SVGA3DOP_DEF[I]
* instructions.
......@@ -1092,20 +1053,20 @@ emit_if(struct svga_shader_emitter *emit,
static boolean
emit_endif(struct svga_shader_emitter *emit,
const struct tgsi_full_instruction *insn)
emit_else(struct svga_shader_emitter *emit,
const struct tgsi_full_instruction *insn)
{
emit->dynamic_branching_level--;
return emit_instruction(emit, inst_token(SVGA3DOP_ENDIF));
return emit_instruction(emit, inst_token(SVGA3DOP_ELSE));
}
static boolean
emit_else(struct svga_shader_emitter *emit,
const struct tgsi_full_instruction *insn)
emit_endif(struct svga_shader_emitter *emit,
const struct tgsi_full_instruction *insn)
{
return emit_instruction(emit, inst_token(SVGA3DOP_ELSE));
emit->dynamic_branching_level--;
return emit_instruction(emit, inst_token(SVGA3DOP_ENDIF));
}
......@@ -2334,6 +2295,45 @@ emit_xpd(struct svga_shader_emitter *emit,
}
/**
* Emit a LRP (linear interpolation) instruction.
*/
static boolean
submit_lrp(struct svga_shader_emitter *emit,
SVGA3dShaderDestToken dst,
struct src_register src0,
struct src_register src1,
struct src_register src2)
{
SVGA3dShaderDestToken tmp;
boolean need_dst_tmp = FALSE;
/* The dst reg must be a temporary, and not be the same as src0 or src2 */
if (SVGA3dShaderGetRegType(dst.value) != SVGA3DREG_TEMP ||
alias_src_dst(src0, dst) ||
alias_src_dst(src2, dst))
need_dst_tmp = TRUE;
if (need_dst_tmp) {
tmp = get_temp( emit );
tmp.mask = dst.mask;
}
else {
tmp = dst;
}
if (!submit_op3(emit, inst_token( SVGA3DOP_LRP ), tmp, src0, src1, src2))
return FALSE;
if (need_dst_tmp) {
if (!submit_op1(emit, inst_token( SVGA3DOP_MOV ), dst, src( tmp )))
return FALSE;
}
return TRUE;
}
/**
* Translate/emit LRP (Linear Interpolation) instruction.
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment