- BlackBox:
    name: GHC.Integer.Type.smallInteger
    kind: Declaration
    type: 'smallInteger ::
      Int# -> Integer'
    template: assign ~RESULT = $signed(~ARG[0]);
    warning: 'GHC.Integer.Type.smallInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: GHC.Integer.Type.integerToInt
    kind: Declaration
    type: 'integerToInt ::
      Integer -> Int#'
    template: assign ~RESULT = $signed(~ARG[0]);
    warning: 'GHC.Integer.Type.integerToInt: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: GHC.Integer.Type.timesInteger
    kind: Expression
    type: 'timesInteger ::
      Integer -> Integer -> Integer'
    template: ~ARG[0] * ~ARG[1]
    warning: 'GHC.Integer.Type.timesInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.negateInteger
    kind: Expression
    type: 'negateInteger ::
      Integer -> Integer'
    template: -~ARG[0]
    warning: 'GHC.Integer.Type.negateInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.absInteger
    kind: Expression
    type: 'absInteger :: Integer
      -> Integer'
    template: '(~ARG[0] < ~SIZE[~TYPO]''sd0) ? -~ARG[0] : ~ARG[0]'
    warning: 'GHC.Integer.Type.absInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.remInteger
    kind: Expression
    type: 'remInteger :: Integer
      -> Integer -> Integer'
    template: ~ARG[0] % ~ARG[1]
    warning: 'GHC.Integer.Type.remInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.eqInteger
    kind: Expression
    type: 'eqInteger :: Integer
      -> Integer -> Bool'
    template: ~ARG[0] == ~ARG[1]
    warning: 'GHC.Integer.Type.eqInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.neqInteger
    kind: Expression
    type: 'neqInteger :: Integer
      -> Integer -> Bool'
    template: ~ARG[0] != ~ARG[1]
    warning: 'GHC.Integer.Type.neqInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.eqInteger#
    kind: Expression
    type: 'eqInteger :: Integer
      -> Integer -> Bool'
    template: '(~ARG[0] == ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Integer.Type.eqInteger#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.neqInteger#
    kind: Expression
    type: 'neqInteger :: Integer
      -> Integer -> Bool'
    template: '(~ARG[0] != ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Integer.Type.neqInteger#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.leInteger#
    kind: Expression
    type: 'leInteger :: Integer
      -> Integer -> Bool'
    template: '(~ARG[0] <= ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Integer.Type.leInteger#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.gtInteger#
    kind: Expression
    type: 'gtInteger :: Integer
      -> Integer -> Bool'
    template: '(~ARG[0] > ~ARG[1] ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Integer.Type.gtInteger#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.ltInteger#
    kind: Expression
    type: 'ltInteger :: Integer
      -> Integer -> Bool'
    template: '(~ARG[0] < ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Integer.Type.ltInteger#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.geInteger#
    kind: Expression
    type: 'geInteger :: Integer
      -> Integer -> Bool'
    template: '(~ARG[0] >= ~ARG[1]) ? ~SIZE[~TYPO]''sd1 : ~SIZE[~TYPO]''sd0'
    warning: 'GHC.Integer.Type.geInteger#: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.shiftRInteger
    kind: Expression
    type: 'shiftRInteger ::
      Integer -> Int# -> Integer'
    template: ~ARG[0] >>> ~ARG[1]
    warning: 'GHC.Integer.Type.shiftRInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.shiftLInteger
    kind: Expression
    type: 'shiftLInteger ::
      Integer -> Int# -> Integer'
    template: ~ARG[0] <<< ~ARG[1]
    warning: 'GHC.Integer.Type.shiftLInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.testBitInteger
    kind: Expression
    type: 'testBitInteger
      :: Integer -> Int# -> Bool'
    template: ~VAR[input][0][~ARG[1]] == 1'b1
    warning: 'GHC.Integer.Type.testBitInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.wordToInteger
    kind: Declaration
    type: 'wordToInteger ::
      Word# -> Integer'
    template: assign ~RESULT = $signed(~ARG[0]);
    warning: 'GHC.Integer.Type.wordToInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: GHC.Integer.Type.integerToWord
    kind: Declaration
    type: 'integerToWord ::
      Integer -> Word#'
    template: assign ~RESULT = $unsigned(~ARG[0]);
    warning: 'GHC.Integer.Type.integerToWord: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: GHC.Integer.Type.integerToWord64
    comment: only used by 32 bit GHC
    kind: Declaration
    type: 'integerToWord ::
      Integer -> Word64#'
    template: assign ~RESULT = $unsigned(~ARG[0]);
    warning: 'GHC.Integer.Type.integerToWord64: Integers are dynamically sized in
      simulation, but fixed-length after synthesis. Use carefully.'
    workInfo: Never
- BlackBox:
    name: GHC.Integer.Type.bitInteger
    kind: Expression
    type: 'bitInteger :: Int
      -> Integer'
    template: 1 << ~ARG[0]
    warning: 'GHC.Integer.Type.bitInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.complementInteger
    kind: Expression
    type: 'complementInteger
      :: Integer -> Integer'
    template: ~ ~ARG[0]
    warning: 'GHC.Integer.Type.complementInteger: Integers are dynamically sized in
      simulation, but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.xorInteger
    kind: Expression
    type: 'xorInteger :: Integer
      -> Integer -> Integer'
    template: ~ARG[0] ^ ~ARG[1]
    warning: 'GHC.Integer.Type.xorInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.orInteger
    kind: Expression
    type: 'orInteger :: Integer
      -> Integer -> Integer'
    template: ~ARG[0] | ~ARG[1]
    warning: 'GHC.Integer.Type.orInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.andInteger
    kind: Expression
    type: 'andInteger :: Integer
      -> Integer -> Integer'
    template: ~ARG[0] & ~ARG[1]
    warning: 'GHC.Integer.Type.andInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.$wsignumInteger
    kind: Expression
    type: '$wsignumInteger
      :: Integer -> Integer'
    template: '(~ARG[0] < ~SIZE[~TYPO]''sd0) ? -~SIZE[~TYPO]''sd1 : ((~ARG[0] == ~SIZE[~TYPO]''sd0)
      ? ~SIZE[~TYPO]''sd0 : ~SIZE[~TYPO]''sd1)'
    warning: 'GHC.Integer.Type.$wsignumInteger: Integers are dynamically sized in
      simulation, but fixed-length after synthesis. Use carefully.'
- BlackBox:
    name: GHC.Integer.Type.quotInteger
    kind: Expression
    type: 'quotInteger ::
      Integer -> Integer -> Integer'
    template: ~ARG[0] / ~ARG[1]
    warning: 'GHC.Integer.Type.quotInteger: Integers are dynamically sized in simulation,
      but fixed-length after synthesis. Use carefully.'
