1//===----- CGOpenCLRuntime.h - Interface to OpenCL Runtimes -----*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This provides an abstract class for OpenCL code generation. Concrete 11// subclasses of this implement code generation for specific OpenCL 12// runtime libraries. 13// 14//===----------------------------------------------------------------------===// 15 16#ifndef CLANG_CODEGEN_OPENCLRUNTIME_H 17#define CLANG_CODEGEN_OPENCLRUNTIME_H 18 19#include "clang/AST/Type.h" 20#include "llvm/IR/Type.h" 21#include "llvm/IR/Value.h" 22 23namespace clang { 24 25class VarDecl; 26 27namespace CodeGen { 28 29class CodeGenFunction; 30class CodeGenModule; 31 32class CGOpenCLRuntime { 33protected: 34 CodeGenModule &CGM; 35 36public: 37 CGOpenCLRuntime(CodeGenModule &CGM) : CGM(CGM) {} 38 virtual ~CGOpenCLRuntime(); 39 40 /// Emit the IR required for a work-group-local variable declaration, and add 41 /// an entry to CGF's LocalDeclMap for D. The base class does this using 42 /// CodeGenFunction::EmitStaticVarDecl to emit an internal global for D. 43 virtual void EmitWorkGroupLocalVarDecl(CodeGenFunction &CGF, 44 const VarDecl &D); 45 46 virtual llvm::Type *convertOpenCLSpecificType(const Type *T); 47}; 48 49} 50} 51 52#endif 53