blob: e81039128cb4a8216a1c18eb827c33e88585747d [file] [log] [blame]
/* 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