|
| | Func (JitModule &J, CodeBuilder &CB, const std::string &Name, Dispatcher &Dispatch) |
| |
| RetT | operator() (ArgT... Args) |
| |
| void | declArgs () |
| |
| auto | getArgs () |
| |
| template<std::size_t Idx> |
| auto & | getArg () |
| |
| auto | getCompiledFunc () const |
| |
| void | setCompiledFunc (RetT(*CompiledFuncIn)(ArgT...)) |
| |
| JitModule & | getJitModule () |
| |
| CodeBuilder & | getCodeBuilder () |
| | Get the underlying CodeBuilder for direct IR generation.
|
| |
| | FuncBase (JitModule &J, CodeBuilder &CB, const std::string &Name, IRType RetTy, const std::vector< IRType > &ArgTys) |
| |
| | ~FuncBase () |
| |
| IRFunction * | getFunction () |
| |
| IRValue * | getArg (size_t Idx) |
| |
| template<typename T > |
| Var< T > | declVar (const std::string &Name="var") |
| |
| template<typename T > |
| Var< T > | declVar (size_t NElem, AddressSpace AS=AddressSpace::DEFAULT, const std::string &Name="array_var") |
| |
| template<typename... Ts> |
| auto | declVars () |
| |
| template<typename... Ts, typename... NameTs> |
| auto | declVars (NameTs &&...Names) |
| |
| template<typename T > |
| Var< T > | defVar (const T &Val, const std::string &Name="var") |
| |
| template<typename T , typename U > |
| Var< T > | defVar (const Var< U > &Val, const std::string &Name="var") |
| |
| template<typename U > |
| Var< U > | defVar (const Var< U > &Val, const std::string &Name="var") |
| |
| template<typename T , typename NameT , typename = std::enable_if_t<std::is_convertible_v<NameT, std::string>>> |
| auto | defVar (std::pair< T, NameT > P) |
| |
| template<typename... ArgT> |
| auto | defVars (ArgT &&...Args) |
| |
| template<typename T > |
| Var< const T > | defRuntimeConst (const T &Val, const std::string &Name="run.const.var") |
| |
| template<typename T , typename NameT , typename = std::enable_if_t<std::is_convertible_v<NameT, std::string>>> |
| Var< const T > | defRuntimeConst (std::pair< T, NameT > P) |
| |
| template<typename... ArgT> |
| auto | defRuntimeConsts (ArgT &&...Args) |
| |
| void | beginFunction (const char *File=__builtin_FILE(), int Line=__builtin_LINE()) |
| |
| void | endFunction () |
| |
| template<typename BodyLambda > |
| void | function (BodyLambda &&Body, const char *File=__builtin_FILE(), int Line=__builtin_LINE()) |
| |
| void | beginIf (const Var< bool > &CondVar, const char *File=__builtin_FILE(), int Line=__builtin_LINE()) |
| |
| void | endIf () |
| |
| template<typename BodyLambda > |
| void | ifThen (const Var< bool > &CondVar, BodyLambda &&Body, const char *File=__builtin_FILE(), int Line=__builtin_LINE()) |
| |
| template<typename IterT , typename InitT , typename UpperT , typename IncT > |
| void | beginFor (Var< IterT > &IterVar, const Var< InitT > &InitVar, const Var< UpperT > &UpperBound, const Var< IncT > &IncVar, const char *File=__builtin_FILE(), int Line=__builtin_LINE(), LoopHints Hints={}) |
| |
| void | endFor () |
| |
| template<typename CondLambda > |
| void | beginWhile (CondLambda &&Cond, const char *File=__builtin_FILE(), int Line=__builtin_LINE()) |
| |
| void | endWhile () |
| |
| template<typename CondLambda , typename BodyLambda > |
| void | whileLoop (CondLambda &&Cond, BodyLambda &&Body, const char *File=__builtin_FILE(), int Line=__builtin_LINE()) |
| |
| template<typename Sig > |
| std::enable_if_t<!std::is_void_v< typename FnSig< Sig >::RetT >, Var< typename FnSig< Sig >::RetT > > | call (const std::string &Name) |
| |
| template<typename Sig > |
| std::enable_if_t< std::is_void_v< typename FnSig< Sig >::RetT >, void > | call (const std::string &Name) |
| |
| template<typename Sig , typename... ArgVars> |
| std::enable_if_t<!std::is_void_v< typename FnSig< Sig >::RetT >, Var< typename FnSig< Sig >::RetT > > | call (const std::string &Name, ArgVars &&...ArgsVars) |
| |
| template<typename Sig , typename... ArgVars> |
| std::enable_if_t< std::is_void_v< typename FnSig< Sig >::RetT >, void > | call (const std::string &Name, ArgVars &&...ArgsVars) |
| |
| template<typename BuiltinFuncT > |
| decltype(auto) | callBuiltin (BuiltinFuncT &&BuiltinFunc) |
| |
| template<typename T > |
| std::enable_if_t< is_arithmetic_unref_v< T >, Var< T > > | atomicAdd (const Var< T * > &Addr, const Var< T > &Val) |
| |
| template<typename T > |
| std::enable_if_t< is_arithmetic_unref_v< T >, Var< T > > | atomicSub (const Var< T * > &Addr, const Var< T > &Val) |
| |
| template<typename T > |
| std::enable_if_t< is_arithmetic_unref_v< T >, Var< T > > | atomicMax (const Var< T * > &Addr, const Var< T > &Val) |
| |
| template<typename T > |
| std::enable_if_t< is_arithmetic_unref_v< T >, Var< T > > | atomicMin (const Var< T * > &Addr, const Var< T > &Val) |
| |
| template<EmissionPolicy Policy = EmissionPolicy::Eager, typename IterT , typename InitT , typename UpperT , typename IncT , typename BodyLambda = EmptyLambda> |
| auto | forLoop (Var< IterT > &Iter, const Var< InitT > &Init, const Var< UpperT > &Upper, const Var< IncT > &Inc, BodyLambda &&Body={}) |
| |
| template<typename... LoopBuilders> |
| auto | buildLoopNest (LoopBuilders &&...Loops) |
| |
| template<typename T > |
| void | ret (const Var< T > &RetVal) |
| |
| void | ret () |
| |
| const std::string & | getName () const |
| |
| void | setName (const std::string &NewName) |
| |
| template<typename U , typename T > |
| auto | convert (const Var< T > &V) |
| |