1*fd3907ccSCallum Fare //===- offload-tblgen/GenCommon.cpp - Common defs for Offload generators --===// 2*fd3907ccSCallum Fare // 3*fd3907ccSCallum Fare // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*fd3907ccSCallum Fare // See https://llvm.org/LICENSE.txt for license information. 5*fd3907ccSCallum Fare // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*fd3907ccSCallum Fare // 7*fd3907ccSCallum Fare //===----------------------------------------------------------------------===// 8*fd3907ccSCallum Fare 9*fd3907ccSCallum Fare #pragma once 10*fd3907ccSCallum Fare 11*fd3907ccSCallum Fare #include "RecordTypes.hpp" 12*fd3907ccSCallum Fare #include "llvm/Support/FormatVariadic.h" 13*fd3907ccSCallum Fare 14*fd3907ccSCallum Fare // Having inline bits of tabbed code is hard to read, provide some definitions 15*fd3907ccSCallum Fare // so we can keep things tidier 16*fd3907ccSCallum Fare #define TAB_1 " " 17*fd3907ccSCallum Fare #define TAB_2 " " 18*fd3907ccSCallum Fare #define TAB_3 " " 19*fd3907ccSCallum Fare #define TAB_4 " " 20*fd3907ccSCallum Fare #define TAB_5 " " 21*fd3907ccSCallum Fare 22*fd3907ccSCallum Fare constexpr auto GenericHeader = 23*fd3907ccSCallum Fare R"(//===- Auto-generated file, part of the LLVM/Offload project --------------===// 24*fd3907ccSCallum Fare // 25*fd3907ccSCallum Fare // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 26*fd3907ccSCallum Fare // See https://llvm.org/LICENSE.txt for license information. 27*fd3907ccSCallum Fare // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 28*fd3907ccSCallum Fare // 29*fd3907ccSCallum Fare //===----------------------------------------------------------------------===// 30*fd3907ccSCallum Fare )"; 31*fd3907ccSCallum Fare 32*fd3907ccSCallum Fare constexpr auto FileHeader = R"( 33*fd3907ccSCallum Fare // Auto-generated file, do not manually edit. 34*fd3907ccSCallum Fare 35*fd3907ccSCallum Fare #pragma once 36*fd3907ccSCallum Fare 37*fd3907ccSCallum Fare #include <stddef.h> 38*fd3907ccSCallum Fare #include <stdint.h> 39*fd3907ccSCallum Fare 40*fd3907ccSCallum Fare #if defined(__cplusplus) 41*fd3907ccSCallum Fare extern "C" { 42*fd3907ccSCallum Fare #endif 43*fd3907ccSCallum Fare 44*fd3907ccSCallum Fare )"; 45*fd3907ccSCallum Fare 46*fd3907ccSCallum Fare constexpr auto FileFooter = R"( 47*fd3907ccSCallum Fare #if defined(__cplusplus) 48*fd3907ccSCallum Fare } // extern "C" 49*fd3907ccSCallum Fare #endif 50*fd3907ccSCallum Fare 51*fd3907ccSCallum Fare )"; 52*fd3907ccSCallum Fare 53*fd3907ccSCallum Fare constexpr auto CommentsHeader = R"( 54*fd3907ccSCallum Fare /////////////////////////////////////////////////////////////////////////////// 55*fd3907ccSCallum Fare )"; 56*fd3907ccSCallum Fare 57*fd3907ccSCallum Fare constexpr auto CommentsBreak = "///\n"; 58*fd3907ccSCallum Fare 59*fd3907ccSCallum Fare constexpr auto PrefixLower = "ol"; 60*fd3907ccSCallum Fare constexpr auto PrefixUpper = "OL"; 61*fd3907ccSCallum Fare 62*fd3907ccSCallum Fare inline std::string 63*fd3907ccSCallum Fare MakeParamComment(const llvm::offload::tblgen::ParamRec &Param) { 64*fd3907ccSCallum Fare return llvm::formatv("// {0}{1}{2} {3}", (Param.isIn() ? "[in]" : ""), 65*fd3907ccSCallum Fare (Param.isOut() ? "[out]" : ""), 66*fd3907ccSCallum Fare (Param.isOpt() ? "[optional]" : ""), Param.getDesc()); 67*fd3907ccSCallum Fare } 68