|
1 | 1 | // RUN: llvm-tblgen -gen-directive-decl -I %p/../../include %s | FileCheck -match-full-lines %s
|
2 | 2 | // RUN: llvm-tblgen -gen-directive-impl -I %p/../../include %s | FileCheck -match-full-lines %s -check-prefix=IMPL
|
3 |
| -// RUN: llvm-tblgen -gen-directive-gen -I %p/../../include %s | FileCheck -match-full-lines %s -check-prefix=GEN |
4 | 3 |
|
5 | 4 | include "llvm/Frontend/Directive/DirectiveBase.td"
|
6 | 5 |
|
@@ -101,12 +100,143 @@ def TDL_DirA : Directive<"dira"> {
|
101 | 100 | // CHECK-NEXT: #endif // LLVM_Tdl_INC
|
102 | 101 |
|
103 | 102 |
|
104 |
| -// IMPL: #include "llvm/ADT/StringRef.h" |
105 |
| -// IMPL-NEXT: #include "llvm/ADT/StringSwitch.h" |
106 |
| -// IMPL-NEXT: #include "llvm/Support/ErrorHandling.h" |
| 103 | +// IMPL: #ifdef GEN_FLANG_DIRECTIVE_CLAUSE_SETS |
| 104 | +// IMPL-NEXT: #undef GEN_FLANG_DIRECTIVE_CLAUSE_SETS |
107 | 105 | // IMPL-EMPTY:
|
108 |
| -// IMPL-NEXT: using namespace llvm; |
109 |
| -// IMPL-NEXT: using namespace tdl; |
| 106 | +// IMPL-NEXT: namespace llvm { |
| 107 | +// IMPL-NEXT: namespace tdl { |
| 108 | +// IMPL-EMPTY: |
| 109 | +// IMPL-NEXT: // Sets for dira |
| 110 | +// IMPL-EMPTY: |
| 111 | +// IMPL-NEXT: static allowedClauses_TDLD_dira { |
| 112 | +// IMPL-NEXT: llvm::tdl::Clause::TDLC_clausea, |
| 113 | +// IMPL-NEXT: llvm::tdl::Clause::TDLC_clauseb, |
| 114 | +// IMPL-NEXT: }; |
| 115 | +// IMPL-EMPTY: |
| 116 | +// IMPL-NEXT: static allowedOnceClauses_TDLD_dira { |
| 117 | +// IMPL-NEXT: }; |
| 118 | +// IMPL-EMPTY: |
| 119 | +// IMPL-NEXT: static allowedExclusiveClauses_TDLD_dira { |
| 120 | +// IMPL-NEXT: }; |
| 121 | +// IMPL-EMPTY: |
| 122 | +// IMPL-NEXT: static requiredClauses_TDLD_dira { |
| 123 | +// IMPL-NEXT: }; |
| 124 | +// IMPL-NEXT: } // namespace tdl |
| 125 | +// IMPL-NEXT: } // namespace llvm |
| 126 | +// IMPL-EMPTY: |
| 127 | +// IMPL-NEXT: #endif // GEN_FLANG_DIRECTIVE_CLAUSE_SETS |
| 128 | +// IMPL-EMPTY: |
| 129 | +// IMPL-NEXT: #ifdef GEN_FLANG_DIRECTIVE_CLAUSE_MAP |
| 130 | +// IMPL-NEXT: #undef GEN_FLANG_DIRECTIVE_CLAUSE_MAP |
| 131 | +// IMPL-EMPTY: |
| 132 | +// IMPL-NEXT: { |
| 133 | +// IMPL-NEXT: {llvm::tdl::Directive::TDLD_dira, |
| 134 | +// IMPL-NEXT: { |
| 135 | +// IMPL-NEXT: llvm::tdl::allowedClauses_TDLD_dira, |
| 136 | +// IMPL-NEXT: llvm::tdl::allowedOnceClauses_TDLD_dira, |
| 137 | +// IMPL-NEXT: llvm::tdl::allowedExclusiveClauses_TDLD_dira, |
| 138 | +// IMPL-NEXT: llvm::tdl::requiredClauses_TDLD_dira, |
| 139 | +// IMPL-NEXT: } |
| 140 | +// IMPL-NEXT: }, |
| 141 | +// IMPL-NEXT: } |
| 142 | +// IMPL-EMPTY: |
| 143 | +// IMPL-NEXT: #endif // GEN_FLANG_DIRECTIVE_CLAUSE_MAP |
| 144 | +// IMPL-EMPTY: |
| 145 | +// IMPL-NEXT: #ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES |
| 146 | +// IMPL-NEXT: #undef GEN_FLANG_CLAUSE_PARSER_CLASSES |
| 147 | +// IMPL-EMPTY: |
| 148 | +// IMPL-NEXT: EMPTY_CLASS(Clausea); |
| 149 | +// IMPL-NEXT: WRAPPER_CLASS(Clauseb, std::optional<IntExpr>); |
| 150 | +// IMPL-EMPTY: |
| 151 | +// IMPL-NEXT: #endif // GEN_FLANG_CLAUSE_PARSER_CLASSES |
| 152 | +// IMPL-EMPTY: |
| 153 | +// IMPL-NEXT: #ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST |
| 154 | +// IMPL-NEXT: #undef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST |
| 155 | +// IMPL-EMPTY: |
| 156 | +// IMPL-NEXT: Clausea |
| 157 | +// IMPL-NEXT: , Clauseb |
| 158 | +// IMPL-EMPTY: |
| 159 | +// IMPL-NEXT: #endif // GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST |
| 160 | +// IMPL-EMPTY: |
| 161 | +// IMPL-NEXT: #ifdef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES |
| 162 | +// IMPL-NEXT: #undef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES |
| 163 | +// IMPL-EMPTY: |
| 164 | +// IMPL-NEXT: NODE(TdlClause, Clausea) |
| 165 | +// IMPL-NEXT: NODE(TdlClause, Clauseb) |
| 166 | +// IMPL-EMPTY: |
| 167 | +// IMPL-NEXT: #endif // GEN_FLANG_DUMP_PARSE_TREE_CLAUSES |
| 168 | +// IMPL-EMPTY: |
| 169 | +// IMPL-NEXT: #ifdef GEN_FLANG_CLAUSE_UNPARSE |
| 170 | +// IMPL-NEXT: #undef GEN_FLANG_CLAUSE_UNPARSE |
| 171 | +// IMPL-EMPTY: |
| 172 | +// IMPL-NEXT: void Before(const TdlClause::Clausea &) { Word("CLAUSEA"); } |
| 173 | +// IMPL-NEXT: void Unparse(const TdlClause::Clauseb &x) { |
| 174 | +// IMPL-NEXT: Word("CLAUSEB"); |
| 175 | +// IMPL-NEXT: Walk("(", x.v, ")"); |
| 176 | +// IMPL-NEXT: } |
| 177 | +// IMPL-EMPTY: |
| 178 | +// IMPL-NEXT: #endif // GEN_FLANG_CLAUSE_UNPARSE |
| 179 | +// IMPL-EMPTY: |
| 180 | +// IMPL-NEXT: #ifdef GEN_FLANG_CLAUSE_CHECK_ENTER |
| 181 | +// IMPL-NEXT: #undef GEN_FLANG_CLAUSE_CHECK_ENTER |
| 182 | +// IMPL-EMPTY: |
| 183 | +// IMPL-NEXT: void Enter(const parser::TdlClause::Clausea &); |
| 184 | +// IMPL-NEXT: void Enter(const parser::TdlClause::Clauseb &); |
| 185 | +// IMPL-EMPTY: |
| 186 | +// IMPL-NEXT: #endif // GEN_FLANG_CLAUSE_CHECK_ENTER |
| 187 | +// IMPL-EMPTY: |
| 188 | +// IMPL-NEXT: #ifdef GEN_FLANG_CLAUSE_PARSER_KIND_MAP |
| 189 | +// IMPL-NEXT: #undef GEN_FLANG_CLAUSE_PARSER_KIND_MAP |
| 190 | +// IMPL-EMPTY: |
| 191 | +// IMPL-NEXT: if constexpr (std::is_same_v<A, parser::TdlClause::Clausea>) |
| 192 | +// IMPL-NEXT: return llvm::tdl::Clause::TDLC_clausea; |
| 193 | +// IMPL-NEXT: if constexpr (std::is_same_v<A, parser::TdlClause::Clauseb>) |
| 194 | +// IMPL-NEXT: return llvm::tdl::Clause::TDLC_clauseb; |
| 195 | +// IMPL-NEXT: llvm_unreachable("Invalid Tdl Parser clause"); |
| 196 | +// IMPL-EMPTY: |
| 197 | +// IMPL-NEXT: #endif // GEN_FLANG_CLAUSE_PARSER_KIND_MAP |
| 198 | +// IMPL-EMPTY: |
| 199 | +// IMPL-NEXT: #ifdef GEN_CLANG_CLAUSE_CLASS |
| 200 | +// IMPL-NEXT: #undef GEN_CLANG_CLAUSE_CLASS |
| 201 | +// IMPL-EMPTY: |
| 202 | +// IMPL-NEXT: #ifndef CLAUSE |
| 203 | +// IMPL-NEXT: #define CLAUSE(Enum, Str, Implicit) |
| 204 | +// IMPL-NEXT: #endif |
| 205 | +// IMPL-NEXT: #ifndef CLAUSE_CLASS |
| 206 | +// IMPL-NEXT: #define CLAUSE_CLASS(Enum, Str, Class) |
| 207 | +// IMPL-NEXT: #endif |
| 208 | +// IMPL-NEXT: #ifndef CLAUSE_NO_CLASS |
| 209 | +// IMPL-NEXT: #define CLAUSE_NO_CLASS(Enum, Str) |
| 210 | +// IMPL-NEXT: #endif |
| 211 | +// IMPL-EMPTY: |
| 212 | +// IMPL-NEXT: #define __CLAUSE(Name, Class) \ |
| 213 | +// IMPL-NEXT: CLAUSE(TDLC_##Name, #Name, /* Implicit */ false) \ |
| 214 | +// IMPL-NEXT: CLAUSE_CLASS(TDLC_##Name, #Name, Class) |
| 215 | +// IMPL-NEXT: #define __CLAUSE_NO_CLASS(Name) \ |
| 216 | +// IMPL-NEXT: CLAUSE(TDLC_##Name, #Name, /* Implicit */ false) \ |
| 217 | +// IMPL-NEXT: CLAUSE_NO_CLASS(TDLC_##Name, #Name) |
| 218 | +// IMPL-NEXT: #define __IMPLICIT_CLAUSE_CLASS(Name, Str, Class) \ |
| 219 | +// IMPL-NEXT: CLAUSE(TDLC_##Name, Str, /* Implicit */ true) \ |
| 220 | +// IMPL-NEXT: CLAUSE_CLASS(TDLC_##Name, Str, Class) |
| 221 | +// IMPL-NEXT: #define __IMPLICIT_CLAUSE_NO_CLASS(Name, Str) \ |
| 222 | +// IMPL-NEXT: CLAUSE(TDLC_##Name, Str, /* Implicit */ true) \ |
| 223 | +// IMPL-NEXT: CLAUSE_NO_CLASS(TDLC_##Name, Str) |
| 224 | +// IMPL-EMPTY: |
| 225 | +// IMPL-NEXT: __CLAUSE_NO_CLASS(clausea) |
| 226 | +// IMPL-NEXT: __CLAUSE_NO_CLASS(clauseb) |
| 227 | +// IMPL-EMPTY: |
| 228 | +// IMPL-NEXT: #undef __IMPLICIT_CLAUSE_NO_CLASS |
| 229 | +// IMPL-NEXT: #undef __IMPLICIT_CLAUSE_CLASS |
| 230 | +// IMPL-NEXT: #undef __CLAUSE |
| 231 | +// IMPL-NEXT: #undef CLAUSE_NO_CLASS |
| 232 | +// IMPL-NEXT: #undef CLAUSE_CLASS |
| 233 | +// IMPL-NEXT: #undef CLAUSE |
| 234 | +// IMPL-EMPTY: |
| 235 | +// IMPL-NEXT: #endif // GEN_CLANG_CLAUSE_CLASS |
| 236 | +// IMPL-EMPTY: |
| 237 | + |
| 238 | +// IMPL: #ifdef GEN_DIRECTIVES_IMPL |
| 239 | +// IMPL-NEXT: #undef GEN_DIRECTIVES_IMPL |
110 | 240 | // IMPL-EMPTY:
|
111 | 241 | // IMPL-NEXT: Directive llvm::tdl::getTdlDirectiveKind(llvm::StringRef Str) {
|
112 | 242 | // IMPL-NEXT: return llvm::StringSwitch<Directive>(Str)
|
@@ -177,102 +307,4 @@ def TDL_DirA : Directive<"dira"> {
|
177 | 307 | // IMPL-NEXT: llvm_unreachable("Invalid Tdl Directive kind");
|
178 | 308 | // IMPL-NEXT: }
|
179 | 309 | // IMPL-EMPTY:
|
180 |
| - |
181 |
| - |
182 |
| - |
183 |
| -// GEN: #ifdef GEN_FLANG_DIRECTIVE_CLAUSE_SETS |
184 |
| -// GEN-NEXT: #undef GEN_FLANG_DIRECTIVE_CLAUSE_SETS |
185 |
| -// GEN-EMPTY: |
186 |
| -// GEN-NEXT: namespace llvm { |
187 |
| -// GEN-NEXT: namespace tdl { |
188 |
| -// GEN-EMPTY: |
189 |
| -// GEN-NEXT: // Sets for dira |
190 |
| -// GEN-EMPTY: |
191 |
| -// GEN-NEXT: static allowedClauses_TDLD_dira { |
192 |
| -// GEN-NEXT: llvm::tdl::Clause::TDLC_clausea, |
193 |
| -// GEN-NEXT: llvm::tdl::Clause::TDLC_clauseb, |
194 |
| -// GEN-NEXT: }; |
195 |
| -// GEN-EMPTY: |
196 |
| -// GEN-NEXT: static allowedOnceClauses_TDLD_dira { |
197 |
| -// GEN-NEXT: }; |
198 |
| -// GEN-EMPTY: |
199 |
| -// GEN-NEXT: static allowedExclusiveClauses_TDLD_dira { |
200 |
| -// GEN-NEXT: }; |
201 |
| -// GEN-EMPTY: |
202 |
| -// GEN-NEXT: static requiredClauses_TDLD_dira { |
203 |
| -// GEN-NEXT: }; |
204 |
| -// GEN-NEXT: } // namespace tdl |
205 |
| -// GEN-NEXT: } // namespace llvm |
206 |
| -// GEN-EMPTY: |
207 |
| -// GEN-NEXT: #endif // GEN_FLANG_DIRECTIVE_CLAUSE_SETS |
208 |
| -// GEN-EMPTY: |
209 |
| -// GEN-NEXT: #ifdef GEN_FLANG_DIRECTIVE_CLAUSE_MAP |
210 |
| -// GEN-NEXT: #undef GEN_FLANG_DIRECTIVE_CLAUSE_MAP |
211 |
| -// GEN-EMPTY: |
212 |
| -// GEN-NEXT: { |
213 |
| -// GEN-NEXT: {llvm::tdl::Directive::TDLD_dira, |
214 |
| -// GEN-NEXT: { |
215 |
| -// GEN-NEXT: llvm::tdl::allowedClauses_TDLD_dira, |
216 |
| -// GEN-NEXT: llvm::tdl::allowedOnceClauses_TDLD_dira, |
217 |
| -// GEN-NEXT: llvm::tdl::allowedExclusiveClauses_TDLD_dira, |
218 |
| -// GEN-NEXT: llvm::tdl::requiredClauses_TDLD_dira, |
219 |
| -// GEN-NEXT: } |
220 |
| -// GEN-NEXT: }, |
221 |
| -// GEN-NEXT: } |
222 |
| -// GEN-EMPTY: |
223 |
| -// GEN-NEXT: #endif // GEN_FLANG_DIRECTIVE_CLAUSE_MAP |
224 |
| -// GEN-EMPTY: |
225 |
| -// GEN-NEXT: #ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES |
226 |
| -// GEN-NEXT: #undef GEN_FLANG_CLAUSE_PARSER_CLASSES |
227 |
| -// GEN-EMPTY: |
228 |
| -// GEN-NEXT: EMPTY_CLASS(Clausea); |
229 |
| -// GEN-NEXT: WRAPPER_CLASS(Clauseb, std::optional<IntExpr>); |
230 |
| -// GEN-EMPTY: |
231 |
| -// GEN-NEXT: #endif // GEN_FLANG_CLAUSE_PARSER_CLASSES |
232 |
| -// GEN-EMPTY: |
233 |
| -// GEN-NEXT: #ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST |
234 |
| -// GEN-NEXT: #undef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST |
235 |
| -// GEN-EMPTY: |
236 |
| -// GEN-NEXT: Clausea |
237 |
| -// GEN-NEXT: , Clauseb |
238 |
| -// GEN-EMPTY: |
239 |
| -// GEN-NEXT: #endif // GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST |
240 |
| -// GEN-EMPTY: |
241 |
| -// GEN-NEXT: #ifdef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES |
242 |
| -// GEN-NEXT: #undef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES |
243 |
| -// GEN-EMPTY: |
244 |
| -// GEN-NEXT: NODE(TdlClause, Clausea) |
245 |
| -// GEN-NEXT: NODE(TdlClause, Clauseb) |
246 |
| -// GEN-EMPTY: |
247 |
| -// GEN-NEXT: #endif // GEN_FLANG_DUMP_PARSE_TREE_CLAUSES |
248 |
| -// GEN-EMPTY: |
249 |
| -// GEN-NEXT: #ifdef GEN_FLANG_CLAUSE_UNPARSE |
250 |
| -// GEN-NEXT: #undef GEN_FLANG_CLAUSE_UNPARSE |
251 |
| -// GEN-EMPTY: |
252 |
| -// GEN-NEXT: void Before(const TdlClause::Clausea &) { Word("CLAUSEA"); } |
253 |
| -// GEN-NEXT: void Unparse(const TdlClause::Clauseb &x) { |
254 |
| -// GEN-NEXT: Word("CLAUSEB"); |
255 |
| -// GEN-NEXT: Walk("(", x.v, ")"); |
256 |
| -// GEN-NEXT: } |
257 |
| -// GEN-EMPTY: |
258 |
| -// GEN-NEXT: #endif // GEN_FLANG_CLAUSE_UNPARSE |
259 |
| -// GEN-EMPTY: |
260 |
| -// GEN-NEXT: #ifdef GEN_FLANG_CLAUSE_CHECK_ENTER |
261 |
| -// GEN-NEXT: #undef GEN_FLANG_CLAUSE_CHECK_ENTER |
262 |
| -// GEN-EMPTY: |
263 |
| -// GEN-NEXT: void Enter(const parser::TdlClause::Clausea &); |
264 |
| -// GEN-NEXT: void Enter(const parser::TdlClause::Clauseb &); |
265 |
| -// GEN-EMPTY: |
266 |
| -// GEN-NEXT: #endif // GEN_FLANG_CLAUSE_CHECK_ENTER |
267 |
| -// GEN-EMPTY: |
268 |
| -// GEN-NEXT: #ifdef GEN_FLANG_CLAUSE_PARSER_KIND_MAP |
269 |
| -// GEN-NEXT: #undef GEN_FLANG_CLAUSE_PARSER_KIND_MAP |
270 |
| -// GEN-EMPTY: |
271 |
| -// GEN-NEXT: if constexpr (std::is_same_v<A, parser::TdlClause::Clausea>) |
272 |
| -// GEN-NEXT: return llvm::tdl::Clause::TDLC_clausea; |
273 |
| -// GEN-NEXT: if constexpr (std::is_same_v<A, parser::TdlClause::Clauseb>) |
274 |
| -// GEN-NEXT: return llvm::tdl::Clause::TDLC_clauseb; |
275 |
| -// GEN-NEXT: llvm_unreachable("Invalid Tdl Parser clause"); |
276 |
| -// GEN-EMPTY: |
277 |
| -// GEN-NEXT: #endif // GEN_FLANG_CLAUSE_PARSER_KIND_MAP |
278 |
| -// GEN-EMPTY: |
| 310 | +// IMPL-NEXT: #endif // GEN_DIRECTIVES_IMPL |
0 commit comments