Path: blob/main/contrib/llvm-project/clang/lib/Interpreter/DeviceOffload.h
35233 views
//===----------- DeviceOffload.h - Device Offloading ------------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8// This file implements classes required for offloading to CUDA devices.9//10//===----------------------------------------------------------------------===//1112#ifndef LLVM_CLANG_LIB_INTERPRETER_DEVICE_OFFLOAD_H13#define LLVM_CLANG_LIB_INTERPRETER_DEVICE_OFFLOAD_H1415#include "IncrementalParser.h"16#include "llvm/Support/FileSystem.h"17#include "llvm/Support/VirtualFileSystem.h"1819namespace clang {2021class IncrementalCUDADeviceParser : public IncrementalParser {22public:23IncrementalCUDADeviceParser(24Interpreter &Interp, std::unique_ptr<CompilerInstance> Instance,25IncrementalParser &HostParser, llvm::LLVMContext &LLVMCtx,26llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> VFS,27llvm::Error &Err);2829llvm::Expected<PartialTranslationUnit &>30Parse(llvm::StringRef Input) override;3132// Generate PTX for the last PTU33llvm::Expected<llvm::StringRef> GeneratePTX();3435// Generate fatbinary contents in memory36llvm::Error GenerateFatbinary();3738~IncrementalCUDADeviceParser();3940protected:41IncrementalParser &HostParser;42int SMVersion;43llvm::SmallString<1024> PTXCode;44llvm::SmallVector<char, 1024> FatbinContent;45llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> VFS;46};4748} // namespace clang4950#endif // LLVM_CLANG_LIB_INTERPRETER_DEVICE_OFFLOAD_H515253