xref: /llvm-project/offload/tools/offload-tblgen/GenCommon.hpp (revision fd3907ccb583df99e9c19d2fe84e4e7c52d75de9)
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