| /* Authors: Aaron Graham (aaron.graham@unb.ca, aarongraham9@gmail.com), |
| * Jean-Philippe Legault (jlegault@unb.ca, jeanphilippe.legault@gmail.com), |
| * Alexandrea Demmings (alexandrea.demmings@unb.ca, lxdemmings@gmail.com) and |
| * Dr. Kenneth B. Kent (ken@unb.ca) |
| * for the Reconfigurable Computing Research Lab at the |
| * Univerity of New Brunswick in Fredericton, New Brunswick, Canada |
| */ |
| |
| #ifndef RTL_INT_H |
| #define RTL_INT_H |
| |
| #include <string> |
| #include "internal_bits.hpp" |
| |
| /** |
| * Unary Operator |
| */ |
| |
| bool V_TRUE(VNumber& a); |
| bool V_FALSE(VNumber& a); |
| bool V_UNK(VNumber& a); |
| bool V_IS_X(VNumber& a); |
| bool V_IS_Z(VNumber& a); |
| bool V_IS_SIGNED(VNumber& a); |
| bool V_IS_UNSIGNED(VNumber& a); |
| |
| std::string V_STRING(VNumber& a); |
| |
| VNumber V_UNSIGNED(VNumber& a); |
| VNumber V_SIGNED(VNumber& a); |
| VNumber V_ADD(VNumber& a); |
| VNumber V_MINUS(VNumber& a); |
| |
| VNumber V_BITWISE_NOT(VNumber& a); |
| VNumber V_BITWISE_AND(VNumber& a); |
| VNumber V_BITWISE_OR(VNumber& a); |
| VNumber V_BITWISE_XOR(VNumber& a); |
| VNumber V_BITWISE_NAND(VNumber& a); |
| VNumber V_BITWISE_NOR(VNumber& a); |
| VNumber V_BITWISE_XNOR(VNumber& a); |
| VNumber V_LOGICAL_NOT(VNumber& a); |
| |
| /** |
| * Binary Operator |
| */ |
| VNumber V_REPLICATE(VNumber& a, VNumber& n_times); |
| VNumber V_CONCAT(std::vector<VNumber> concat_list); |
| |
| VNumber V_BITWISE_AND(VNumber& a,VNumber& b); |
| VNumber V_BITWISE_OR(VNumber& a,VNumber& b); |
| VNumber V_BITWISE_XOR(VNumber& a,VNumber& b); |
| VNumber V_BITWISE_NAND(VNumber& a,VNumber& b); |
| VNumber V_BITWISE_NOR(VNumber& a,VNumber& b); |
| VNumber V_BITWISE_XNOR(VNumber& a,VNumber& b); |
| |
| VNumber V_SIGNED_SHIFT_LEFT(VNumber& a, VNumber& b); |
| VNumber V_SIGNED_SHIFT_RIGHT(VNumber& a, VNumber& b); |
| VNumber V_SHIFT_LEFT(VNumber& a, VNumber& b); |
| VNumber V_SHIFT_RIGHT(VNumber& a, VNumber& b); |
| |
| VNumber V_LOGICAL_AND(VNumber& a,VNumber& b); |
| VNumber V_LOGICAL_OR(VNumber& a,VNumber& b); |
| |
| VNumber V_LT(VNumber& a,VNumber& b); |
| VNumber V_GT(VNumber& a,VNumber& b); |
| VNumber V_LE(VNumber& a,VNumber& b); |
| VNumber V_GE(VNumber& a,VNumber& b); |
| VNumber V_EQUAL(VNumber& a,VNumber& b); |
| VNumber V_NOT_EQUAL(VNumber& a,VNumber& b); |
| VNumber V_CASE_EQUAL(VNumber& a,VNumber& b); |
| VNumber V_CASE_NOT_EQUAL(VNumber& a,VNumber& b); |
| |
| VNumber V_ADD(VNumber& a,VNumber& b); |
| VNumber V_MINUS(VNumber& a,VNumber& b); |
| VNumber V_MULTIPLY(VNumber& a,VNumber& b); |
| VNumber V_POWER(VNumber& a,VNumber& b); |
| VNumber V_DIV(VNumber& a,VNumber& b); |
| VNumber V_MOD(VNumber& a,VNumber& b); |
| |
| /** |
| * Ternary Operator |
| */ |
| VNumber V_TERNARY(VNumber& a, VNumber& b, VNumber& c); |
| |
| #endif //RTL_INT_H |