//===--- OpenCLOptions.h ----------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// \file /// Defines the clang::OpenCLOptions class. /// //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_BASIC_OPENCLOPTIONS_H #define LLVM_CLANG_BASIC_OPENCLOPTIONS_H #include "clang/Basic/LangOptions.h" #include "llvm/ADT/StringMap.h" namespace clang { class DiagnosticsEngine; class TargetInfo; namespace { // This enum maps OpenCL version(s) into value. These values are used as // a mask to indicate in which OpenCL version(s) extension is a core or // optional core feature. enum OpenCLVersionID : unsigned int { … }; static inline OpenCLVersionID encodeOpenCLVersion(unsigned OpenCLVersion) { … } // Check if OpenCL C version is contained in a given encoded OpenCL C version // mask. static inline bool isOpenCLVersionContainedInMask(const LangOptions &LO, unsigned Mask) { … } } // end anonymous namespace /// OpenCL supported extensions and optional core features class OpenCLOptions { … }; } // end namespace clang #endif