From: Brian Paul Date: Sat, 18 Jan 2014 13:08:49 +0000 (-0800) Subject: svga: minor code movement in svga_tgsi_insn.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a15eb1967671f9c2f58d22c5ef8f4b53806f9597;p=mesa.git svga: minor code movement in svga_tgsi_insn.c Reviewed-by: José Fonseca --- diff --git a/src/gallium/drivers/svga/svga_tgsi_insn.c b/src/gallium/drivers/svga/svga_tgsi_insn.c index 88c96c076f5..4d78e96375c 100644 --- a/src/gallium/drivers/svga/svga_tgsi_insn.c +++ b/src/gallium/drivers/svga/svga_tgsi_insn.c @@ -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. */