@@ -16,25 +16,25 @@ template <size_t... Idx>
1616class TextureReadRewriterFactory : public CallExprRewriterFactoryBase {
1717 std::string Source;
1818 int TexType;
19+ std::string TargetName;
1920
2021 inline int getDim () const { return TexType & 0x0f ; }
2122
2223 template <class BaseT >
2324 std::shared_ptr<CallExprRewriter>
2425 createRewriter (const CallExpr *C, bool RetAssign, BaseT Base) const {
25- const static std::string MemberName = " read" ;
2626 using ReaderPrinter = decltype (makeMemberCallCreator<false >(
2727 std::declval<std::function<BaseT (const CallExpr *)>>(), false ,
28- MemberName , makeCallArgCreatorWithCall (Idx)...)(C));
28+ TargetName , makeCallArgCreatorWithCall (Idx)...)(C));
2929 if (RetAssign) {
3030 return std::make_shared<PrinterRewriter<
3131 BinaryOperatorPrinter<BO_Assign, DerefExpr, ReaderPrinter>>>(
3232 C, Source, DerefExpr (C->getArg (0 ), C),
33- ReaderPrinter (std::move (Base), false , MemberName ,
33+ ReaderPrinter (std::move (Base), false , TargetName ,
3434 std::make_pair (C, C->getArg (Idx + 1 ))...));
3535 }
3636 return std::make_shared<PrinterRewriter<ReaderPrinter>>(
37- C, Source, Base, false , MemberName ,
37+ C, Source, Base, false , TargetName ,
3838 std::make_pair (C, C->getArg (Idx))...);
3939 }
4040
@@ -43,8 +43,6 @@ class TextureReadRewriterFactory : public CallExprRewriterFactoryBase {
4343 createbindlessRewriterNormal (const CallExpr *C, bool RetAssign,
4444 const TemplateArgumentInfo &TAI,
4545 const std::string &VecTypeName) const {
46- const static std::string FuncName =
47- MapNames::getClNamespace () + " ext::oneapi::experimental::sample_image" ;
4846 using FuncNamePrinter =
4947 TemplatedNamePrinter<StringRef, std::vector<TemplateArgumentInfo>>;
5048 using ReaderPrinter =
@@ -55,11 +53,12 @@ class TextureReadRewriterFactory : public CallExprRewriterFactoryBase {
5553 BinaryOperatorPrinter<BO_Assign, DerefExpr, ReaderPrinter>>>(
5654 C, Source, DerefExpr (C->getArg (0 ), C),
5755 ReaderPrinter (
58- FuncNamePrinter (FuncName, {TAI}), std::make_pair (C, C->getArg (1 )),
56+ FuncNamePrinter (TargetName, {TAI}),
57+ std::make_pair (C, C->getArg (1 )),
5958 VecType (VecTypeName, std::make_pair (C, C->getArg (Idx + 1 ))...)));
6059 }
6160 return std::make_shared<PrinterRewriter<ReaderPrinter>>(
62- C, Source, FuncNamePrinter (FuncName , {TAI}),
61+ C, Source, FuncNamePrinter (TargetName , {TAI}),
6362 std::make_pair (C, C->getArg (0 )),
6463 VecType (VecTypeName, std::make_pair (C, C->getArg (Idx))...));
6564 }
@@ -69,8 +68,6 @@ class TextureReadRewriterFactory : public CallExprRewriterFactoryBase {
6968 createbindlessRewriterLod (const CallExpr *C, bool RetAssign,
7069 const TemplateArgumentInfo &TAI,
7170 const std::string &VecTypeName) const {
72- const static std::string FuncName =
73- MapNames::getClNamespace () + " ext::oneapi::experimental::sample_mipmap" ;
7471 using FuncNamePrinter =
7572 TemplatedNamePrinter<StringRef, std::vector<TemplateArgumentInfo>>;
7673 using ReaderPrinter =
@@ -82,12 +79,13 @@ class TextureReadRewriterFactory : public CallExprRewriterFactoryBase {
8279 BinaryOperatorPrinter<BO_Assign, DerefExpr, ReaderPrinter>>>(
8380 C, Source, DerefExpr (C->getArg (0 ), C),
8481 ReaderPrinter (
85- FuncNamePrinter (FuncName, {TAI}), std::make_pair (C, C->getArg (1 )),
82+ FuncNamePrinter (TargetName, {TAI}),
83+ std::make_pair (C, C->getArg (1 )),
8684 VecType (VecTypeName, std::make_pair (C, C->getArg (Idx + 1 ))...),
8785 std::make_pair (C, C->getArg (C->getNumArgs () - 1 ))));
8886 }
8987 return std::make_shared<PrinterRewriter<ReaderPrinter>>(
90- C, Source, FuncNamePrinter (FuncName , {TAI}),
88+ C, Source, FuncNamePrinter (TargetName , {TAI}),
9189 std::make_pair (C, C->getArg (0 )),
9290 VecType (VecTypeName, std::make_pair (C, C->getArg (Idx))...),
9391 std::make_pair (C, C->getArg (C->getNumArgs () - 1 )));
@@ -98,9 +96,6 @@ class TextureReadRewriterFactory : public CallExprRewriterFactoryBase {
9896 createbindlessRewriterLayered (const CallExpr *C, bool RetAssign,
9997 const TemplateArgumentInfo &TAI,
10098 const std::string &VecTypeName) const {
101- const static std::string FuncName =
102- MapNames::getClNamespace () +
103- " ext::oneapi::experimental::sample_image_array" ;
10499 using FuncNamePrinter =
105100 TemplatedNamePrinter<StringRef, std::vector<TemplateArgumentInfo>>;
106101 using ReaderPrinter =
@@ -112,17 +107,17 @@ class TextureReadRewriterFactory : public CallExprRewriterFactoryBase {
112107 BinaryOperatorPrinter<BO_Assign, DerefExpr, ReaderPrinter>>>(
113108 C, Source, DerefExpr (C->getArg (0 ), C),
114109 ReaderPrinter (
115- FuncNamePrinter (FuncName, {TAI}), std::make_pair (C, C->getArg (1 )),
110+ FuncNamePrinter (TargetName, {TAI}),
111+ std::make_pair (C, C->getArg (1 )),
116112 VecType (VecTypeName, std::make_pair (C, C->getArg (Idx + 1 ))...),
117113 std::make_pair (C, C->getArg (C->getNumArgs () - 1 ))));
118114 }
119115 return std::make_shared<PrinterRewriter<ReaderPrinter>>(
120- C, Source, FuncNamePrinter (FuncName , {TAI}),
116+ C, Source, FuncNamePrinter (TargetName , {TAI}),
121117 std::make_pair (C, C->getArg (0 )),
122118 VecType (VecTypeName, std::make_pair (C, C->getArg (Idx))...),
123119 std::make_pair (C, C->getArg (C->getNumArgs () - 1 )));
124120 }
125-
126121 std::shared_ptr<CallExprRewriter>
127122 createbindlessRewriter (const CallExpr *C, bool RetAssign,
128123 QualType TargetType) const {
@@ -160,8 +155,8 @@ class TextureReadRewriterFactory : public CallExprRewriterFactoryBase {
160155 }
161156
162157public:
163- TextureReadRewriterFactory (std::string Name, int Tex)
164- : Source(std::move(Name)), TexType(Tex) {}
158+ TextureReadRewriterFactory (std::string Name, int Tex, std::string TargetName )
159+ : Source(std::move(Name)), TexType(Tex), TargetName(TargetName) {}
165160 std::shared_ptr<CallExprRewriter>
166161 create (const CallExpr *Call) const override {
167162 const Expr *SourceExpr = Call->getArg (0 );
@@ -227,14 +222,15 @@ class TextureReadRewriterFactory : public CallExprRewriterFactoryBase {
227222// / original call expr.
228223template <size_t ... Idx>
229224inline std::shared_ptr<CallExprRewriterFactoryBase>
230- createTextureReaderRewriterFactory (const std::string &Source, int TextureType) {
231- return std::make_shared<TextureReadRewriterFactory<Idx...>>(Source,
232- TextureType);
225+ createTextureReaderRewriterFactory (const std::string &Source, int TextureType,
226+ const std::string &TargetName) {
227+ return std::make_shared<TextureReadRewriterFactory<Idx...>>(
228+ Source, TextureType, TargetName);
233229}
234230
235- #define TEX_FUNCTION_FACTORY_ENTRY (FuncName, TexType, ...) \
236- {FuncName, \
237- createTextureReaderRewriterFactory<__VA_ARGS__>( FuncName, TexType)},
231+ #define TEX_FUNCTION_FACTORY_ENTRY (FuncName, TexType, TargetName, ...) \
232+ {FuncName, createTextureReaderRewriterFactory<__VA_ARGS__>( \
233+ FuncName, TexType, TargetName )},
238234#define BIND_TEXTURE_FACTORY_ENTRY (FuncName, ...) \
239235 {FuncName, createBindTextureRewriterFactory<__VA_ARGS__>(FuncName)},
240236
@@ -244,16 +240,17 @@ createTextureReaderRewriterFactory(const std::string &Source, int TextureType) {
244240 REWRITER_FACTORY_ENTRY (FuncName, FuncCallExprRewriterFactory, RewriterName)
245241#define UNSUPPORTED_FACTORY_ENTRY (FuncName, MsgID ) \
246242 REWRITER_FACTORY_ENTRY (FuncName, \
247- UnsupportFunctionRewriterFactory<std::string>, MsgID, FuncName)
243+ UnsupportFunctionRewriterFactory<std::string>, MsgID, \
244+ FuncName)
248245
249246void CallExprRewriterFactoryBase::initRewriterMapTexture () {
250247 RewriterMap->merge (
251248 std::unordered_map<std::string,
252249 std::shared_ptr<CallExprRewriterFactoryBase>>({
253250#define ENTRY_RENAMED (SOURCEAPINAME, TARGETAPINAME ) \
254251 FUNC_NAME_FACTORY_ENTRY (SOURCEAPINAME, TARGETAPINAME)
255- #define ENTRY_TEXTURE (SOURCEAPINAME, TEXTYPE, ...) \
256- TEX_FUNCTION_FACTORY_ENTRY (SOURCEAPINAME, TEXTYPE, __VA_ARGS__)
252+ #define ENTRY_TEXTURE (SOURCEAPINAME, TEXTYPE, TARGETAPINAME, ...) \
253+ TEX_FUNCTION_FACTORY_ENTRY (SOURCEAPINAME, TEXTYPE, TARGETAPINAME, __VA_ARGS__)
257254#define ENTRY_UNSUPPORTED (SOURCEAPINAME, MSGID ) \
258255 UNSUPPORTED_FACTORY_ENTRY (SOURCEAPINAME, MSGID)
259256#define ENTRY_BIND (SOURCEAPINAME, ...) \
0 commit comments