| { | 
 |   "copyright" : [ | 
 |     "Copyright (c) 2014-2016 The Khronos Group Inc.", | 
 |     "", | 
 |     "Permission is hereby granted, free of charge, to any person obtaining a copy", | 
 |     "of this software and/or associated documentation files (the \"Materials\"),", | 
 |     "to deal in the Materials without restriction, including without limitation", | 
 |     "the rights to use, copy, modify, merge, publish, distribute, sublicense,", | 
 |     "and/or sell copies of the Materials, and to permit persons to whom the", | 
 |     "Materials are furnished to do so, subject to the following conditions:", | 
 |     "", | 
 |     "The above copyright notice and this permission notice shall be included in", | 
 |     "all copies or substantial portions of the Materials.", | 
 |     "", | 
 |     "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS", | 
 |     "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND", | 
 |     "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ", | 
 |     "", | 
 |     "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS", | 
 |     "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,", | 
 |     "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL", | 
 |     "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER", | 
 |     "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING", | 
 |     "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS", | 
 |     "IN THE MATERIALS." | 
 |   ], | 
 |   "version" : 100, | 
 |   "revision" : 2, | 
 |   "instructions" : [ | 
 |     { | 
 |       "opname" : "Round", | 
 |       "opcode" : 1, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "RoundEven", | 
 |       "opcode" : 2, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Trunc", | 
 |       "opcode" : 3, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FAbs", | 
 |       "opcode" : 4, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "SAbs", | 
 |       "opcode" : 5, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FSign", | 
 |       "opcode" : 6, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "SSign", | 
 |       "opcode" : 7, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Floor", | 
 |       "opcode" : 8, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Ceil", | 
 |       "opcode" : 9, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Fract", | 
 |       "opcode" : 10, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Radians", | 
 |       "opcode" : 11, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'degrees'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Degrees", | 
 |       "opcode" : 12, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'radians'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Sin", | 
 |       "opcode" : 13, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Cos", | 
 |       "opcode" : 14, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Tan", | 
 |       "opcode" : 15, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Asin", | 
 |       "opcode" : 16, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Acos", | 
 |       "opcode" : 17, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Atan", | 
 |       "opcode" : 18, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'y_over_x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Sinh", | 
 |       "opcode" : 19, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Cosh", | 
 |       "opcode" : 20, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Tanh", | 
 |       "opcode" : 21, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Asinh", | 
 |       "opcode" : 22, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Acosh", | 
 |       "opcode" : 23, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Atanh", | 
 |       "opcode" : 24, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Atan2", | 
 |       "opcode" : 25, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'y'" }, | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Pow", | 
 |       "opcode" : 26, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Exp", | 
 |       "opcode" : 27, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Log", | 
 |       "opcode" : 28, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Exp2", | 
 |       "opcode" : 29, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Log2", | 
 |       "opcode" : 30, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Sqrt", | 
 |       "opcode" : 31, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "InverseSqrt", | 
 |       "opcode" : 32, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Determinant", | 
 |       "opcode" : 33, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "MatrixInverse", | 
 |       "opcode" : 34, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Modf", | 
 |       "opcode" : 35, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'i'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "ModfStruct", | 
 |       "opcode" : 36, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FMin", | 
 |       "opcode" : 37, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "UMin", | 
 |       "opcode" : 38, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "SMin", | 
 |       "opcode" : 39, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FMax", | 
 |       "opcode" : 40, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "UMax", | 
 |       "opcode" : 41, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "SMax", | 
 |       "opcode" : 42, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FClamp", | 
 |       "opcode" : 43, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'minVal'" }, | 
 |         { "kind" : "IdRef", "name" : "'maxVal'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "UClamp", | 
 |       "opcode" : 44, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'minVal'" }, | 
 |         { "kind" : "IdRef", "name" : "'maxVal'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "SClamp", | 
 |       "opcode" : 45, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'minVal'" }, | 
 |         { "kind" : "IdRef", "name" : "'maxVal'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FMix", | 
 |       "opcode" : 46, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" }, | 
 |         { "kind" : "IdRef", "name" : "'a'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "IMix", | 
 |       "opcode" : 47, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" }, | 
 |         { "kind" : "IdRef", "name" : "'a'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Step", | 
 |       "opcode" : 48, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'edge'" }, | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "SmoothStep", | 
 |       "opcode" : 49, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'edge0'" }, | 
 |         { "kind" : "IdRef", "name" : "'edge1'" }, | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Fma", | 
 |       "opcode" : 50, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'a'" }, | 
 |         { "kind" : "IdRef", "name" : "'b'" }, | 
 |         { "kind" : "IdRef", "name" : "'c'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Frexp", | 
 |       "opcode" : 51, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'exp'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FrexpStruct", | 
 |       "opcode" : 52, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Ldexp", | 
 |       "opcode" : 53, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'exp'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "PackSnorm4x8", | 
 |       "opcode" : 54, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'v'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "PackUnorm4x8", | 
 |       "opcode" : 55, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'v'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "PackSnorm2x16", | 
 |       "opcode" : 56, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'v'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "PackUnorm2x16", | 
 |       "opcode" : 57, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'v'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "PackHalf2x16", | 
 |       "opcode" : 58, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'v'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "PackDouble2x32", | 
 |       "opcode" : 59, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'v'" } | 
 |       ], | 
 |       "capabilities" : [ "Float64" ] | 
 |     }, | 
 |     { | 
 |       "opname" : "UnpackSnorm2x16", | 
 |       "opcode" : 60, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'p'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "UnpackUnorm2x16", | 
 |       "opcode" : 61, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'p'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "UnpackHalf2x16", | 
 |       "opcode" : 62, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'v'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "UnpackSnorm4x8", | 
 |       "opcode" : 63, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'p'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "UnpackUnorm4x8", | 
 |       "opcode" : 64, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'p'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "UnpackDouble2x32", | 
 |       "opcode" : 65, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'v'" } | 
 |       ], | 
 |       "capabilities" : [ "Float64" ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Length", | 
 |       "opcode" : 66, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Distance", | 
 |       "opcode" : 67, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'p0'" }, | 
 |         { "kind" : "IdRef", "name" : "'p1'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Cross", | 
 |       "opcode" : 68, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Normalize", | 
 |       "opcode" : 69, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FaceForward", | 
 |       "opcode" : 70, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'N'" }, | 
 |         { "kind" : "IdRef", "name" : "'I'" }, | 
 |         { "kind" : "IdRef", "name" : "'Nref'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Reflect", | 
 |       "opcode" : 71, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'I'" }, | 
 |         { "kind" : "IdRef", "name" : "'N'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "Refract", | 
 |       "opcode" : 72, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'I'" }, | 
 |         { "kind" : "IdRef", "name" : "'N'" }, | 
 |         { "kind" : "IdRef", "name" : "'eta'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FindILsb", | 
 |       "opcode" : 73, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'Value'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FindSMsb", | 
 |       "opcode" : 74, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'Value'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "FindUMsb", | 
 |       "opcode" : 75, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'Value'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "InterpolateAtCentroid", | 
 |       "opcode" : 76, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'interpolant'" } | 
 |       ], | 
 |       "capabilities" : [ "InterpolationFunction" ] | 
 |     }, | 
 |     { | 
 |       "opname" : "InterpolateAtSample", | 
 |       "opcode" : 77, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'interpolant'" }, | 
 |         { "kind" : "IdRef", "name" : "'sample'" } | 
 |       ], | 
 |       "capabilities" : [ "InterpolationFunction" ] | 
 |     }, | 
 |     { | 
 |       "opname" : "InterpolateAtOffset", | 
 |       "opcode" : 78, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'interpolant'" }, | 
 |         { "kind" : "IdRef", "name" : "'offset'" } | 
 |       ], | 
 |       "capabilities" : [ "InterpolationFunction" ] | 
 |     }, | 
 |     { | 
 |       "opname" : "NMin", | 
 |       "opcode" : 79, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "NMax", | 
 |       "opcode" : 80, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'y'" } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "opname" : "NClamp", | 
 |       "opcode" : 81, | 
 |       "operands" : [ | 
 |         { "kind" : "IdRef", "name" : "'x'" }, | 
 |         { "kind" : "IdRef", "name" : "'minVal'" }, | 
 |         { "kind" : "IdRef", "name" : "'maxVal'" } | 
 |       ] | 
 |     } | 
 |   ] | 
 | } |