Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › compiler_rt/ › bitreverse.zig › bitreverseXi2
bitreverseXi2
bitreverse.bitreverseXi2
inline fn bitreverseXi2 (comptime T : type , a : T ) T
File
Code
inline fn bitreverseXi2 (comptime T : type , a : T ) T {
switch (@bitSizeOf (T )) {
32 => {
var t : T = a ;
t = ((t >> 1 ) & 0x55555555 ) | ((t & 0x55555555 ) << 1 );
t = ((t >> 2 ) & 0x33333333 ) | ((t & 0x33333333 ) << 2 );
t = ((t >> 4 ) & 0x0F0F0F0F ) | ((t & 0x0F0F0F0F ) << 4 );
t = ((t >> 8 ) & 0x00FF00FF ) | ((t & 0x00FF00FF ) << 8 );
t = (t >> 16 ) | (t << 16 );
return t ;
},
64 => {
var t : T = a ;
t = ((t >> 1 ) & 0x5555555555555555 ) | ((t & 0x5555555555555555 ) << 1 );
t = ((t >> 2 ) & 0x3333333333333333 ) | ((t & 0x3333333333333333 ) << 2 );
t = ((t >> 4 ) & 0x0F0F0F0F0F0F0F0F ) | ((t & 0x0F0F0F0F0F0F0F0F ) << 4 );
t = ((t >> 8 ) & 0x00FF00FF00FF00FF ) | ((t & 0x00FF00FF00FF00FF ) << 8 );
t = ((t >> 16 ) & 0x0000FFFF0000FFFF ) | ((t & 0x0000FFFF0000FFFF ) << 16 );
t = (t >> 32 ) | (t << 32 );
return t ;
},
128 => {
var t : T = a ;
t = ((t >> 1 ) & 0x55555555555555555555555555555555 ) | ((t & 0x55555555555555555555555555555555 ) << 1 );
t = ((t >> 2 ) & 0x33333333333333333333333333333333 ) | ((t & 0x33333333333333333333333333333333 ) << 2 );
t = ((t >> 4 ) & 0x0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F ) | ((t & 0x0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F ) << 4 );
t = ((t >> 8 ) & 0x00FF00FF00FF00FF00FF00FF00FF00FF ) | ((t & 0x00FF00FF00FF00FF00FF00FF00FF00FF ) << 8 );
t = ((t >> 16 ) & 0x0000FFFF0000FFFF0000FFFF0000FFFF ) | ((t & 0x0000FFFF0000FFFF0000FFFF0000FFFF ) << 16 );
t = ((t >> 32 ) & 0x00000000FFFFFFFF00000000FFFFFFFF ) | ((t & 0x00000000FFFFFFFF00000000FFFFFFFF ) << 32 );
t = (t >> 64 ) | (t << 64 );
return t ;
},
else => unreachable ,
}
}