Lines Matching defs:generator
64 /// Fortran intrinsic generic names to FIR generator functions.
65 /// All generator functions are member functions of the IntrinsicLibrary class
67 /// If no generator is given for an intrinsic name, a math runtime library
1779 GeneratorType generator, llvm::StringRef name, mlir::Type resultType,
1788 return outlineInWrapper(generator, name, resultType, scalarArgs);
1789 return invokeGenerator(generator, resultType, scalarArgs);
1795 ExtendedGenerator generator, llvm::StringRef name, mlir::Type resultType,
1804 return outlineInExtendedWrapper(generator, name, resultType, args);
1805 return std::invoke(generator, *this, resultType, args);
1811 SubroutineGenerator generator, llvm::StringRef name, mlir::Type resultType,
1818 return outlineInExtendedWrapper(generator, name, resultType, args);
1819 std::invoke(generator, *this, args);
1826 DualGenerator generator, llvm::StringRef name, mlir::Type resultType,
1835 return outlineInExtendedWrapper(generator, name, resultType, args);
1837 return std::invoke(generator, *this, std::optional<mlir::Type>{resultType},
1842 invokeHandler(IntrinsicLibrary::ElementalGenerator generator,
1848 return lib.genElementalCall(generator, handler.name, *resultType, args,
1853 invokeHandler(IntrinsicLibrary::ExtendedGenerator generator,
1860 return lib.genElementalCall(generator, handler.name, *resultType, args,
1863 return lib.outlineInExtendedWrapper(generator, handler.name, *resultType,
1865 return std::invoke(generator, lib, *resultType, args);
1869 invokeHandler(IntrinsicLibrary::SubroutineGenerator generator,
1875 return lib.genElementalCall(generator, handler.name, mlir::Type{}, args,
1878 return lib.outlineInExtendedWrapper(generator, handler.name, resultType,
1880 std::invoke(generator, lib, args);
1885 invokeHandler(IntrinsicLibrary::DualGenerator generator,
1891 return lib.genElementalCall(generator, handler.name, mlir::Type{}, args,
1894 return lib.outlineInExtendedWrapper(generator, handler.name, resultType,
1897 return std::invoke(generator, lib, resultType, args);
1906 [&](auto &generator) -> fir::ExtendedValue {
1907 return invokeHandler(generator, *handler, resultType, args,
1910 handler->generator),
1977 IntrinsicLibrary::invokeGenerator(ElementalGenerator generator,
1980 return std::invoke(generator, *this, resultType, args);
1984 IntrinsicLibrary::invokeGenerator(RuntimeCallGenerator generator,
1987 return generator(builder, loc, args);
1991 IntrinsicLibrary::invokeGenerator(ExtendedGenerator generator,
1997 auto extendedResult = std::invoke(generator, *this, resultType, extendedArgs);
2002 IntrinsicLibrary::invokeGenerator(SubroutineGenerator generator,
2007 std::invoke(generator, *this, extendedArgs);
2012 IntrinsicLibrary::invokeGenerator(DualGenerator generator,
2017 std::invoke(generator, *this, std::optional<mlir::Type>{}, extendedArgs);
2022 IntrinsicLibrary::invokeGenerator(DualGenerator generator,
2035 generator, *this, std::optional<mlir::Type>{resultType}, extendedArgs);
2100 mlir::func::FuncOp IntrinsicLibrary::getWrapper(GeneratorType generator,
2137 localLib.invokeGenerator(generator, localArguments);
2144 localLib.invokeGenerator(generator, resultType, localArguments);
2171 IntrinsicLibrary::outlineInWrapper(GeneratorType generator,
2190 mlir::func::FuncOp wrapper = getWrapper(generator, funcName, funcType);
2196 GeneratorType generator, llvm::StringRef name,
2206 mlir::func::FuncOp wrapper = getWrapper(generator, name, funcType);
2220 // Look for a dedicated math operation generator, which
2282 [&](auto generator) {
2283 return getWrapper(generator, name, signature, loadRefArguments);
2285 handler->generator);
3434 // information to the DotProduct generator.