#ifndef CLANG_CODEGEN_CUDARUNTIME_H
#define CLANG_CODEGEN_CUDARUNTIME_H
namespace clang {
class CUDAKernelCallExpr;
namespace CodeGen {
class CodeGenFunction;
class CodeGenModule;
class FunctionArgList;
class ReturnValueSlot;
class RValue;
class CGCUDARuntime {
protected:
CodeGenModule &CGM;
public:
CGCUDARuntime(CodeGenModule &CGM) : CGM(CGM) {}
virtual ~CGCUDARuntime();
virtual RValue EmitCUDAKernelCallExpr(CodeGenFunction &CGF,
const CUDAKernelCallExpr *E,
ReturnValueSlot ReturnValue);
virtual void EmitDeviceStubBody(CodeGenFunction &CGF,
FunctionArgList &Args) = 0;
};
CGCUDARuntime *CreateNVCUDARuntime(CodeGenModule &CGM);
}
}
#endif