i965/fs: Don't constant propagate into integer math instructions.
Constant combining won't promote non-floats, so this isn't safe.
Fixes regressions since commit 0087cf23e
.
This commit is contained in:
@@ -66,8 +66,6 @@ must_promote_imm(const struct brw_device_info *devinfo, const fs_inst *inst)
|
|||||||
{
|
{
|
||||||
switch (inst->opcode) {
|
switch (inst->opcode) {
|
||||||
case SHADER_OPCODE_POW:
|
case SHADER_OPCODE_POW:
|
||||||
case SHADER_OPCODE_INT_QUOTIENT:
|
|
||||||
case SHADER_OPCODE_INT_REMAINDER:
|
|
||||||
return devinfo->gen < 8;
|
return devinfo->gen < 8;
|
||||||
case BRW_OPCODE_MAD:
|
case BRW_OPCODE_MAD:
|
||||||
case BRW_OPCODE_LRP:
|
case BRW_OPCODE_LRP:
|
||||||
|
@@ -499,9 +499,13 @@ fs_visitor::try_constant_propagate(fs_inst *inst, acp_entry *entry)
|
|||||||
progress = true;
|
progress = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SHADER_OPCODE_POW:
|
|
||||||
case SHADER_OPCODE_INT_QUOTIENT:
|
case SHADER_OPCODE_INT_QUOTIENT:
|
||||||
case SHADER_OPCODE_INT_REMAINDER:
|
case SHADER_OPCODE_INT_REMAINDER:
|
||||||
|
/* FINISHME: Promote non-float constants and remove this. */
|
||||||
|
if (devinfo->gen < 8)
|
||||||
|
break;
|
||||||
|
/* fallthrough */
|
||||||
|
case SHADER_OPCODE_POW:
|
||||||
/* Allow constant propagation into src1 regardless of generation, and
|
/* Allow constant propagation into src1 regardless of generation, and
|
||||||
* let constant combining promote the constant on Gen < 8.
|
* let constant combining promote the constant on Gen < 8.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user