From 51c61fff8f46472820ac413ad22e9f3edf670396 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Fri, 24 Apr 2015 13:14:56 -0700 Subject: [PATCH] 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. --- src/mesa/drivers/dri/i965/brw_fs_combine_constants.cpp | 2 -- src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_combine_constants.cpp b/src/mesa/drivers/dri/i965/brw_fs_combine_constants.cpp index a5bacf4..aa62031 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_combine_constants.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_combine_constants.cpp @@ -66,8 +66,6 @@ must_promote_imm(const struct brw_device_info *devinfo, const fs_inst *inst) { switch (inst->opcode) { case SHADER_OPCODE_POW: - case SHADER_OPCODE_INT_QUOTIENT: - case SHADER_OPCODE_INT_REMAINDER: return devinfo->gen < 8; case BRW_OPCODE_MAD: case BRW_OPCODE_LRP: diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp index af54deb..9542d6a 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp @@ -499,9 +499,13 @@ fs_visitor::try_constant_propagate(fs_inst *inst, acp_entry *entry) progress = true; break; - case SHADER_OPCODE_POW: case SHADER_OPCODE_INT_QUOTIENT: 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 * let constant combining promote the constant on Gen < 8. */ -- 2.7.4