1#ifndef FREE_TENSOR_DATA_TYPE_H
2#define FREE_TENSOR_DATA_TYPE_H
28 "void",
"float16",
"float32",
"float64",
"int32",
29 "int64",
"bool",
"custom",
"never",
35template <
typename T, T... i>
56 ERROR(
FT_MSG <<
"Unrecognized base data type \"" << _str
57 <<
"\". Candidates are (case-insensitive): "
76 "",
">0",
">=0",
"<0",
"<=0",
"!=0",
"==0",
"{}",
82template <
typename T, T... i>
102 ERROR(
FT_MSG <<
"Unrecognized sign data type \"" << str
132 const auto &
base()
const {
return base_; }
133 const auto &
sign()
const {
return sign_; }
139 return os << dtype.
base() << dtype.
sign();
143 auto split = str.find_first_of(
"<>=!");
144 if (
split == std::string::npos) {
145 split = str.length();
228 std::hash<size_t> h_;
Definition: data_type.h:106
static constexpr auto Float32
Definition: data_type.h:126
const auto & sign() const
Definition: data_type.h:133
const auto & base() const
Definition: data_type.h:132
static constexpr auto Int32
Definition: data_type.h:128
DataType(BaseDataType base, SignDataType sign=SignDataType::Any)
Definition: data_type.h:112
DataType()
Definition: data_type.h:111
friend bool operator==(const DataType &, const DataType &)=default
static constexpr auto Int64
Definition: data_type.h:129
static constexpr auto Float16
Definition: data_type.h:125
static constexpr auto Custom
Definition: data_type.h:124
static constexpr auto Float64
Definition: data_type.h:127
static constexpr auto Bool
Definition: data_type.h:123
static constexpr auto Void
Definition: data_type.h:130
#define ERROR(msg)
Definition: except.h:141
#define FT_MSG
Definition: except.h:23
constexpr auto createAllSignDataTypes(std::integer_sequence< T, i... >)
Definition: data_type.h:83
constexpr auto createAllBaseDataTypes(std::integer_sequence< T, i... >)
Definition: data_type.h:36
Definition: allocator.h:9
bool isLT0(SignDataType dtype)
Definition: data_type.cc:82
bool isGT0(SignDataType dtype)
Definition: data_type.cc:60
SignDataType
Definition: data_type.h:61
auto && lhs
Definition: const_fold.cc:70
SignDataType parseSignDataType(const std::string &str)
Definition: data_type.h:96
constexpr auto allBaseDataTypes
Definition: data_type.h:42
bool isEQ0(SignDataType dtype)
Definition: data_type.cc:116
constexpr auto allSignDataTypes
Definition: data_type.h:89
std::string tolower(const std::string &s)
Definition: container_utils.h:142
BaseDataType downCast(BaseDataType lhs, BaseDataType rhs)
Definition: data_type.cc:176
bool isGE0(SignDataType dtype)
Definition: data_type.cc:70
bool isLE0(SignDataType dtype)
Definition: data_type.cc:92
BaseDataType parseBaseDataType(const std::string &_str)
Definition: data_type.h:49
constexpr std::array signDataTypeNames
Definition: data_type.h:75
bool isBool(BaseDataType dtype)
Definition: data_type.cc:50
bool isFloat(BaseDataType dtype)
Definition: data_type.cc:38
std::string join(Container &&c, const std::string &splitter)
Definition: container_utils.h:194
constexpr std::array baseDataTypeNames
Definition: data_type.h:27
auto auto && rhs
Definition: const_fold.cc:70
BaseDataType upCast(BaseDataType lhs, BaseDataType rhs)
Definition: data_type.cc:126
std::ostream & operator<<(std::ostream &os, const Dependence &dep)
Definition: deps.cc:1404
bool isNE0(SignDataType dtype)
Definition: data_type.cc:104
DataType parseDType(const std::string &str)
Definition: data_type.h:142
bool isInt(BaseDataType dtype)
Definition: data_type.cc:27
BaseDataType
Definition: data_type.h:13
bool isNumber(BaseDataType dtype)
Definition: data_type.h:165
size_t sizeOf(BaseDataType dtype)
Definition: data_type.cc:6
std::pair< Stmt, std::pair< ID, ID > > split(const Stmt &ast, const ID &id, int factor, int nparts, int shift=0)
Definition: split.cc:90