diff --git a/src/util.zig b/src/util.zig index 1e9f143..2b74378 100644 --- a/src/util.zig +++ b/src/util.zig @@ -1,6 +1,10 @@ const std = @import("std"); -pub fn signExtend(comptime T: type, comptime bits: usize, value: anytype) T { +pub fn u32SignExtend(comptime bits: usize, value: u32) u32 { + return @bitCast(u32, signExtend(i32, bits, @bitCast(i32, value))); +} + +fn signExtend(comptime T: type, comptime bits: usize, value: anytype) T { const ValT = comptime @TypeOf(value); comptime std.debug.assert(isInteger(ValT)); comptime std.debug.assert(isSigned(ValT)); @@ -16,10 +20,6 @@ pub fn signExtend(comptime T: type, comptime bits: usize, value: anytype) T { return ((value & ((1 << bits) - 1)) << bit_diff) >> bit_diff; } -pub fn u32SignExtend(comptime bits: usize, value: u32) u32 { - return @bitCast(u32, signExtend(i32, bits, @bitCast(i32, value))); -} - fn isInteger(comptime T: type) bool { return @typeInfo(T) == .Int; }