[ { "BlackBox": { "name": "GHC.Num.Natural.naturalMul", "kind": "Expression", "type": "naturalMul :: Natural -> Natural -> Natural", "template": "~ARG[0] * ~ARG[1]", "warning": "GHC.Num.Natural.naturalMul: Naturals are dynamically sized in simulation, but fixed-length after synthesis. Use carefully." } }, { "BlackBox": { "name": "GHC.Num.Natural.naturalFromWord#", "workInfo" : "Never", "kind": "Declaration", "type": "naturalFromWord# :: Word# -> Natural", "template": "assign ~RESULT = $unsigned(~ARG[0]);", "warning": "GHC.Num.Natural.naturalFromWord#: Naturals are dynamically sized in simulation, but fixed-length after synthesis. Use carefully." } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalRem" , "kind" : "Expression" , "type" : "naturalRem :: Natural -> Natural -> Natural" , "template" : "~ARG[0] % ~ARG[1]" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalLogBase#" , "kind" : "Expression" , "type" : "naturalLogBase# :: Natural -> Natural -> Word#" , "imports" : ["~INCLUDENAME[0].inc"] , "includes" : [ { "name" : "naturalLogBase" , "extension" : "inc" , "template" : "// natural logBase function integer ~INCLUDENAME[0]; input [~SIZE[~TYP[0]]-1:0] base, value; begin for (~INCLUDENAME[0] = 0; value >= base; ~INCLUDENAME[0]=~INCLUDENAME[0]+1) value = value / base; end endfunction" } ] , "template" : "~INCLUDENAME[0](~ARG[0],~ARG[1])" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalEq#" , "kind" : "Expression" , "type" : "naturalEq :: Natural -> Natural -> Int#" , "template" : "(~ARG[0] == ~ARG[1]) ? ~SIZE[~TYPO]'d1 : ~SIZE[~TYPO]'d0" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalNe#" , "kind" : "Expression" , "type" : "naturalNe# :: Natural -> Natural -> Int#" , "template" : "(~ARG[0] != ~ARG[1]) ? ~SIZE[~TYPO]'d1 : ~SIZE[~TYPO]'d0" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalLe#" , "kind" : "Expression" , "type" : "naturalLe :: Natural -> Natural -> Int#" , "template" : "(~ARG[0] <= ~ARG[1]) ? ~SIZE[~TYPO]'d1 : ~SIZE[~TYPO]'d0" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalGt#" , "kind" : "Expression" , "type" : "naturalGt# :: Natural -> Natural -> Int#" , "template" : "(~ARG[0] > ~ARG[1] ? ~SIZE[~TYPO]'d1 : ~SIZE[~TYPO]'d0" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalLt#" , "kind" : "Expression" , "type" : "naturalLt# :: Natural -> Natural -> Int#" , "template" : "(~ARG[0] < ~ARG[1]) ? ~SIZE[~TYPO]'d1 : ~SIZE[~TYPO]'d0" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalGe#" , "kind" : "Expression" , "type" : "naturalGe# :: Natural -> Natural -> Int#" , "template" : "(~ARG[0] >= ~ARG[1]) ? ~SIZE[~TYPO]'d1 : ~SIZE[~TYPO]'d0" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalShiftL#" , "kind" : "Expression" , "type" : "naturalShiftL# :: Natural -> Word# -> Natural" , "template" : "~ARG[0] <<< ~ARG[1]" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.naturalShiftR#" , "kind" : "Expression" , "type" : "naturalShiftR# :: Natuarl -> Word# -> Natural" , "template" : "~ARG[0] >>> ~ARG[1]" } } , { "BlackBox" : { "name" : "GHC.Num.Natural.NaturalCompare" , "kind" : "Expression" , "type" : "naturalCompare :: Natural -> Natural -> Ordering" , "template" : "(~ARG[0] < ~ARG[1]) ? -~SIZE[~TYPO]'d0 : ((~ARG[0] == ~ARG[1]) ? ~SIZE[~TYPO]'d1 : ~SIZE[~TYPO]'d2)" } } ]