Зачем нужны отдельные fGT/fADD, когда есть GT и ADD?
Точно так же и остальные.

Можно сделать, чтобы был просто блок ADD, а фактическая реализация выбиралась исходя из типов данных, поступающих на вход?