mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 02:20:11 +01:00
i965: fix unsigned long overflows for i386
bit-shifts on 32 bit unsigned longs overflow in several places. The intention was for 64 bit integers to be used.
This commit is contained in:
parent
8776d3cb8e
commit
ac0589b213
4 changed files with 12 additions and 12 deletions
|
|
@ -47,7 +47,7 @@ union __gen_value {
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
__gen_mbo(uint32_t start, uint32_t end)
|
__gen_mbo(uint32_t start, uint32_t end)
|
||||||
{
|
{
|
||||||
return (~0ul >> (64 - (end - start + 1))) << start;
|
return (~0ull >> (64 - (end - start + 1))) << start;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
|
|
@ -56,7 +56,7 @@ __gen_field(uint64_t v, uint32_t start, uint32_t end)
|
||||||
__gen_validate_value(v);
|
__gen_validate_value(v);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
if (end - start + 1 < 64)
|
if (end - start + 1 < 64)
|
||||||
assert(v < 1ul << (end - start + 1));
|
assert(v < 1ull << (end - start + 1));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return v << start;
|
return v << start;
|
||||||
|
|
@ -97,7 +97,7 @@ __gen_offset(uint64_t v, uint32_t start, uint32_t end)
|
||||||
{
|
{
|
||||||
__gen_validate_value(v);
|
__gen_validate_value(v);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
uint64_t mask = (~0ul >> (64 - (end - start + 1))) << start;
|
uint64_t mask = (~0ull >> (64 - (end - start + 1))) << start;
|
||||||
|
|
||||||
assert((v & ~mask) == 0);
|
assert((v & ~mask) == 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ union __gen_value {
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
__gen_mbo(uint32_t start, uint32_t end)
|
__gen_mbo(uint32_t start, uint32_t end)
|
||||||
{
|
{
|
||||||
return (~0ul >> (64 - (end - start + 1))) << start;
|
return (~0ull >> (64 - (end - start + 1))) << start;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
|
|
@ -56,7 +56,7 @@ __gen_field(uint64_t v, uint32_t start, uint32_t end)
|
||||||
__gen_validate_value(v);
|
__gen_validate_value(v);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
if (end - start + 1 < 64)
|
if (end - start + 1 < 64)
|
||||||
assert(v < 1ul << (end - start + 1));
|
assert(v < 1ull << (end - start + 1));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return v << start;
|
return v << start;
|
||||||
|
|
@ -97,7 +97,7 @@ __gen_offset(uint64_t v, uint32_t start, uint32_t end)
|
||||||
{
|
{
|
||||||
__gen_validate_value(v);
|
__gen_validate_value(v);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
uint64_t mask = (~0ul >> (64 - (end - start + 1))) << start;
|
uint64_t mask = (~0ull >> (64 - (end - start + 1))) << start;
|
||||||
|
|
||||||
assert((v & ~mask) == 0);
|
assert((v & ~mask) == 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ union __gen_value {
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
__gen_mbo(uint32_t start, uint32_t end)
|
__gen_mbo(uint32_t start, uint32_t end)
|
||||||
{
|
{
|
||||||
return (~0ul >> (64 - (end - start + 1))) << start;
|
return (~0ull >> (64 - (end - start + 1))) << start;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
|
|
@ -56,7 +56,7 @@ __gen_field(uint64_t v, uint32_t start, uint32_t end)
|
||||||
__gen_validate_value(v);
|
__gen_validate_value(v);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
if (end - start + 1 < 64)
|
if (end - start + 1 < 64)
|
||||||
assert(v < 1ul << (end - start + 1));
|
assert(v < 1ull << (end - start + 1));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return v << start;
|
return v << start;
|
||||||
|
|
@ -97,7 +97,7 @@ __gen_offset(uint64_t v, uint32_t start, uint32_t end)
|
||||||
{
|
{
|
||||||
__gen_validate_value(v);
|
__gen_validate_value(v);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
uint64_t mask = (~0ul >> (64 - (end - start + 1))) << start;
|
uint64_t mask = (~0ull >> (64 - (end - start + 1))) << start;
|
||||||
|
|
||||||
assert((v & ~mask) == 0);
|
assert((v & ~mask) == 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ union __gen_value {
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
__gen_mbo(uint32_t start, uint32_t end)
|
__gen_mbo(uint32_t start, uint32_t end)
|
||||||
{
|
{
|
||||||
return (~0ul >> (64 - (end - start + 1))) << start;
|
return (~0ull >> (64 - (end - start + 1))) << start;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
|
|
@ -56,7 +56,7 @@ __gen_field(uint64_t v, uint32_t start, uint32_t end)
|
||||||
__gen_validate_value(v);
|
__gen_validate_value(v);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
if (end - start + 1 < 64)
|
if (end - start + 1 < 64)
|
||||||
assert(v < 1ul << (end - start + 1));
|
assert(v < 1ull << (end - start + 1));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return v << start;
|
return v << start;
|
||||||
|
|
@ -97,7 +97,7 @@ __gen_offset(uint64_t v, uint32_t start, uint32_t end)
|
||||||
{
|
{
|
||||||
__gen_validate_value(v);
|
__gen_validate_value(v);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
uint64_t mask = (~0ul >> (64 - (end - start + 1))) << start;
|
uint64_t mask = (~0ull >> (64 - (end - start + 1))) << start;
|
||||||
|
|
||||||
assert((v & ~mask) == 0);
|
assert((v & ~mask) == 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue