Mesa (master): intel/compiler: Don't copy prop source mods into PICK_HIGH_32BIT

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Apr 23 00:17:43 UTC 2020


Module: Mesa
Branch: master
Commit: 220f0e10d8c27684b1c91c5291bdf8a8012e2a1a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=220f0e10d8c27684b1c91c5291bdf8a8012e2a1a

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Apr 22 15:03:03 2020 -0700

intel/compiler: Don't copy prop source mods into PICK_HIGH_32BIT

VEC4_OPCODE_PICK_HIGH_32BIT performs 32-bit UD access on a 64-bit DF
value.  abs and negate make sense on DF, but break entirely when
trying to access pieces of the value as unsigned integer dwords.

Fixes an fsign Piglit test on Ivybridge:
tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-neg-abs

It had regressed when I removed nir_lower_to_source_modifiers, as that
caused us to start generating different code which provoked this bug.

Fixes: b7c47c4f7cf ("intel/compiler: Drop nir_lower_to_source_mods() and related handling.")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2817
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4691>

---

 src/intel/compiler/brw_vec4_copy_propagation.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/intel/compiler/brw_vec4_copy_propagation.cpp b/src/intel/compiler/brw_vec4_copy_propagation.cpp
index 597e75c8b89..8fb5d1c2451 100644
--- a/src/intel/compiler/brw_vec4_copy_propagation.cpp
+++ b/src/intel/compiler/brw_vec4_copy_propagation.cpp
@@ -381,7 +381,8 @@ try_copy_propagate(const struct gen_device_info *devinfo,
       return false;
 
    if (has_source_modifiers &&
-       inst->opcode == SHADER_OPCODE_GEN4_SCRATCH_WRITE)
+       (inst->opcode == SHADER_OPCODE_GEN4_SCRATCH_WRITE ||
+        inst->opcode == VEC4_OPCODE_PICK_HIGH_32BIT))
       return false;
 
    unsigned composed_swizzle = brw_compose_swizzle(inst->src[arg].swizzle,



More information about the mesa-commit mailing list