- BlackBox:
    name: Clash.Class.Exp.expIndex#
    kind: Expression
    type: 'expIndex# :: KnownNat
      m => Index m -> SNat n -> Index (m^n)'
    template: ~DEVNULL[~ARG[0]]to_unsigned(to_integer(~ARG[1]) ** ~LIT[2], ~SIZE[~TYPO])
    warning: Exponentiation is only supported on relatively small constructs (< 32
      bits). Ideally, Clash should have constant folded your expression. See https://github.com/clash-lang/clash-compiler/issues/593.
- BlackBox:
    name: Clash.Class.Exp.expSigned#
    kind: Expression
    type: 'expSigned# :: KnownNat
      m => Signed m -> SNat n -> Signed (m*n)'
    template: ~DEVNULL[~ARG[0]]to_signed(to_integer(~ARG[1]) ** ~LIT[2], ~SIZE[~TYPO])
    warning: Exponentiation is only supported on relatively small constructs (< 32
      bits). Ideally, Clash should have constant folded your expression. See https://github.com/clash-lang/clash-compiler/issues/593.
- BlackBox:
    name: Clash.Class.Exp.expUnsigned#
    kind: Expression
    type: 'expUnsigned# ::
      KnownNat m => Unsigned m -> SNat n -> Unsigned (m*n)'
    template: ~DEVNULL[~ARG[0]]to_unsigned(to_integer(~ARG[1]) ** ~LIT[2], ~SIZE[~TYPO])
    warning: Exponentiation is only supported on relatively small constructs (< 32
      bits). Ideally, Clash should have constant folded your expression. See https://github.com/clash-lang/clash-compiler/issues/593.
