i965: Fix brw_regs_equal() for NaN and positive/negative zero.

We'd like the comparisons to mean "the exact same bits".  Comparing
doubles won't do that for NaN values or positive vs. negative zero.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Kenneth Graunke 2016-05-16 17:28:19 -07:00
parent b19a0d506d
commit 1539009bf0
1 changed files with 2 additions and 1 deletions

View File

@ -260,6 +260,7 @@ struct brw_reg {
};
double df;
uint64_t u64;
float f;
int d;
unsigned ud;
@ -270,7 +271,7 @@ static inline bool
brw_regs_equal(const struct brw_reg *a, const struct brw_reg *b)
{
const bool df = a->type == BRW_REGISTER_TYPE_DF && a->file == IMM;
return a->bits == b->bits && (df ? a->df == b->df : a->ud == b->ud);
return a->bits == b->bits && (df ? a->u64 == b->u64 : a->ud == b->ud);
}
struct brw_indirect {