mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
i965: fix 64-bit immediates in brw_inst(_set)_bits
If we tried to get/set something that was exactly 64 bits, we would try to do (1 << 64) - 1 to calculate the mask which doesn't give us all 1's like we want. v2 (Iago) - Replace ~0 by ~0ull - Removed unnecessary parenthesis v3 (Kristian) - Avoid the conditional Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
This commit is contained in:
parent
718b9f52dd
commit
b1a83b5d1b
1 changed files with 2 additions and 2 deletions
|
|
@ -694,7 +694,7 @@ brw_inst_bits(const brw_inst *inst, unsigned high, unsigned low)
|
||||||
high %= 64;
|
high %= 64;
|
||||||
low %= 64;
|
low %= 64;
|
||||||
|
|
||||||
const uint64_t mask = (1ull << (high - low + 1)) - 1;
|
const uint64_t mask = (~0ul >> (64 - (high - low + 1)));
|
||||||
|
|
||||||
return (inst->data[word] >> low) & mask;
|
return (inst->data[word] >> low) & mask;
|
||||||
}
|
}
|
||||||
|
|
@ -713,7 +713,7 @@ brw_inst_set_bits(brw_inst *inst, unsigned high, unsigned low, uint64_t value)
|
||||||
high %= 64;
|
high %= 64;
|
||||||
low %= 64;
|
low %= 64;
|
||||||
|
|
||||||
const uint64_t mask = ((1ull << (high - low + 1)) - 1) << low;
|
const uint64_t mask = (~0ul >> (64 - (high - low + 1))) << low;
|
||||||
|
|
||||||
/* Make sure the supplied value actually fits in the given bitfield. */
|
/* Make sure the supplied value actually fits in the given bitfield. */
|
||||||
assert((value & (mask >> low)) == value);
|
assert((value & (mask >> low)) == value);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue