inline fn round( noalias state: *Block, noalias input_block: *const InputBlock, noalias secret_block: *const InputBlock, ) void
state: *Block
input_block: *const InputBlock
secret_block: *const InputBlock
526 527 528 529 530 531 532 533 534 535
inline fn round( noalias state: *Block, noalias input_block: *const InputBlock, noalias secret_block: *const InputBlock, ) void { const data = input_block.load(); const mixed = data ^ secret_block.load(); state.* +%= (mixed & @as(Block, @splat(0xffffffff))) *% (mixed >> @splat(32)); state.* +%= @shuffle(u64, data, undefined, [_]i32{ 1, 0, 3, 2, 5, 4, 7, 6 }); }