aboutsummaryrefslogtreecommitdiffstats
path: root/src/intel
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2020-04-22 15:03:03 -0700
committerKenneth Graunke <[email protected]>2020-04-22 17:03:18 -0700
commit220f0e10d8c27684b1c91c5291bdf8a8012e2a1a (patch)
tree5920d76098d4dedeae87aa34cf912983949398c8 /src/intel
parentbe33cf8ad04855d37a7f756ba46c1ee49461b908 (diff)
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 <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4691>
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/compiler/brw_vec4_copy_propagation.cpp3
1 files changed, 2 insertions, 1 deletions
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,