1#ifndef PROTEUS_FRONTEND_VAR_HPP
2#define PROTEUS_FRONTEND_VAR_HPP
4#include <llvm/IR/IRBuilder.h>
5#include <llvm/IR/Module.h>
15template <
typename T>
struct VarT {};
60 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
64 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
68 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
72 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
76 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
86 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
90 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
94 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
98 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
101 template <
typename T>
102 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
112 template <
typename T>
113 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
116 template <
typename T>
117 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
120 template <
typename T>
121 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
124 template <
typename T>
125 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
128 template <
typename T>
129 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
132 template <
typename T>
133 std::enable_if_t<std::is_arithmetic_v<T>,
Var &>
138 template <
typename T,
typename = std::enable_if<std::is_arithmetic_v<T>>>
Definition BuiltinsCUDA.cpp:4
Type * getCommonType(const DataLayout &DL, Type *T1, Type *T2)
Get the common type following C++ usual arithmetic conversions.
Definition Var.cpp:507
std::enable_if_t< std::is_arithmetic_v< T >, Var & > operator/(const T &ConstValue, const Var &V)
Definition Var.cpp:457
Var & powf(const Var &L, const Var &R)
Definition Var.cpp:528
Var & sqrtf(const Var &R)
Definition Var.cpp:551
VarKind
Definition Var.hpp:13
std::enable_if_t< std::is_arithmetic_v< T >, Var & > operator*(const T &ConstValue, const Var &V)
Definition Var.cpp:447
T getRuntimeConstantValue(void *Arg)
Definition CompilerInterfaceRuntimeConstantInfo.h:114
Var & min(const Var &L, const Var &R)
Definition Var.cpp:573
std::enable_if_t< std::is_arithmetic_v< T >, Var & > operator-(const T &ConstValue, const Var &V)
Definition Var.cpp:437
Value * convert(IRBuilderBase IRB, Value *V, Type *TargetType)
Definition Var.cpp:476
std::enable_if_t< std::is_arithmetic_v< T >, Var & > operator%(const T &ConstValue, const Var &V)
Definition Var.cpp:467
std::enable_if_t< std::is_arithmetic_v< T >, Var & > operator+(const T &ConstValue, const Var &V)
Definition Var.cpp:427
StringRef getName() const override
Definition Var.cpp:830
void storePointer(Value *Ptr) override
Definition Var.cpp:849
Value * getValue() const override
Definition Var.cpp:834
Type * getValueType() const override
Definition Var.cpp:832
VarKind kind() const override
End of comparison operators.
Definition Var.cpp:853
Var & index(size_t I) override
Definition Var.cpp:855
void storeValue(Value *Val) override
Definition Var.cpp:839
Value * getPointerValue() const override
Definition Var.cpp:845
Value * BasePointer
Definition Var.hpp:211
ArrayType * ArrayTy
Definition Var.hpp:212
void storeValue(Value *Val) override
Definition Var.cpp:779
Var & index(size_t I) override
Definition Var.cpp:797
Value * getValue() const override
Definition Var.cpp:773
AllocaInst * getAlloca() const override
Definition Var.cpp:795
StringRef getName() const override
Definition Var.cpp:756
Type * getValueType() const override
Definition Var.cpp:758
VarKind kind() const override
End of comparison operators.
Definition Var.cpp:793
Type * PointerElemTy
Definition Var.hpp:191
void storePointer(Value *Ptr) override
Definition Var.cpp:768
Value * getPointerValue() const override
Definition Var.cpp:760
Value * getPointerValue() const override
Definition Var.cpp:735
StringRef getName() const override
Definition Var.cpp:717
AllocaInst * Slot
Definition Var.hpp:174
Type * getValueType() const override
Definition Var.cpp:719
void storePointer(Value *Ptr) override
Definition Var.cpp:739
AllocaInst * getAlloca() const override
Definition Var.cpp:733
Var & index(size_t I) override
Definition Var.cpp:743
VarKind kind() const override
End of comparison operators.
Definition Var.cpp:731
Value * getValue() const override
Definition Var.cpp:721
void storeValue(Value *Val) override
Definition Var.cpp:726
Var & operator-(const Var &Other) const
Definition Var.cpp:85
VarKind Kind
Definition Var.hpp:21
Var & operator*=(Var &Other)
Definition Var.cpp:153
Var & operator/=(Var &Other)
Definition Var.cpp:173
virtual Var & index(const Var &I)=0
Var & operator%(const Var &Other) const
Definition Var.cpp:106
Var & operator!=(const Var &Other) const
Definition Var.cpp:344
Var & operator=(const Var &Other)
Definition Var.cpp:258
Var & operator<=(const Var &Other) const
Definition Var.cpp:320
Var & operator<(const Var &Other) const
Definition Var.cpp:308
virtual Value * getValue() const =0
Var & operator+=(Var &Other)
Definition Var.cpp:113
Var & operator+(const Var &Other) const
Definition Var.cpp:78
AllocaInst * Alloca
Definition Var.hpp:18
virtual Value * getPointerValue() const =0
Var & operator-=(Var &Other)
Definition Var.cpp:133
Var & operator[](size_t I)
Definition Var.cpp:420
FuncBase & Fn
Definition Var.hpp:19
Var & operator==(const Var &Other) const
Definition Var.cpp:332
virtual StringRef getName() const =0
Var & operator*(const Var &Other) const
Definition Var.cpp:92
virtual AllocaInst * getAlloca() const
Definition Var.cpp:76
Var & operator>(const Var &Other) const
Define comparison operators.
Definition Var.cpp:284
Var & operator%=(Var &Other)
Definition Var.cpp:193
virtual Type * getValueType() const =0
Var & operator/(const Var &Other) const
Definition Var.cpp:99
Var & operator>=(const Var &Other) const
Definition Var.cpp:296
virtual VarKind kind() const
End of comparison operators.
Definition Var.cpp:418
virtual Var & index(size_t I)=0
virtual void storePointer(Value *Ptr)=0
virtual void storeValue(Value *Val)=0