add basic logical operations

This commit is contained in:
mratsim 2018-02-16 11:33:11 +01:00
parent 994be7fa61
commit 32efae91ee
2 changed files with 27 additions and 0 deletions

View File

@ -3,8 +3,10 @@
import ./uint_type,
./uint_init,
./uint_bitwise_ops,
./uint_binary_ops
export uint_type,
uint_init,
uint_bitwise_ops,
uint_binary_ops

25
src/uint_bitwise_ops.nim Normal file
View File

@ -0,0 +1,25 @@
# Copyright (c) 2018 Status Research & Development GmbH
# Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
import uint_type
proc `not`*(x: MpUint): MpUint {.noInit, noSideEffect, inline.}=
## Bitwise complement of unsigned integer x
result.lo = not x.lo
result.hi = not x.hi
proc `or`*(x, y: MpUint): MpUint {.noInit, noSideEffect, inline.}=
## `Bitwise or` of numbers x and y
result.lo = x.lo or y.lo
result.hi = x.hi or y.hi
proc `and`*(x, y: MpUint): MpUint {.noInit, noSideEffect, inline.}=
## `Bitwise and` of numbers x and y
result.lo = x.lo and y.lo
result.hi = x.hi and y.hi
proc `xor`*(x, y: MpUint): MpUint {.noInit, noSideEffect, inline.}=
## `Bitwise xor` of numbers x and y
result.lo = x.lo xor y.lo
result.hi = x.hi xor y.hi