xref: /XiangShan/src/main/scala/utils/MathUtils.scala (revision 039cdc35f5f3b68b6295ec5ace90f22a77322e02)
1package utils
2
3object MathUtils {
4  def IntToOH(n: Int): BigInt = {
5    BigInt(1) << n
6  }
7
8  object BigIntGenMask {
9    // generate w/r mask
10    def apply(high: Int, low: Int): BigInt = {
11      require(high > low)
12      val maskLen = high - low + 1
13      ((BigInt(1) << maskLen) - 1) << low
14    }
15
16    def apply(pos: Int): BigInt = {
17      BigInt(1) << pos
18    }
19  }
20
21  object BigIntNot {
22    def apply(bigInt: BigInt): BigInt = {
23      var res = bigInt
24      val len = bigInt.bitLength
25      for (i <- 0 until len) {
26        res = res.flipBit(i)
27      }
28      res
29    }
30  }
31}
32