i965: Add support for the CMP opcode in the GLSL path.
This would be triggered by use of sqrt() along with control flow.
Fixes piglit-fs-sqrt-branch and a bug in Yo Frankie!.
(cherry picked from commit 48dca99feb)
This commit is contained in:
@@ -328,6 +328,12 @@ void emit_cinterp(struct brw_compile *p,
|
||||
const struct brw_reg *dst,
|
||||
GLuint mask,
|
||||
const struct brw_reg *arg0);
|
||||
void emit_cmp(struct brw_compile *p,
|
||||
const struct brw_reg *dst,
|
||||
GLuint mask,
|
||||
const struct brw_reg *arg0,
|
||||
const struct brw_reg *arg1,
|
||||
const struct brw_reg *arg2);
|
||||
void emit_ddxy(struct brw_compile *p,
|
||||
const struct brw_reg *dst,
|
||||
GLuint mask,
|
||||
|
||||
@@ -566,12 +566,12 @@ static void emit_sne( struct brw_compile *p,
|
||||
emit_sop(p, dst, mask, BRW_CONDITIONAL_NEQ, arg0, arg1);
|
||||
}
|
||||
|
||||
static void emit_cmp( struct brw_compile *p,
|
||||
const struct brw_reg *dst,
|
||||
GLuint mask,
|
||||
const struct brw_reg *arg0,
|
||||
const struct brw_reg *arg1,
|
||||
const struct brw_reg *arg2 )
|
||||
void emit_cmp(struct brw_compile *p,
|
||||
const struct brw_reg *dst,
|
||||
GLuint mask,
|
||||
const struct brw_reg *arg0,
|
||||
const struct brw_reg *arg1,
|
||||
const struct brw_reg *arg2)
|
||||
{
|
||||
GLuint i;
|
||||
|
||||
|
||||
@@ -1960,6 +1960,9 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)
|
||||
case OPCODE_LG2:
|
||||
emit_math1(c, BRW_MATH_FUNCTION_LOG, dst, dst_flags, args[0]);
|
||||
break;
|
||||
case OPCODE_CMP:
|
||||
emit_cmp(p, dst, dst_flags, args[0], args[1], args[2]);
|
||||
break;
|
||||
case OPCODE_MIN:
|
||||
unalias2(c, emit_min, dst, dst_flags, args[0], args[1]);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user