extinst.glsl.std.450.grammar.json 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642
  1. {
  2. "copyright" : [
  3. "Copyright (c) 2014-2016 The Khronos Group Inc.",
  4. "",
  5. "Permission is hereby granted, free of charge, to any person obtaining a copy",
  6. "of this software and/or associated documentation files (the \"Materials\"),",
  7. "to deal in the Materials without restriction, including without limitation",
  8. "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
  9. "and/or sell copies of the Materials, and to permit persons to whom the",
  10. "Materials are furnished to do so, subject to the following conditions:",
  11. "",
  12. "The above copyright notice and this permission notice shall be included in",
  13. "all copies or substantial portions of the Materials.",
  14. "",
  15. "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
  16. "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
  17. "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
  18. "",
  19. "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
  20. "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
  21. "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
  22. "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
  23. "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
  24. "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
  25. "IN THE MATERIALS."
  26. ],
  27. "version" : 100,
  28. "revision" : 2,
  29. "instructions" : [
  30. {
  31. "opname" : "Round",
  32. "opcode" : 1,
  33. "operands" : [
  34. { "kind" : "IdRef", "name" : "'x'" }
  35. ]
  36. },
  37. {
  38. "opname" : "RoundEven",
  39. "opcode" : 2,
  40. "operands" : [
  41. { "kind" : "IdRef", "name" : "'x'" }
  42. ]
  43. },
  44. {
  45. "opname" : "Trunc",
  46. "opcode" : 3,
  47. "operands" : [
  48. { "kind" : "IdRef", "name" : "'x'" }
  49. ]
  50. },
  51. {
  52. "opname" : "FAbs",
  53. "opcode" : 4,
  54. "operands" : [
  55. { "kind" : "IdRef", "name" : "'x'" }
  56. ]
  57. },
  58. {
  59. "opname" : "SAbs",
  60. "opcode" : 5,
  61. "operands" : [
  62. { "kind" : "IdRef", "name" : "'x'" }
  63. ]
  64. },
  65. {
  66. "opname" : "FSign",
  67. "opcode" : 6,
  68. "operands" : [
  69. { "kind" : "IdRef", "name" : "'x'" }
  70. ]
  71. },
  72. {
  73. "opname" : "SSign",
  74. "opcode" : 7,
  75. "operands" : [
  76. { "kind" : "IdRef", "name" : "'x'" }
  77. ]
  78. },
  79. {
  80. "opname" : "Floor",
  81. "opcode" : 8,
  82. "operands" : [
  83. { "kind" : "IdRef", "name" : "'x'" }
  84. ]
  85. },
  86. {
  87. "opname" : "Ceil",
  88. "opcode" : 9,
  89. "operands" : [
  90. { "kind" : "IdRef", "name" : "'x'" }
  91. ]
  92. },
  93. {
  94. "opname" : "Fract",
  95. "opcode" : 10,
  96. "operands" : [
  97. { "kind" : "IdRef", "name" : "'x'" }
  98. ]
  99. },
  100. {
  101. "opname" : "Radians",
  102. "opcode" : 11,
  103. "operands" : [
  104. { "kind" : "IdRef", "name" : "'degrees'" }
  105. ]
  106. },
  107. {
  108. "opname" : "Degrees",
  109. "opcode" : 12,
  110. "operands" : [
  111. { "kind" : "IdRef", "name" : "'radians'" }
  112. ]
  113. },
  114. {
  115. "opname" : "Sin",
  116. "opcode" : 13,
  117. "operands" : [
  118. { "kind" : "IdRef", "name" : "'x'" }
  119. ]
  120. },
  121. {
  122. "opname" : "Cos",
  123. "opcode" : 14,
  124. "operands" : [
  125. { "kind" : "IdRef", "name" : "'x'" }
  126. ]
  127. },
  128. {
  129. "opname" : "Tan",
  130. "opcode" : 15,
  131. "operands" : [
  132. { "kind" : "IdRef", "name" : "'x'" }
  133. ]
  134. },
  135. {
  136. "opname" : "Asin",
  137. "opcode" : 16,
  138. "operands" : [
  139. { "kind" : "IdRef", "name" : "'x'" }
  140. ]
  141. },
  142. {
  143. "opname" : "Acos",
  144. "opcode" : 17,
  145. "operands" : [
  146. { "kind" : "IdRef", "name" : "'x'" }
  147. ]
  148. },
  149. {
  150. "opname" : "Atan",
  151. "opcode" : 18,
  152. "operands" : [
  153. { "kind" : "IdRef", "name" : "'y_over_x'" }
  154. ]
  155. },
  156. {
  157. "opname" : "Sinh",
  158. "opcode" : 19,
  159. "operands" : [
  160. { "kind" : "IdRef", "name" : "'x'" }
  161. ]
  162. },
  163. {
  164. "opname" : "Cosh",
  165. "opcode" : 20,
  166. "operands" : [
  167. { "kind" : "IdRef", "name" : "'x'" }
  168. ]
  169. },
  170. {
  171. "opname" : "Tanh",
  172. "opcode" : 21,
  173. "operands" : [
  174. { "kind" : "IdRef", "name" : "'x'" }
  175. ]
  176. },
  177. {
  178. "opname" : "Asinh",
  179. "opcode" : 22,
  180. "operands" : [
  181. { "kind" : "IdRef", "name" : "'x'" }
  182. ]
  183. },
  184. {
  185. "opname" : "Acosh",
  186. "opcode" : 23,
  187. "operands" : [
  188. { "kind" : "IdRef", "name" : "'x'" }
  189. ]
  190. },
  191. {
  192. "opname" : "Atanh",
  193. "opcode" : 24,
  194. "operands" : [
  195. { "kind" : "IdRef", "name" : "'x'" }
  196. ]
  197. },
  198. {
  199. "opname" : "Atan2",
  200. "opcode" : 25,
  201. "operands" : [
  202. { "kind" : "IdRef", "name" : "'y'" },
  203. { "kind" : "IdRef", "name" : "'x'" }
  204. ]
  205. },
  206. {
  207. "opname" : "Pow",
  208. "opcode" : 26,
  209. "operands" : [
  210. { "kind" : "IdRef", "name" : "'x'" },
  211. { "kind" : "IdRef", "name" : "'y'" }
  212. ]
  213. },
  214. {
  215. "opname" : "Exp",
  216. "opcode" : 27,
  217. "operands" : [
  218. { "kind" : "IdRef", "name" : "'x'" }
  219. ]
  220. },
  221. {
  222. "opname" : "Log",
  223. "opcode" : 28,
  224. "operands" : [
  225. { "kind" : "IdRef", "name" : "'x'" }
  226. ]
  227. },
  228. {
  229. "opname" : "Exp2",
  230. "opcode" : 29,
  231. "operands" : [
  232. { "kind" : "IdRef", "name" : "'x'" }
  233. ]
  234. },
  235. {
  236. "opname" : "Log2",
  237. "opcode" : 30,
  238. "operands" : [
  239. { "kind" : "IdRef", "name" : "'x'" }
  240. ]
  241. },
  242. {
  243. "opname" : "Sqrt",
  244. "opcode" : 31,
  245. "operands" : [
  246. { "kind" : "IdRef", "name" : "'x'" }
  247. ]
  248. },
  249. {
  250. "opname" : "InverseSqrt",
  251. "opcode" : 32,
  252. "operands" : [
  253. { "kind" : "IdRef", "name" : "'x'" }
  254. ]
  255. },
  256. {
  257. "opname" : "Determinant",
  258. "opcode" : 33,
  259. "operands" : [
  260. { "kind" : "IdRef", "name" : "'x'" }
  261. ]
  262. },
  263. {
  264. "opname" : "MatrixInverse",
  265. "opcode" : 34,
  266. "operands" : [
  267. { "kind" : "IdRef", "name" : "'x'" }
  268. ]
  269. },
  270. {
  271. "opname" : "Modf",
  272. "opcode" : 35,
  273. "operands" : [
  274. { "kind" : "IdRef", "name" : "'x'" },
  275. { "kind" : "IdRef", "name" : "'i'" }
  276. ]
  277. },
  278. {
  279. "opname" : "ModfStruct",
  280. "opcode" : 36,
  281. "operands" : [
  282. { "kind" : "IdRef", "name" : "'x'" }
  283. ]
  284. },
  285. {
  286. "opname" : "FMin",
  287. "opcode" : 37,
  288. "operands" : [
  289. { "kind" : "IdRef", "name" : "'x'" },
  290. { "kind" : "IdRef", "name" : "'y'" }
  291. ]
  292. },
  293. {
  294. "opname" : "UMin",
  295. "opcode" : 38,
  296. "operands" : [
  297. { "kind" : "IdRef", "name" : "'x'" },
  298. { "kind" : "IdRef", "name" : "'y'" }
  299. ]
  300. },
  301. {
  302. "opname" : "SMin",
  303. "opcode" : 39,
  304. "operands" : [
  305. { "kind" : "IdRef", "name" : "'x'" },
  306. { "kind" : "IdRef", "name" : "'y'" }
  307. ]
  308. },
  309. {
  310. "opname" : "FMax",
  311. "opcode" : 40,
  312. "operands" : [
  313. { "kind" : "IdRef", "name" : "'x'" },
  314. { "kind" : "IdRef", "name" : "'y'" }
  315. ]
  316. },
  317. {
  318. "opname" : "UMax",
  319. "opcode" : 41,
  320. "operands" : [
  321. { "kind" : "IdRef", "name" : "'x'" },
  322. { "kind" : "IdRef", "name" : "'y'" }
  323. ]
  324. },
  325. {
  326. "opname" : "SMax",
  327. "opcode" : 42,
  328. "operands" : [
  329. { "kind" : "IdRef", "name" : "'x'" },
  330. { "kind" : "IdRef", "name" : "'y'" }
  331. ]
  332. },
  333. {
  334. "opname" : "FClamp",
  335. "opcode" : 43,
  336. "operands" : [
  337. { "kind" : "IdRef", "name" : "'x'" },
  338. { "kind" : "IdRef", "name" : "'minVal'" },
  339. { "kind" : "IdRef", "name" : "'maxVal'" }
  340. ]
  341. },
  342. {
  343. "opname" : "UClamp",
  344. "opcode" : 44,
  345. "operands" : [
  346. { "kind" : "IdRef", "name" : "'x'" },
  347. { "kind" : "IdRef", "name" : "'minVal'" },
  348. { "kind" : "IdRef", "name" : "'maxVal'" }
  349. ]
  350. },
  351. {
  352. "opname" : "SClamp",
  353. "opcode" : 45,
  354. "operands" : [
  355. { "kind" : "IdRef", "name" : "'x'" },
  356. { "kind" : "IdRef", "name" : "'minVal'" },
  357. { "kind" : "IdRef", "name" : "'maxVal'" }
  358. ]
  359. },
  360. {
  361. "opname" : "FMix",
  362. "opcode" : 46,
  363. "operands" : [
  364. { "kind" : "IdRef", "name" : "'x'" },
  365. { "kind" : "IdRef", "name" : "'y'" },
  366. { "kind" : "IdRef", "name" : "'a'" }
  367. ]
  368. },
  369. {
  370. "opname" : "IMix",
  371. "opcode" : 47,
  372. "operands" : [
  373. { "kind" : "IdRef", "name" : "'x'" },
  374. { "kind" : "IdRef", "name" : "'y'" },
  375. { "kind" : "IdRef", "name" : "'a'" }
  376. ]
  377. },
  378. {
  379. "opname" : "Step",
  380. "opcode" : 48,
  381. "operands" : [
  382. { "kind" : "IdRef", "name" : "'edge'" },
  383. { "kind" : "IdRef", "name" : "'x'" }
  384. ]
  385. },
  386. {
  387. "opname" : "SmoothStep",
  388. "opcode" : 49,
  389. "operands" : [
  390. { "kind" : "IdRef", "name" : "'edge0'" },
  391. { "kind" : "IdRef", "name" : "'edge1'" },
  392. { "kind" : "IdRef", "name" : "'x'" }
  393. ]
  394. },
  395. {
  396. "opname" : "Fma",
  397. "opcode" : 50,
  398. "operands" : [
  399. { "kind" : "IdRef", "name" : "'a'" },
  400. { "kind" : "IdRef", "name" : "'b'" },
  401. { "kind" : "IdRef", "name" : "'c'" }
  402. ]
  403. },
  404. {
  405. "opname" : "Frexp",
  406. "opcode" : 51,
  407. "operands" : [
  408. { "kind" : "IdRef", "name" : "'x'" },
  409. { "kind" : "IdRef", "name" : "'exp'" }
  410. ]
  411. },
  412. {
  413. "opname" : "FrexpStruct",
  414. "opcode" : 52,
  415. "operands" : [
  416. { "kind" : "IdRef", "name" : "'x'" }
  417. ]
  418. },
  419. {
  420. "opname" : "Ldexp",
  421. "opcode" : 53,
  422. "operands" : [
  423. { "kind" : "IdRef", "name" : "'x'" },
  424. { "kind" : "IdRef", "name" : "'exp'" }
  425. ]
  426. },
  427. {
  428. "opname" : "PackSnorm4x8",
  429. "opcode" : 54,
  430. "operands" : [
  431. { "kind" : "IdRef", "name" : "'v'" }
  432. ]
  433. },
  434. {
  435. "opname" : "PackUnorm4x8",
  436. "opcode" : 55,
  437. "operands" : [
  438. { "kind" : "IdRef", "name" : "'v'" }
  439. ]
  440. },
  441. {
  442. "opname" : "PackSnorm2x16",
  443. "opcode" : 56,
  444. "operands" : [
  445. { "kind" : "IdRef", "name" : "'v'" }
  446. ]
  447. },
  448. {
  449. "opname" : "PackUnorm2x16",
  450. "opcode" : 57,
  451. "operands" : [
  452. { "kind" : "IdRef", "name" : "'v'" }
  453. ]
  454. },
  455. {
  456. "opname" : "PackHalf2x16",
  457. "opcode" : 58,
  458. "operands" : [
  459. { "kind" : "IdRef", "name" : "'v'" }
  460. ]
  461. },
  462. {
  463. "opname" : "PackDouble2x32",
  464. "opcode" : 59,
  465. "operands" : [
  466. { "kind" : "IdRef", "name" : "'v'" }
  467. ],
  468. "capabilities" : [ "Float64" ]
  469. },
  470. {
  471. "opname" : "UnpackSnorm2x16",
  472. "opcode" : 60,
  473. "operands" : [
  474. { "kind" : "IdRef", "name" : "'p'" }
  475. ]
  476. },
  477. {
  478. "opname" : "UnpackUnorm2x16",
  479. "opcode" : 61,
  480. "operands" : [
  481. { "kind" : "IdRef", "name" : "'p'" }
  482. ]
  483. },
  484. {
  485. "opname" : "UnpackHalf2x16",
  486. "opcode" : 62,
  487. "operands" : [
  488. { "kind" : "IdRef", "name" : "'v'" }
  489. ]
  490. },
  491. {
  492. "opname" : "UnpackSnorm4x8",
  493. "opcode" : 63,
  494. "operands" : [
  495. { "kind" : "IdRef", "name" : "'p'" }
  496. ]
  497. },
  498. {
  499. "opname" : "UnpackUnorm4x8",
  500. "opcode" : 64,
  501. "operands" : [
  502. { "kind" : "IdRef", "name" : "'p'" }
  503. ]
  504. },
  505. {
  506. "opname" : "UnpackDouble2x32",
  507. "opcode" : 65,
  508. "operands" : [
  509. { "kind" : "IdRef", "name" : "'v'" }
  510. ],
  511. "capabilities" : [ "Float64" ]
  512. },
  513. {
  514. "opname" : "Length",
  515. "opcode" : 66,
  516. "operands" : [
  517. { "kind" : "IdRef", "name" : "'x'" }
  518. ]
  519. },
  520. {
  521. "opname" : "Distance",
  522. "opcode" : 67,
  523. "operands" : [
  524. { "kind" : "IdRef", "name" : "'p0'" },
  525. { "kind" : "IdRef", "name" : "'p1'" }
  526. ]
  527. },
  528. {
  529. "opname" : "Cross",
  530. "opcode" : 68,
  531. "operands" : [
  532. { "kind" : "IdRef", "name" : "'x'" },
  533. { "kind" : "IdRef", "name" : "'y'" }
  534. ]
  535. },
  536. {
  537. "opname" : "Normalize",
  538. "opcode" : 69,
  539. "operands" : [
  540. { "kind" : "IdRef", "name" : "'x'" }
  541. ]
  542. },
  543. {
  544. "opname" : "FaceForward",
  545. "opcode" : 70,
  546. "operands" : [
  547. { "kind" : "IdRef", "name" : "'N'" },
  548. { "kind" : "IdRef", "name" : "'I'" },
  549. { "kind" : "IdRef", "name" : "'Nref'" }
  550. ]
  551. },
  552. {
  553. "opname" : "Reflect",
  554. "opcode" : 71,
  555. "operands" : [
  556. { "kind" : "IdRef", "name" : "'I'" },
  557. { "kind" : "IdRef", "name" : "'N'" }
  558. ]
  559. },
  560. {
  561. "opname" : "Refract",
  562. "opcode" : 72,
  563. "operands" : [
  564. { "kind" : "IdRef", "name" : "'I'" },
  565. { "kind" : "IdRef", "name" : "'N'" },
  566. { "kind" : "IdRef", "name" : "'eta'" }
  567. ]
  568. },
  569. {
  570. "opname" : "FindILsb",
  571. "opcode" : 73,
  572. "operands" : [
  573. { "kind" : "IdRef", "name" : "'Value'" }
  574. ]
  575. },
  576. {
  577. "opname" : "FindSMsb",
  578. "opcode" : 74,
  579. "operands" : [
  580. { "kind" : "IdRef", "name" : "'Value'" }
  581. ]
  582. },
  583. {
  584. "opname" : "FindUMsb",
  585. "opcode" : 75,
  586. "operands" : [
  587. { "kind" : "IdRef", "name" : "'Value'" }
  588. ]
  589. },
  590. {
  591. "opname" : "InterpolateAtCentroid",
  592. "opcode" : 76,
  593. "operands" : [
  594. { "kind" : "IdRef", "name" : "'interpolant'" }
  595. ],
  596. "capabilities" : [ "InterpolationFunction" ]
  597. },
  598. {
  599. "opname" : "InterpolateAtSample",
  600. "opcode" : 77,
  601. "operands" : [
  602. { "kind" : "IdRef", "name" : "'interpolant'" },
  603. { "kind" : "IdRef", "name" : "'sample'" }
  604. ],
  605. "capabilities" : [ "InterpolationFunction" ]
  606. },
  607. {
  608. "opname" : "InterpolateAtOffset",
  609. "opcode" : 78,
  610. "operands" : [
  611. { "kind" : "IdRef", "name" : "'interpolant'" },
  612. { "kind" : "IdRef", "name" : "'offset'" }
  613. ],
  614. "capabilities" : [ "InterpolationFunction" ]
  615. },
  616. {
  617. "opname" : "NMin",
  618. "opcode" : 79,
  619. "operands" : [
  620. { "kind" : "IdRef", "name" : "'x'" },
  621. { "kind" : "IdRef", "name" : "'y'" }
  622. ]
  623. },
  624. {
  625. "opname" : "NMax",
  626. "opcode" : 80,
  627. "operands" : [
  628. { "kind" : "IdRef", "name" : "'x'" },
  629. { "kind" : "IdRef", "name" : "'y'" }
  630. ]
  631. },
  632. {
  633. "opname" : "NClamp",
  634. "opcode" : 81,
  635. "operands" : [
  636. { "kind" : "IdRef", "name" : "'x'" },
  637. { "kind" : "IdRef", "name" : "'minVal'" },
  638. { "kind" : "IdRef", "name" : "'maxVal'" }
  639. ]
  640. }
  641. ]
  642. }