i965/vec4: Return the emitted instruction in emit_lrp()
Needed in the NIR backend to set the "saturate" value of the instruction. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
committed by
Jason Ekstrand
parent
b64bd1fdc3
commit
314474872b
@@ -294,8 +294,8 @@ public:
|
||||
vec4_instruction *emit_minmax(enum brw_conditional_mod conditionalmod, dst_reg dst,
|
||||
src_reg src0, src_reg src1);
|
||||
|
||||
void emit_lrp(const dst_reg &dst,
|
||||
const src_reg &x, const src_reg &y, const src_reg &a);
|
||||
vec4_instruction *emit_lrp(const dst_reg &dst, const src_reg &x,
|
||||
const src_reg &y, const src_reg &a);
|
||||
|
||||
/**
|
||||
* Copy any live channel from \p src to the first channel of the
|
||||
|
||||
@@ -1285,7 +1285,7 @@ vec4_visitor::emit_minmax(enum brw_conditional_mod conditionalmod, dst_reg dst,
|
||||
return inst;
|
||||
}
|
||||
|
||||
void
|
||||
vec4_instruction *
|
||||
vec4_visitor::emit_lrp(const dst_reg &dst,
|
||||
const src_reg &x, const src_reg &y, const src_reg &a)
|
||||
{
|
||||
@@ -1293,8 +1293,8 @@ vec4_visitor::emit_lrp(const dst_reg &dst,
|
||||
/* Note that the instruction's argument order is reversed from GLSL
|
||||
* and the IR.
|
||||
*/
|
||||
emit(LRP(dst,
|
||||
fix_3src_operand(a), fix_3src_operand(y), fix_3src_operand(x)));
|
||||
return emit(LRP(dst, fix_3src_operand(a), fix_3src_operand(y),
|
||||
fix_3src_operand(x)));
|
||||
} else {
|
||||
/* Earlier generations don't support three source operations, so we
|
||||
* need to emit x*(1-a) + y*a.
|
||||
@@ -1309,7 +1309,7 @@ vec4_visitor::emit_lrp(const dst_reg &dst,
|
||||
emit(MUL(y_times_a, y, a));
|
||||
emit(ADD(one_minus_a, negate(a), src_reg(1.0f)));
|
||||
emit(MUL(x_times_one_minus_a, x, src_reg(one_minus_a)));
|
||||
emit(ADD(dst, src_reg(x_times_one_minus_a), src_reg(y_times_a)));
|
||||
return emit(ADD(dst, src_reg(x_times_one_minus_a), src_reg(y_times_a)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user