intel/fs: Fix D to W conversion in opt_combine_constants
Found by GCC warning:
src/intel/compiler/brw_fs_combine_constants.cpp: In function ‘bool needs_negate(const fs_reg*, const imm*)’:
src/intel/compiler/brw_fs_combine_constants.cpp:306:34: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
return ((reg->d & 0xffffu) < 0) != (imm->w < 0);
~~~~~~~~~~~~~~~~~~~^~~
The result of the bit-and is a 32-bit value with the top bits all zero.
This will never be < 0. Instead of masking off the bits, just cast to
int16_t and let the compiler handle the actual conversion.
Fixes: e64be391dd
("intel/compiler: generalize the combine constants pass")
Cc: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
e4ec814c39
commit
21223acf7d
|
@ -303,7 +303,7 @@ needs_negate(const struct fs_reg *reg, const struct imm *imm)
|
|||
case BRW_REGISTER_TYPE_HF:
|
||||
return (reg->d & 0x8000u) != (imm->w & 0x8000u);
|
||||
case BRW_REGISTER_TYPE_W:
|
||||
return ((reg->d & 0xffffu) < 0) != (imm->w < 0);
|
||||
return ((int16_t)reg->d < 0) != (imm->w < 0);
|
||||
case BRW_REGISTER_TYPE_UQ:
|
||||
case BRW_REGISTER_TYPE_UD:
|
||||
case BRW_REGISTER_TYPE_UW:
|
||||
|
|
Loading…
Reference in New Issue