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}
643