[ { "BlackBox" :
    { "name"      : "GHC.Classes.eqInt"
    , "kind"      : "Expression"
    , "type"      : "eqInt :: Int -> Int -> Bool"
    , "template"  : "~ARG[0] = ~ARG[1]"
    }
  }
, { "BlackBox" :
    { "name"      : "GHC.Classes.neInt"
    , "kind"      : "Expression"
    , "type"      : "neInt :: Int -> Int -> Bool"
    , "template"  : "~ARG[0] /= ~ARG[1]"
    }
  }
, { "BlackBox" :
    { "name"      : "GHC.Classes.&&"
    , "kind"      : "Expression"
    , "type"      : "(&&) :: Bool -> Bool -> Bool"
    , "template"  : "~ARG[0] and ~ARG[1]"
    }
  }
, { "BlackBox" :
    { "name"      : "GHC.Classes.||"
    , "kind"      : "Expression"
    , "type"      : "(::) :: Bool -> Bool -> Bool"
    , "template"  : "~ARG[0] or ~ARG[1]"
    }
  }
, { "BlackBox" :
    { "name"      : "GHC.Classes.not"
    , "kind"      : "Expression"
    , "type"      : "not :: Bool -> Bool"
    , "template"  : "not ~ARG[0]"
    }
  }
, { "BlackBox" :
    { "name"      : "GHC.Classes.divInt#"
    , "kind"      : "Declaration"
    , "type"      : "divInt# :: Int# -> Int# -> Int#"
    , "template"  :
"-- divInt# begin
~GENSYM[divInt][0] : block
  signal ~GENSYM[resultPos][1] : boolean;
  signal ~GENSYM[dividerNeg][2] : boolean;
  signal ~GENSYM[dividend2][3] : signed(~SIZE[~TYPO] downto 0);
  signal ~GENSYM[quot_res][4] : signed(~SIZE[~TYPO] downto 0);
begin
  ~SYM[1] <= ~VAR[dividend][0](~VAR[dividend][0]'high) = ~VAR[divider][1](~VAR[divider][1]'high);
  ~SYM[2] <= ~VAR[divider][1](~VAR[divider][1]'high) = '1';
  ~SYM[3] <= resize(~VAR[dividend][0],~SIZE[~TYPO]+1)   when ~SYM[1] else
             (resize(~VAR[dividend][0],~SIZE[~TYPO]+1) - resize(~VAR[divider][1],~SIZE[~TYPO]+1) - 1)   when ~SYM[2] else
             (resize(~VAR[dividend][0],~SIZE[~TYPO]+1) - resize(~VAR[divider][1],~SIZE[~TYPO]+1) + 1);
  ~SYM[4] <= ~SYM[3] / ~VAR[divider][1];
  ~RESULT <= signed(~SYM[4](~SIZE[~TYPO]-1 downto 0));
end block;
-- divInt# end"
    }
  }
, { "BlackBox" :
    { "name"      : "GHC.Classes.modInt#"
    , "kind"      : "Expression"
    , "type"      : "modInt# :: Int# -> Int# -> Int#"
    , "template"  : "~ARG[0] mod ~ARG[1]"
    }
  }
]