packages feed

clash-lib-1.10.3: prims/commonverilog/GHC_Num_Integer.primitives.yaml

- BlackBox:
    name: ["GHC.Num.Integer.integerToNatural", "GHC.Internal.Bignum.Integer.integerToNatural"]
    kind: Expression
    type: 'integerToNatural
      :: Integer -> Natural'
    template: $unsigned(~VAR[n][0][(~SIZE[~TYPO]-1):0])
    warning: 'GHC.Num.Integer.integerToNatural: Naturals are dynamically sized in
      simulation, but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: ["GHC.Num.Integer.integerToNaturalThrow", "GHC.Internal.Bignum.Integer.integerToNaturalThrow"]
    kind: Expression
    type: 'integerToNaturalThrow
      :: Integer -> Natural'
    template: '(~ARG[0] < ~SIZE[~TYP[0]]''d0 ? ~ERRORO: $unsigned(~VAR[n][0][(~SIZE[~TYPO]-1):0]))'
    warning: 'GHC.Num.Integer.integerToNaturalThrow: Naturals are dynamically sized
      in simulation, but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: ["GHC.Num.Integer.integerToNaturalClamp", "GHC.Internal.Bignum.Integer.integerToNaturalClamp"]
    kind: Expression
    type: 'integerToNatural
      :: Integer -> Natural'
    template: '(~ARG[0] < ~SIZE[~TYP[0]]''d0 ? ~SIZE[~TYPO]''d0 : $unsigned(~VAR[n][0][(~SIZE[~TYPO]-1):0]))'
    warning: 'GHC.Num.Integer.integerToNaturalClamp: Naturals are dynamically sized
      in simulation, but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: ["GHC.Num.Integer.integerToInt#", "GHC.Internal.Bignum.Integer.integerToInt#"]
    kind: Declaration
    type: 'integerToInt ::
      Integer -> Int#'
    template: assign ~RESULT = $signed(~ARG[0]);
    warning: 'GHC.Num.Integer.integerToInt#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: ["GHC.Num.Integer.integerMul", "GHC.Internal.Bignum.Integer.integerMul"]
    kind: Expression
    type: 'integerMul :: Integer
      -> Integer -> Integer'
    template: ~ARG[0] * ~ARG[1]
    warning: 'GHC.Num.Integer.integerMul: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerNegate", "GHC.Internal.Bignum.Integer.integerNegate"]
    kind: Expression
    type: 'integerNegate ::
      Integer -> Integer'
    template: -~ARG[0]
    warning: 'GHC.Num.Integer.integerNegate: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerAbs", "GHC.Internal.Bignum.Integer.integerAbs"]
    kind: Expression
    type: 'integerAbs :: Integer
      -> Integer'
    template: '(~ARG[0] < ~SIZE[~TYPO]''sd0) ? -~ARG[0] : ~ARG[0]'
    warning: 'GHC.Num.Integer.integerAbs: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerRem", "GHC.Internal.Bignum.Integer.integerRem"]
    kind: Expression
    type: 'integerRem :: Integer
      -> Integer -> Integer'
    template: ~ARG[0] % ~ARG[1]
    warning: 'GHC.Num.Integer.integerRem: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerEq", "GHC.Internal.Bignum.Integer.integerEq"]
    kind: Expression
    type: 'integerEq :: Integer
      -> Integer -> Bool'
    template: ~ARG[0] == ~ARG[1]
    warning: 'GHC.Num.Integer.integerEq: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerNe", "GHC.Internal.Bignum.Integer.integerNe"]
    kind: Expression
    type: 'integerNe :: Integer
      -> Integer -> Bool'
    template: ~ARG[0] != ~ARG[1]
    warning: 'GHC.Num.Integer.integerNe: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerEq#", "GHC.Internal.Bignum.Integer.integerEq#"]
    kind: Expression
    type: 'integerEq :: Integer
      -> Integer -> Int#'
    template: '(~ARG[0] == ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Num.Integer.integerEq#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerNe#", "GHC.Internal.Bignum.Integer.integerNe#"]
    kind: Expression
    type: 'integerNe# :: Integer
      -> Integer -> Int#'
    template: '(~ARG[0] != ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Num.Integer.integerNe#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerLe#", "GHC.Internal.Bignum.Integer.integerLe#"]
    kind: Expression
    type: 'integerLe :: Integer
      -> Integer -> Int#'
    template: '(~ARG[0] <= ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Num.Integer.integerLe#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerGt#", "GHC.Internal.Bignum.Integer.integerGt#"]
    kind: Expression
    type: 'integerGt# :: Integer
      -> Integer -> Int#'
    template: '(~ARG[0] > ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Num.Integer.integerGt#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerLt#", "GHC.Internal.Bignum.Integer.integerLt#"]
    kind: Expression
    type: 'integerLt# :: Integer
      -> Integer -> Int#'
    template: '(~ARG[0] < ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Num.Integer.integerLt#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerGe#", "GHC.Internal.Bignum.Integer.integerGe#"]
    kind: Expression
    type: 'integerGe# :: Integer
      -> Integer -> Int#'
    template: '(~ARG[0] >= ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Num.Integer.integerGe#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerShiftR#", "GHC.Internal.Bignum.Integer.integerShiftR#"]
    kind: Expression
    type: 'integerShiftR ::
      Integer -> Word# -> Integer'
    template: ~ARG[0] >>> ~ARG[1]
    warning: 'GHC.Num.Integer.integerShiftR#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerShiftL#", "GHC.Internal.Bignum.Integer.integerShiftL#"]
    kind: Expression
    type: 'integerShiftL ::
      Integer -> Word# -> Integer'
    template: ~ARG[0] <<< ~ARG[1]
    warning: 'GHC.Num.Integer.integerShiftL#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerTestBit#", "GHC.Internal.Bignum.Integer.integerTestBit#"]
    kind: Expression
    type: 'integerTestBit
      :: Integer -> Word# -> Int#'
    template: "((~VAR[input][0][~ARG[1]] == 1'b1) ? ~SIZE[~TYPO]'sd1 : ~SIZE[~TYPO]'sd0)"
    warning: 'GHC.Num.Integer.integerTestBit#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerFromWord#", "GHC.Internal.Bignum.Integer.integerFromWord#"]
    kind: Declaration
    type: 'integerFromWord#
      :: Word# -> Integer'
    template: assign ~RESULT = $signed(~ARG[0]);
    warning: 'GHC.Num.Integer.integerFromWord#: Integers are dynamically sized in
      simulation, but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: ["GHC.Num.Integer.integerToWord#", "GHC.Internal.Bignum.Integer.integerToWord#"]
    kind: Declaration
    type: 'integerToWord#
      :: Integer -> Word#'
    template: assign ~RESULT = $unsigned(~ARG[0]);
    warning: 'GHC.Num.Integer.integerToWord#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: ["GHC.Num.Integer.integerToInt64#", "GHC.Internal.Bignum.Integer.integerToInt64#"]
    kind: Expression
    type: 'integerToInt64#:: Integer -> Int64#'
    template: ~ARG[0]
    warning: 'GHC.Num.Integer.integerToInt64#: Integers are dynamically sized in
      simulation, but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: ["GHC.Num.Integer.integerToWord64#", "GHC.Internal.Bignum.Integer.integerToWord64#"]
    comment: only used by 32 bit GHC
    kind: Declaration
    type: 'integerToWord64#
      :: Integer -> Word64#'
    template: assign ~RESULT = $unsigned(~ARG[0]);
    warning: 'GHC.Num.Integer.integerToWord64#: Integers are dynamically sized in
      simulation, but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: ["GHC.Num.Integer.integerFromWord64#", "GHC.Internal.Bignum.Integer.integerFromWord64#"]
    kind: Declaration
    type: 'integerFromWord64# :: Word64# -> Integer'
    template: assign ~RESULT = $signed(~ARG[0]);
    warning: 'GHC.Num.Integer.integerFromWord64#: Integers are dynamically sized in
      simulation, but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: ["GHC.Num.Integer.integerBit#", "GHC.Internal.Bignum.Integer.integerBit#"]
    kind: Expression
    type: 'integerBit# ::
      Word# -> Integer'
    template: 1 << ~ARG[0]
    warning: 'GHC.Num.Integer.integerBit#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerComplement", "GHC.Internal.Bignum.Integer.integerComplement"]
    kind: Expression
    type: 'integerComplement
      :: Integer -> Integer'
    template: ~ ~ARG[0]
    warning: 'GHC.Num.Integer.integerComplement: Integers are dynamically sized in
      simulation, but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerXor", "GHC.Internal.Bignum.Integer.integerXor"]
    kind: Expression
    type: 'integerXor :: Integer
      -> Integer -> Integer'
    template: ~ARG[0] ^ ~ARG[1]
    warning: 'GHC.Num.Integer.integerXor: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerOr", "GHC.Internal.Bignum.Integer.integerOr"]
    kind: Expression
    type: 'integerOr :: Integer
      -> Integer -> Integer'
    template: ~ARG[0] | ~ARG[1]
    warning: 'GHC.Num.Integer.integerOr: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerAnd", "GHC.Internal.Bignum.Integer.integerAnd"]
    kind: Expression
    type: 'andInteger :: Integer
      -> Integer -> Integer'
    template: ~ARG[0] & ~ARG[1]
    warning: 'GHC.Num.Integer.integerAnd: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerSignum", "GHC.Internal.Bignum.Integer.integerSignum"]
    kind: Expression
    type: 'integerSignum ::
      Integer -> Integer'
    template: '(~ARG[0] < ~SIZE[~TYPO]''sd0) ? -~SIZE[~TYPO]''sd1 : ((~ARG[0] == ~SIZE[~TYPO]''sd0)
      ? ~SIZE[~TYPO]''sd0 : ~SIZE[~TYPO]''sd1)'
    warning: 'GHC.Num.Integer.integerSignum: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.$wintegerSignum", "GHC.Internal.Bignum.Integer.$wintegerSignum"]
    kind: Expression
    type: 'integerSignum ::
      Integer -> Int#'
    template: '(~ARG[0] < ~SIZE[~TYPO]''sd0) ? -~SIZE[~TYPO]''sd1 : ((~ARG[0] == ~SIZE[~TYPO]''sd0)
      ? ~SIZE[~TYPO]''sd0 : ~SIZE[~TYPO]''sd1)'
    warning: 'GHC.Num.Integer.$wintegerSignum: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerLogBase#", "GHC.Internal.Bignum.Integer.integerLogBase#"]
    imports:
    - ~INCLUDENAME[0].inc
    includes:
    - name: integerLogBase
      extension: inc
      template: |-
        // integer logBase
        function integer ~INCLUDENAME[0];
        input integer base, value;
        begin
          for (~INCLUDENAME[0] = 0; value >= base; ~INCLUDENAME[0]=~INCLUDENAME[0]+1)
            value = value / base;
        end
        endfunction
    kind: Expression
    type: 'integerLogBase#
      :: Integer -> Integer -> Word#'
    template: ~INCLUDENAME[0](~ARG[0],~ARG[1])
    warning: 'GHC.Num.Integer.integerLogBase#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerCompare", "GHC.Internal.Bignum.Integer.integerCompare"]
    kind: Expression
    type: 'integerCompare
      :: Integer -> Integer -> Ordering'
    template: '(~ARG[0] < ~ARG[1]) ? -~SIZE[~TYPO]''d0 : ((~ARG[0] == ~ARG[1]) ? ~SIZE[~TYPO]''d1
      : ~SIZE[~TYPO]''d2)'
    warning: 'GHC.Num.Integer.integerCompare: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.integerQuot", "GHC.Internal.Bignum.Integer.integerQuot"]
    kind: Expression
    type: 'integerQuot ::
      Integer -> Integer -> Integer'
    template: ~ARG[0] / ~ARG[1]
    warning: 'GHC.Num.Integer.integerQuot: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: ["GHC.Num.Integer.$wintegerFromInt64#", "GHC.Internal.Bignum.Integer.$wintegerFromInt64#"]
    kind: Declaration
    type: '$wintegerFromInt64# :: Int64# -> Int#'
    template: |-
      // wintegerFromInt64 begin
      assign ~RESULT = ~ARG[0];
      // wintegerFromInt64 end
    workInfo: Never