ACC.td 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639
  1. //===-- ACC.td - OpenACC directive definition file ---------*- tablegen -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. //
  9. // This is the definition file for OpenACC 3.1 directives and clauses.
  10. //
  11. //===----------------------------------------------------------------------===//
  12. include "llvm/Frontend/Directive/DirectiveBase.td"
  13. //===----------------------------------------------------------------------===//
  14. // Definition of general OpenACC information
  15. //===----------------------------------------------------------------------===//
  16. def OpenACC : DirectiveLanguage {
  17. let name = "OpenACC";
  18. let cppNamespace = "acc"; // final namespace will be llvm::acc
  19. let directivePrefix = "ACCD_";
  20. let clausePrefix = "ACCC_";
  21. let makeEnumAvailableInNamespace = true;
  22. let enableBitmaskEnumInNamespace = true;
  23. let clauseEnumSetClass = "AccClauseSet";
  24. let flangClauseBaseClass = "AccClause";
  25. }
  26. //===----------------------------------------------------------------------===//
  27. // Definition of OpenACC clauses
  28. //===----------------------------------------------------------------------===//
  29. // 2.16.1
  30. def ACCC_Async : Clause<"async"> {
  31. let flangClass = "ScalarIntExpr";
  32. let isValueOptional = true;
  33. }
  34. // 2.9.7
  35. def ACCC_Auto : Clause<"auto"> {}
  36. // 2.7.12
  37. def ACCC_Attach : Clause<"attach"> {
  38. let flangClass = "AccObjectList";
  39. }
  40. // 2.15.1
  41. def ACCC_Bind : Clause<"bind"> {
  42. let flangClass = "AccBindClause";
  43. }
  44. // 2.12
  45. def ACCC_Capture : Clause<"capture"> {
  46. }
  47. // 2.9.1
  48. def ACCC_Collapse : Clause<"collapse"> {
  49. let flangClass = "ScalarIntConstantExpr";
  50. }
  51. // 2.7.6
  52. def ACCC_Copy : Clause<"copy"> {
  53. let flangClass = "AccObjectList";
  54. let aliases = ["present_or_copy", "pcopy"];
  55. }
  56. // 2.7.7
  57. def ACCC_Copyin : Clause<"copyin"> {
  58. let flangClass = "AccObjectListWithModifier";
  59. let aliases = ["present_or_copyin", "pcopyin"];
  60. }
  61. // 2.7.8
  62. def ACCC_Copyout : Clause<"copyout"> {
  63. let flangClass = "AccObjectListWithModifier";
  64. let aliases = ["present_or_copyout", "pcopyout"];
  65. }
  66. // 2.7.9
  67. def ACCC_Create : Clause<"create"> {
  68. let flangClass = "AccObjectListWithModifier";
  69. let aliases = ["present_or_create", "pcreate"];
  70. }
  71. // 2.5.15
  72. def ACC_Default_none : ClauseVal<"none", 1, 1> { let isDefault = 1; }
  73. def ACC_Default_present : ClauseVal<"present", 0, 1> {}
  74. def ACCC_Default : Clause<"default"> {
  75. let flangClass = "AccDefaultClause";
  76. let enumClauseValue = "DefaultValue";
  77. let allowedClauseValues = [
  78. ACC_Default_present,
  79. ACC_Default_none
  80. ];
  81. }
  82. // 2.14.3
  83. def ACCC_DefaultAsync : Clause<"default_async"> {
  84. let flangClass = "ScalarIntExpr";
  85. }
  86. // 2.7.11
  87. def ACCC_Delete : Clause<"delete"> {
  88. let flangClass = "AccObjectList";
  89. }
  90. // 2.7.13
  91. def ACCC_Detach : Clause<"detach"> {
  92. let flangClass = "AccObjectList";
  93. }
  94. // 2.14.4
  95. def ACCC_Device : Clause<"device"> {
  96. let flangClass = "AccObjectList";
  97. }
  98. // 2.14.1 - 2.14.2
  99. def ACCC_DeviceNum : Clause<"device_num"> {
  100. let flangClass = "ScalarIntExpr";
  101. }
  102. // 2.7.4
  103. def ACCC_DevicePtr : Clause<"deviceptr"> {
  104. let flangClass = "AccObjectList";
  105. }
  106. // 2.13.1
  107. def ACCC_DeviceResident : Clause<"device_resident"> {
  108. let flangClass = "AccObjectList";
  109. }
  110. // 2.4
  111. def ACCC_DeviceType : Clause<"device_type"> {
  112. let flangClass = "AccDeviceTypeExprList";
  113. let defaultValue = "*";
  114. let aliases = ["dtype"];
  115. }
  116. // 2.6.6
  117. def ACCC_Finalize : Clause<"finalize"> {}
  118. // 2.5.13
  119. def ACCC_FirstPrivate : Clause<"firstprivate"> {
  120. let flangClass = "AccObjectList";
  121. }
  122. // 2.9.2
  123. def ACCC_Gang : Clause<"gang"> {
  124. let flangClass = "AccGangArgument";
  125. let isValueOptional = true;
  126. }
  127. // 2.14.4
  128. def ACCC_Host : Clause<"host"> {
  129. let flangClass = "AccObjectList";
  130. }
  131. // 2.5.5
  132. def ACCC_If : Clause <"if"> {
  133. let flangClass = "ScalarLogicalExpr";
  134. }
  135. // 2.14.4
  136. def ACCC_IfPresent : Clause<"if_present"> {}
  137. // 2.9.6
  138. def ACCC_Independent : Clause<"independent"> {}
  139. // 2.13.3
  140. def ACCC_Link : Clause<"link"> {
  141. let flangClass = "AccObjectList";
  142. }
  143. // 2.7.10
  144. def ACCC_NoCreate : Clause<"no_create"> {
  145. let flangClass = "AccObjectList";
  146. }
  147. // 2.15.1
  148. def ACCC_NoHost : Clause<"nohost"> {}
  149. // 2.5.9
  150. def ACCC_NumGangs : Clause<"num_gangs"> {
  151. let flangClass = "ScalarIntExpr";
  152. }
  153. // 2.5.10
  154. def ACCC_NumWorkers : Clause<"num_workers"> {
  155. let flangClass = "ScalarIntExpr";
  156. }
  157. // 2.7.5
  158. def ACCC_Present : Clause<"present"> {
  159. let flangClass = "AccObjectList";
  160. }
  161. // 2.5.12
  162. def ACCC_Private : Clause<"private"> {
  163. let flangClass = "AccObjectList";
  164. }
  165. // 2.9.8
  166. def ACCC_Tile : Clause <"tile"> {
  167. let flangClass = "AccTileExprList";
  168. }
  169. // 2.8.1
  170. def ACCC_UseDevice : Clause <"use_device"> {
  171. let flangClass = "AccObjectList";
  172. }
  173. // 2.12
  174. def ACCC_Read : Clause<"read"> {}
  175. // 2.5.14
  176. def ACCC_Reduction : Clause<"reduction"> {
  177. let flangClass = "AccObjectListWithReduction";
  178. }
  179. // 2.5.6
  180. def ACCC_Self : Clause<"self"> {
  181. let flangClass = "AccSelfClause";
  182. let isValueOptional = true;
  183. }
  184. // 2.9.5
  185. def ACCC_Seq : Clause<"seq"> {}
  186. // 2.9.4
  187. def ACCC_Vector : Clause<"vector"> {
  188. let flangClass = "ScalarIntExpr";
  189. let isValueOptional = true;
  190. let prefix = "length";
  191. }
  192. // 2.5.11
  193. def ACCC_VectorLength : Clause<"vector_length"> {
  194. let flangClass = "ScalarIntExpr";
  195. }
  196. // 2.16.2
  197. def ACCC_Wait : Clause<"wait"> {
  198. let flangClass = "AccWaitArgument";
  199. let isValueOptional = true;
  200. }
  201. // 2.9.3
  202. def ACCC_Worker: Clause<"worker"> {
  203. let flangClass = "ScalarIntExpr";
  204. let isValueOptional = true;
  205. let prefix = "num";
  206. }
  207. // 2.12
  208. def ACCC_Write : Clause<"write"> {}
  209. def ACCC_Unknown : Clause<"unknown"> {
  210. let isDefault = true;
  211. }
  212. //===----------------------------------------------------------------------===//
  213. // Definition of OpenACC directives
  214. //===----------------------------------------------------------------------===//
  215. // 2.12
  216. def ACC_Atomic : Directive<"atomic"> {}
  217. // 2.6.5
  218. def ACC_Data : Directive<"data"> {
  219. let allowedOnceClauses = [
  220. VersionedClause<ACCC_If>,
  221. VersionedClause<ACCC_Default>
  222. ];
  223. let requiredClauses = [
  224. VersionedClause<ACCC_Attach>,
  225. VersionedClause<ACCC_Copy>,
  226. VersionedClause<ACCC_Copyin>,
  227. VersionedClause<ACCC_Copyout>,
  228. VersionedClause<ACCC_Create>,
  229. VersionedClause<ACCC_Default>,
  230. VersionedClause<ACCC_DevicePtr>,
  231. VersionedClause<ACCC_NoCreate>,
  232. VersionedClause<ACCC_Present>
  233. ];
  234. }
  235. // 2.13
  236. def ACC_Declare : Directive<"declare"> {
  237. let allowedClauses = [
  238. VersionedClause<ACCC_Copy>,
  239. VersionedClause<ACCC_Copyin>,
  240. VersionedClause<ACCC_Copyout>,
  241. VersionedClause<ACCC_Create>,
  242. VersionedClause<ACCC_Present>,
  243. VersionedClause<ACCC_DevicePtr>,
  244. VersionedClause<ACCC_DeviceResident>,
  245. VersionedClause<ACCC_Link>
  246. ];
  247. }
  248. // 2.5.3
  249. def ACC_Kernels : Directive<"kernels"> {
  250. let allowedClauses = [
  251. VersionedClause<ACCC_Attach>,
  252. VersionedClause<ACCC_Copy>,
  253. VersionedClause<ACCC_Copyin>,
  254. VersionedClause<ACCC_Copyout>,
  255. VersionedClause<ACCC_Create>,
  256. VersionedClause<ACCC_DeviceType>,
  257. VersionedClause<ACCC_NoCreate>,
  258. VersionedClause<ACCC_Present>,
  259. VersionedClause<ACCC_DevicePtr>,
  260. VersionedClause<ACCC_Wait>
  261. ];
  262. let allowedOnceClauses = [
  263. VersionedClause<ACCC_Async>,
  264. VersionedClause<ACCC_Default>,
  265. VersionedClause<ACCC_If>,
  266. VersionedClause<ACCC_NumGangs>,
  267. VersionedClause<ACCC_NumWorkers>,
  268. VersionedClause<ACCC_Self>,
  269. VersionedClause<ACCC_VectorLength>
  270. ];
  271. }
  272. // 2.5.1
  273. def ACC_Parallel : Directive<"parallel"> {
  274. let allowedClauses = [
  275. VersionedClause<ACCC_Attach>,
  276. VersionedClause<ACCC_Copy>,
  277. VersionedClause<ACCC_Copyin>,
  278. VersionedClause<ACCC_Copyout>,
  279. VersionedClause<ACCC_Create>,
  280. VersionedClause<ACCC_DevicePtr>,
  281. VersionedClause<ACCC_DeviceType>,
  282. VersionedClause<ACCC_NoCreate>,
  283. VersionedClause<ACCC_Present>,
  284. VersionedClause<ACCC_Private>,
  285. VersionedClause<ACCC_FirstPrivate>,
  286. VersionedClause<ACCC_Wait>
  287. ];
  288. let allowedOnceClauses = [
  289. VersionedClause<ACCC_Async>,
  290. VersionedClause<ACCC_Default>,
  291. VersionedClause<ACCC_If>,
  292. VersionedClause<ACCC_NumGangs>,
  293. VersionedClause<ACCC_NumWorkers>,
  294. VersionedClause<ACCC_Reduction>,
  295. VersionedClause<ACCC_Self>,
  296. VersionedClause<ACCC_VectorLength>
  297. ];
  298. }
  299. // 2.5.2
  300. def ACC_Serial : Directive<"serial"> {
  301. // Spec line 950-951: clause is as for the parallel construct except that the
  302. // num_gangs, num_workers, and vector_length clauses are not permitted.
  303. let allowedClauses = [
  304. VersionedClause<ACCC_Attach>,
  305. VersionedClause<ACCC_Copy>,
  306. VersionedClause<ACCC_Copyin>,
  307. VersionedClause<ACCC_Copyout>,
  308. VersionedClause<ACCC_Create>,
  309. VersionedClause<ACCC_DevicePtr>,
  310. VersionedClause<ACCC_DeviceType>,
  311. VersionedClause<ACCC_NoCreate>,
  312. VersionedClause<ACCC_Present>,
  313. VersionedClause<ACCC_Private>,
  314. VersionedClause<ACCC_FirstPrivate>,
  315. VersionedClause<ACCC_Wait>
  316. ];
  317. let allowedOnceClauses = [
  318. VersionedClause<ACCC_Async>,
  319. VersionedClause<ACCC_Default>,
  320. VersionedClause<ACCC_If>,
  321. VersionedClause<ACCC_Reduction>,
  322. VersionedClause<ACCC_Self>
  323. ];
  324. }
  325. // 2.9
  326. def ACC_Loop : Directive<"loop"> {
  327. let allowedClauses = [
  328. VersionedClause<ACCC_DeviceType>,
  329. VersionedClause<ACCC_Private>
  330. ];
  331. let allowedOnceClauses = [
  332. VersionedClause<ACCC_Collapse>,
  333. VersionedClause<ACCC_Gang>,
  334. VersionedClause<ACCC_Reduction>,
  335. VersionedClause<ACCC_Tile>,
  336. VersionedClause<ACCC_Vector>,
  337. VersionedClause<ACCC_Worker>
  338. ];
  339. let allowedExclusiveClauses = [
  340. VersionedClause<ACCC_Auto>,
  341. VersionedClause<ACCC_Independent>,
  342. VersionedClause<ACCC_Seq>
  343. ];
  344. }
  345. // 2.10
  346. def ACC_Cache : Directive<"cache"> {}
  347. // 2.14.1
  348. def ACC_Init : Directive<"init"> {
  349. let allowedOnceClauses = [
  350. VersionedClause<ACCC_DeviceNum>,
  351. VersionedClause<ACCC_DeviceType>,
  352. VersionedClause<ACCC_If>
  353. ];
  354. }
  355. // 2.15.1
  356. def ACC_Routine : Directive<"routine"> {
  357. let allowedOnceClauses = [
  358. VersionedClause<ACCC_Bind>,
  359. VersionedClause<ACCC_DeviceType>,
  360. VersionedClause<ACCC_NoHost>
  361. ];
  362. let requiredClauses = [
  363. VersionedClause<ACCC_Gang>,
  364. VersionedClause<ACCC_Seq>,
  365. VersionedClause<ACCC_Vector>,
  366. VersionedClause<ACCC_Worker>
  367. ];
  368. }
  369. // 2.14.3
  370. def ACC_Set : Directive<"set"> {
  371. let allowedOnceClauses = [
  372. VersionedClause<ACCC_DefaultAsync>,
  373. VersionedClause<ACCC_DeviceNum>,
  374. VersionedClause<ACCC_DeviceType>,
  375. VersionedClause<ACCC_If>
  376. ];
  377. let requiredClauses = [
  378. // The three following clauses are also in allowedOnceClauses list due to
  379. // restriction 2255 - Two instances of the same clause may not appear on the
  380. // same directive.
  381. VersionedClause<ACCC_DefaultAsync>,
  382. VersionedClause<ACCC_DeviceNum>,
  383. VersionedClause<ACCC_DeviceType>
  384. ];
  385. }
  386. // 2.14.2
  387. def ACC_Shutdown : Directive<"shutdown"> {
  388. let allowedOnceClauses = [
  389. VersionedClause<ACCC_DeviceNum>,
  390. VersionedClause<ACCC_DeviceType>,
  391. VersionedClause<ACCC_If>
  392. ];
  393. }
  394. // 2.14.4
  395. def ACC_Update : Directive<"update"> {
  396. let allowedClauses = [
  397. VersionedClause<ACCC_DeviceType>,
  398. VersionedClause<ACCC_Wait>
  399. ];
  400. let allowedOnceClauses = [
  401. VersionedClause<ACCC_Async>,
  402. VersionedClause<ACCC_If>,
  403. VersionedClause<ACCC_IfPresent>
  404. ];
  405. let requiredClauses = [
  406. VersionedClause<ACCC_Device>,
  407. VersionedClause<ACCC_Host>,
  408. VersionedClause<ACCC_Self>
  409. ];
  410. }
  411. // 2.16.3
  412. def ACC_Wait : Directive<"wait"> {
  413. let allowedOnceClauses = [
  414. VersionedClause<ACCC_Async>,
  415. VersionedClause<ACCC_If>
  416. ];
  417. }
  418. // 2.14.6
  419. def ACC_EnterData : Directive<"enter data"> {
  420. let allowedClauses = [
  421. VersionedClause<ACCC_Wait>
  422. ];
  423. let allowedOnceClauses = [
  424. VersionedClause<ACCC_Async>,
  425. VersionedClause<ACCC_If>
  426. ];
  427. let requiredClauses = [
  428. VersionedClause<ACCC_Attach>,
  429. VersionedClause<ACCC_Create>,
  430. VersionedClause<ACCC_Copyin>
  431. ];
  432. }
  433. // 2.14.7
  434. def ACC_ExitData : Directive<"exit data"> {
  435. let allowedClauses = [
  436. VersionedClause<ACCC_Wait>
  437. ];
  438. let allowedOnceClauses = [
  439. VersionedClause<ACCC_Async>,
  440. VersionedClause<ACCC_If>,
  441. VersionedClause<ACCC_Finalize>
  442. ];
  443. let requiredClauses = [
  444. VersionedClause<ACCC_Copyout>,
  445. VersionedClause<ACCC_Delete>,
  446. VersionedClause<ACCC_Detach>
  447. ];
  448. }
  449. // 2.8
  450. def ACC_HostData : Directive<"host_data"> {
  451. let allowedOnceClauses = [
  452. VersionedClause<ACCC_If>,
  453. VersionedClause<ACCC_IfPresent>
  454. ];
  455. let requiredClauses = [
  456. VersionedClause<ACCC_UseDevice>
  457. ];
  458. }
  459. // 2.11
  460. def ACC_KernelsLoop : Directive<"kernels loop"> {
  461. let allowedClauses = [
  462. VersionedClause<ACCC_Copy>,
  463. VersionedClause<ACCC_Copyin>,
  464. VersionedClause<ACCC_Copyout>,
  465. VersionedClause<ACCC_Create>,
  466. VersionedClause<ACCC_DeviceType>,
  467. VersionedClause<ACCC_NoCreate>,
  468. VersionedClause<ACCC_Present>,
  469. VersionedClause<ACCC_Private>,
  470. VersionedClause<ACCC_DevicePtr>,
  471. VersionedClause<ACCC_Attach>,
  472. VersionedClause<ACCC_Wait>
  473. ];
  474. let allowedOnceClauses = [
  475. VersionedClause<ACCC_Async>,
  476. VersionedClause<ACCC_Collapse>,
  477. VersionedClause<ACCC_Default>,
  478. VersionedClause<ACCC_Gang>,
  479. VersionedClause<ACCC_If>,
  480. VersionedClause<ACCC_NumGangs>,
  481. VersionedClause<ACCC_NumWorkers>,
  482. VersionedClause<ACCC_Reduction>,
  483. VersionedClause<ACCC_Self>,
  484. VersionedClause<ACCC_Tile>,
  485. VersionedClause<ACCC_Vector>,
  486. VersionedClause<ACCC_VectorLength>,
  487. VersionedClause<ACCC_Worker>
  488. ];
  489. let allowedExclusiveClauses = [
  490. VersionedClause<ACCC_Auto>,
  491. VersionedClause<ACCC_Independent>,
  492. VersionedClause<ACCC_Seq>
  493. ];
  494. }
  495. // 2.11
  496. def ACC_ParallelLoop : Directive<"parallel loop"> {
  497. let allowedClauses = [
  498. VersionedClause<ACCC_Attach>,
  499. VersionedClause<ACCC_Copy>,
  500. VersionedClause<ACCC_Copyin>,
  501. VersionedClause<ACCC_Copyout>,
  502. VersionedClause<ACCC_Create>,
  503. VersionedClause<ACCC_DevicePtr>,
  504. VersionedClause<ACCC_DeviceType>,
  505. VersionedClause<ACCC_FirstPrivate>,
  506. VersionedClause<ACCC_NoCreate>,
  507. VersionedClause<ACCC_Present>,
  508. VersionedClause<ACCC_Private>,
  509. VersionedClause<ACCC_Tile>,
  510. VersionedClause<ACCC_Wait>
  511. ];
  512. let allowedOnceClauses = [
  513. VersionedClause<ACCC_Async>,
  514. VersionedClause<ACCC_Collapse>,
  515. VersionedClause<ACCC_Default>,
  516. VersionedClause<ACCC_Gang>,
  517. VersionedClause<ACCC_If>,
  518. VersionedClause<ACCC_NumGangs>,
  519. VersionedClause<ACCC_NumWorkers>,
  520. VersionedClause<ACCC_Reduction>,
  521. VersionedClause<ACCC_Self>,
  522. VersionedClause<ACCC_Vector>,
  523. VersionedClause<ACCC_VectorLength>,
  524. VersionedClause<ACCC_Worker>
  525. ];
  526. let allowedExclusiveClauses = [
  527. VersionedClause<ACCC_Auto>,
  528. VersionedClause<ACCC_Independent>,
  529. VersionedClause<ACCC_Seq>
  530. ];
  531. }
  532. // 2.11
  533. def ACC_SerialLoop : Directive<"serial loop"> {
  534. let allowedClauses = [
  535. VersionedClause<ACCC_Attach>,
  536. VersionedClause<ACCC_Copy>,
  537. VersionedClause<ACCC_Copyin>,
  538. VersionedClause<ACCC_Copyout>,
  539. VersionedClause<ACCC_Create>,
  540. VersionedClause<ACCC_DevicePtr>,
  541. VersionedClause<ACCC_DeviceType>,
  542. VersionedClause<ACCC_FirstPrivate>,
  543. VersionedClause<ACCC_NoCreate>,
  544. VersionedClause<ACCC_Present>,
  545. VersionedClause<ACCC_Private>,
  546. VersionedClause<ACCC_Wait>
  547. ];
  548. let allowedOnceClauses = [
  549. VersionedClause<ACCC_Async>,
  550. VersionedClause<ACCC_Collapse>,
  551. VersionedClause<ACCC_Default>,
  552. VersionedClause<ACCC_Gang>,
  553. VersionedClause<ACCC_If>,
  554. VersionedClause<ACCC_Reduction>,
  555. VersionedClause<ACCC_Self>,
  556. VersionedClause<ACCC_Tile>,
  557. VersionedClause<ACCC_Vector>,
  558. VersionedClause<ACCC_Worker>
  559. ];
  560. let allowedExclusiveClauses = [
  561. VersionedClause<ACCC_Auto>,
  562. VersionedClause<ACCC_Independent>,
  563. VersionedClause<ACCC_Seq>
  564. ];
  565. }
  566. def ACC_Unknown : Directive<"unknown"> {
  567. let isDefault = true;
  568. }