slang_rs_foreach_lowering.h revision fb40ee2a90f37967bf4a40a18dec7f60e5c580d8
1fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni/* 2fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * Copyright 2015, The Android Open Source Project 3fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * 4fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * Licensed under the Apache License, Version 2.0 (the "License"); 5fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * you may not use this file except in compliance with the License. 6fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * You may obtain a copy of the License at 7fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * 8fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * http://www.apache.org/licenses/LICENSE-2.0 9fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * 10fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * Unless required by applicable law or agreed to in writing, software 11fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * distributed under the License is distributed on an "AS IS" BASIS, 12fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * See the License for the specific language governing permissions and 14fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni * limitations under the License. 15fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni */ 16fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 17fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni#ifndef _FRAMEWORKS_COMPILE_SLANG_RS_FOREACH_LOWERING_H 18fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni#define _FRAMEWORKS_COMPILE_SLANG_RS_FOREACH_LOWERING_H 19fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 20fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni#include "clang/AST/StmtVisitor.h" 21fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 22fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ninamespace clang { 23fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni class ASTContext; 24fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni class CallExpr; 25fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni class Expr; 26fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni class FunctionDecl; 27fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni} 28fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 29fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ninamespace slang { 30fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 31fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Niclass RSContext; 32fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 33fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Niclass RSForEachLowering : public clang::StmtVisitor<RSForEachLowering> { 34fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni public: 35fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni RSForEachLowering(RSContext* ctxt); 36fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 37fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni void VisitCallExpr(clang::CallExpr *CE); 38fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni void VisitStmt(clang::Stmt *S); 39fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 40fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni private: 41fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni RSContext* mCtxt; 42fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni clang::ASTContext& mASTCtxt; 43fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 44fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni const clang::FunctionDecl* matchFunctionDesignator(clang::Expr* expr); 45fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni const clang::FunctionDecl* matchKernelLaunchCall(clang::CallExpr* CE); 46fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni clang::FunctionDecl* CreateForEachInternalFunctionDecl(); 47fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni clang::Expr* CreateCalleeExprForInternalForEach(); 48fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni}; // RSForEachLowering 49fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 50fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni} // namespace slang 51fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni 52fb40ee2a90f37967bf4a40a18dec7f60e5c580d8Yang Ni#endif // _FRAMEWORKS_COMPILE_SLANG_RS_FOREACH_LOWERING_H 53