Proteus
Programmable JIT compilation and optimization for C/C++ using LLVM
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
Func.hpp File Reference
#include <initializer_list>
#include <memory>
#include <llvm/IR/IRBuilder.h>
#include <llvm/IR/Module.h>
#include "proteus/AddressSpace.hpp"
#include "proteus/Error.h"
#include "proteus/Frontend/Dispatcher.hpp"
#include "proteus/Frontend/TargetModel.hpp"
#include "proteus/Frontend/TypeMap.hpp"
#include "proteus/Frontend/Var.hpp"
#include "proteus/Frontend/VarStorage.hpp"
Include dependency graph for Func.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  proteus::ArgTypeList< ArgTs >
 
struct  proteus::FnSig< RetT_(ArgT...)>
 
struct  proteus::EmptyLambda
 
class  proteus::FuncBase
 
struct  proteus::FuncBase::Scope
 
class  proteus::Func< RetT, ArgT >
 
struct  proteus::IntrinsicOperandConverter< T >
 

Namespaces

namespace  proteus
 

Functions

template<typename T , typename U , typename IntOp , typename FPOp >
Var< std::common_type_t< T, U > > proteus::binOp (const Var< T > &L, const Var< U > &R, IntOp IOp, FPOp FOp)
 
template<typename T , typename U , typename IntOp , typename FPOp >
Var< T, std::enable_if_t< std::is_arithmetic_v< T > > > & proteus::compoundAssignConst (Var< T, std::enable_if_t< std::is_arithmetic_v< T > > > &LHS, const U &ConstValue, IntOp IOp, FPOp FOp)
 
template<typename T , typename U , typename IntOp , typename FPOp >
Var< boolproteus::cmpOp (const Var< T > &L, const Var< U > &R, IntOp IOp, FPOp FOp)
 
template<typename T , typename U >
std::enable_if_t< std::is_arithmetic_v< T > &&std::is_arithmetic_v< U >, Var< std::common_type_t< T, U > > > proteus::operator+ (const T &ConstValue, const Var< U > &V)
 
template<typename T , typename U >
std::enable_if_t< std::is_arithmetic_v< T > &&std::is_arithmetic_v< U >, Var< std::common_type_t< T, U > > > proteus::operator- (const T &ConstValue, const Var< U > &V)
 
template<typename T , typename U >
std::enable_if_t< std::is_arithmetic_v< T > &&std::is_arithmetic_v< U >, Var< std::common_type_t< T, U > > > proteus::operator* (const T &ConstValue, const Var< U > &V)
 
template<typename T , typename U >
std::enable_if_t< std::is_arithmetic_v< T > &&std::is_arithmetic_v< U >, Var< std::common_type_t< T, U > > > proteus::operator/ (const T &ConstValue, const Var< U > &V)
 
template<typename T , typename U >
std::enable_if_t< std::is_arithmetic_v< T > &&std::is_arithmetic_v< U >, Var< std::common_type_t< T, U > > > proteus::operator% (const T &ConstValue, const Var< U > &V)
 
template<typename T >
Var< floatproteus::powf (const Var< float > &L, const Var< T > &R)
 
template<typename T >
Var< floatproteus::sqrtf (const Var< T > &R)
 
template<typename T >
Var< floatproteus::expf (const Var< T > &R)
 
template<typename T >
Var< floatproteus::sinf (const Var< T > &R)
 
template<typename T >
Var< floatproteus::cosf (const Var< T > &R)
 
template<typename T >
Var< floatproteus::fabs (const Var< T > &R)
 
template<typename T >
Var< floatproteus::truncf (const Var< T > &R)
 
template<typename T >
Var< floatproteus::logf (const Var< T > &R)
 
template<typename T >
Var< floatproteus::absf (const Var< T > &R)
 
template<typename T >
std::enable_if_t< std::is_arithmetic_v< T >, Var< T > > proteus::min (const Var< T > &L, const Var< T > &R)
 
template<typename T >
std::enable_if_t< std::is_arithmetic_v< T >, Var< T > > proteus::max (const Var< T > &L, const Var< T > &R)