stage2+stage1: remove type parameter from bit builtins
Closes #12529 Closes #12511 Closes #6835
This commit is contained in:
@@ -703,7 +703,7 @@ const PosixImpl = struct {
|
||||
const max_multiplier_bits = @bitSizeOf(usize);
|
||||
const fibonacci_multiplier = 0x9E3779B97F4A7C15 >> (64 - max_multiplier_bits);
|
||||
|
||||
const max_bucket_bits = @ctz(usize, buckets.len);
|
||||
const max_bucket_bits = @ctz(buckets.len);
|
||||
comptime assert(std.math.isPowerOfTwo(buckets.len));
|
||||
|
||||
const index = (address *% fibonacci_multiplier) >> (max_multiplier_bits - max_bucket_bits);
|
||||
@@ -721,7 +721,7 @@ const PosixImpl = struct {
|
||||
// then cut off the zero bits from the alignment to get the unique address.
|
||||
const addr = @ptrToInt(ptr);
|
||||
assert(addr & (alignment - 1) == 0);
|
||||
return addr >> @ctz(usize, alignment);
|
||||
return addr >> @ctz(alignment);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ const FutexImpl = struct {
|
||||
// - they both seem to mark the cache-line as modified regardless: https://stackoverflow.com/a/63350048
|
||||
// - `lock bts` is smaller instruction-wise which makes it better for inlining
|
||||
if (comptime builtin.target.cpu.arch.isX86()) {
|
||||
const locked_bit = @ctz(u32, @as(u32, locked));
|
||||
const locked_bit = @ctz(@as(u32, locked));
|
||||
return self.state.bitSet(locked_bit, .Acquire) == 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -168,8 +168,8 @@ pub const DefaultRwLock = struct {
|
||||
const IS_WRITING: usize = 1;
|
||||
const WRITER: usize = 1 << 1;
|
||||
const READER: usize = 1 << (1 + @bitSizeOf(Count));
|
||||
const WRITER_MASK: usize = std.math.maxInt(Count) << @ctz(usize, WRITER);
|
||||
const READER_MASK: usize = std.math.maxInt(Count) << @ctz(usize, READER);
|
||||
const WRITER_MASK: usize = std.math.maxInt(Count) << @ctz(WRITER);
|
||||
const READER_MASK: usize = std.math.maxInt(Count) << @ctz(READER);
|
||||
const Count = std.meta.Int(.unsigned, @divFloor(@bitSizeOf(usize) - 1, 2));
|
||||
|
||||
pub fn tryLock(rwl: *DefaultRwLock) bool {
|
||||
|
||||
Reference in New Issue
Block a user