From: Jose Maria Casanova Crespo <jmcasan...@igalia.com> 16-bit immediates are replicated in each word of a 32-bit value so we need to negate both. --- src/intel/compiler/brw_shader.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/intel/compiler/brw_shader.cpp b/src/intel/compiler/brw_shader.cpp index 9cdf9fcb23d..c7edc60b63d 100644 --- a/src/intel/compiler/brw_shader.cpp +++ b/src/intel/compiler/brw_shader.cpp @@ -581,7 +581,8 @@ brw_negate_immediate(enum brw_reg_type type, struct brw_reg *reg) return true; case BRW_REGISTER_TYPE_W: case BRW_REGISTER_TYPE_UW: - reg->d = -(int16_t)reg->ud; + case BRW_REGISTER_TYPE_HF: + reg->ud ^= 0x80008000; return true; case BRW_REGISTER_TYPE_F: reg->f = -reg->f; @@ -602,8 +603,6 @@ brw_negate_immediate(enum brw_reg_type type, struct brw_reg *reg) case BRW_REGISTER_TYPE_UV: case BRW_REGISTER_TYPE_V: assert(!"unimplemented: negate UV/V immediate"); - case BRW_REGISTER_TYPE_HF: - assert(!"unimplemented: negate HF immediate"); case BRW_REGISTER_TYPE_NF: unreachable("no NF immediates"); } -- 2.14.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev