[
  {
    "BlackBox": {
      "name": "Clash.Class.Exp.expIndex#",
      "kind": "Declaration",
      "type": "expIndex# :: KnownNat m => Index m -> SNat n -> Index (m^n)",
      "template": "assign ~RESULT = ~DEVNULL[~ARG[0]]$signed(~ARG[1] ** ~LIT[2]);",
      "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": "Declaration",
      "type": "expSigned# :: KnownNat m => Signed m -> SNat n -> Signed (m*n)",
      "template": "assign ~RESULT = ~DEVNULL[~ARG[0]]$signed(~ARG[1] ** ~LIT[2]);",
      "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": "Declaration",
      "type": "expUnsigned# :: KnownNat m => Unsigned m -> SNat n -> Unsigned (m*n)",
      "template": "assign ~RESULT = ~DEVNULL[~ARG[0]]$unsigned(~ARG[1] ** ~LIT[2]);",
      "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."
    }
  }
]