diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2023-02-03 12:18:49 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-03 12:18:49 +0800 |
| commit | a00dc69ca8dfbc346940c7d03d67c1cb229577fb (patch) | |
| tree | ce102791bfe2b052edb4e4fc3453a92fc53fb3a8 /source | |
| parent | bbd1e1786401bb88c34802b987d4da72e2364503 (diff) | |
Use SPIR-V opcode names rather than numbers (#2571)
* s/emititng blobal/emitting global
* Use SPIR-V opcode names rather than numbers
* regenerate Visual Studio project files
* Use names for extended SPIR-V GLSL instructions
* Add missing operand for SPIR-V extended instruction
* Add warning aginst modifying generated hashing files
* Squash warnings on MSVC
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 240 | ||||
| -rw-r--r-- | source/slang/slang-emit-spirv.cpp | 7 | ||||
| -rw-r--r-- | source/slang/slang-ir-spirv-snippet.cpp | 75 | ||||
| -rw-r--r-- | source/slang/slang-lookup-glslstd450.cpp | 137 | ||||
| -rw-r--r-- | source/slang/slang-lookup-spirv.h | 10 | ||||
| -rw-r--r-- | source/slang/slang-lookup-spvop.cpp | 762 |
6 files changed, 1101 insertions, 130 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index ed150a4c0..f5b138f25 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -221,14 +221,14 @@ struct StructuredBuffer out uint stride); __target_intrinsic(glsl, "$0._data[$1]") - __target_intrinsic(spirv_direct, "%addr = 65 resultType*StorageBuffer resultId _0 const(int, 0) _1; 61 resultType resultId %addr;") + __target_intrinsic(spirv_direct, "%addr = OpAccessChain resultType*StorageBuffer resultId _0 const(int, 0) _1; OpLoad resultType resultId %addr;") T Load(int location); T Load(int location, out uint status); __subscript(uint index) -> T { __target_intrinsic(glsl, "$0._data[$1]") - __target_intrinsic(spirv_direct, "%addr = 65 resultType*StorageBuffer resultId _0 const(int, 0) _1; 61 resultType resultId %addr;") + __target_intrinsic(spirv_direct, "%addr = OpAccessChain resultType*StorageBuffer resultId _0 const(int, 0) _1; OpLoad resultType resultId %addr;") get; }; }; @@ -697,14 +697,14 @@ struct $(item.name) uint IncrementCounter(); __target_intrinsic(glsl, "$0._data[$1]") - __target_intrinsic(spirv_direct, "%addr = 65 resultType*StorageBuffer resultId _0 const(int, 0) _1; 61 resultType resultId %addr;") + __target_intrinsic(spirv_direct, "%addr = OpAccessChain resultType*StorageBuffer resultId _0 const(int, 0) _1; OpLoad resultType resultId %addr;") T Load(int location); T Load(int location, out uint status); __subscript(uint index) -> T { __target_intrinsic(glsl, "$0._data[$1]") - __target_intrinsic(spirv_direct, "*StorageBuffer 65 resultType resultId _0 const(int, 0) _1") + __target_intrinsic(spirv_direct, "*StorageBuffer OpAccessChain resultType resultId _0 const(int, 0) _1") ref; } }; @@ -797,7 +797,7 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_abs($0)") __target_intrinsic(cpp, "$P_abs($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fi(4,5) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fi(FAbs, SAbs) _0") T abs(T x); /*{ // Note: this simple definition may not be appropriate for floating-point inputs @@ -807,7 +807,7 @@ T abs(T x); __generic<T : __BuiltinIntegerType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fi(4,5) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fi(FAbs, SAbs) _0") vector<T, N> abs(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, abs, x); @@ -825,13 +825,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_abs($0)") __target_intrinsic(cpp, "$P_abs($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fi(4,5) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fi(FAbs, SAbs) _0") T abs(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fi(4,5) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fi(FAbs, SAbs) _0") vector<T, N> abs(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, abs, x); @@ -851,13 +851,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_acos($0)") __target_intrinsic(cpp, "$P_acos($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 17 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Acos _0") T acos(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 17 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Acos _0") vector<T, N> acos(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, acos, x); @@ -952,7 +952,7 @@ bool any(matrix<T, N, M> x); __target_intrinsic(hlsl) __target_intrinsic(glsl, "packDouble2x32(uvec2($0, $1))") -__target_intrinsic(spirv_direct, "%v = 80 _type(uint2) resultId _0 _1; 12 resultType resultId glsl450 59 %v") +__target_intrinsic(spirv_direct, "%v = OpCompositeConstruct _type(uint2) resultId _0 _1; OpExtInst resultType resultId glsl450 59 %v") __glsl_extension(GL_ARB_gpu_shader5) double asdouble(uint lowbits, uint highbits); @@ -960,18 +960,18 @@ double asdouble(uint lowbits, uint highbits); __target_intrinsic(hlsl) __target_intrinsic(glsl, "intBitsToFloat") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") float asfloat(int x); __target_intrinsic(hlsl) __target_intrinsic(glsl, "uintBitsToFloat") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") float asfloat(uint x); __generic<let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "intBitsToFloat") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") vector<float, N> asfloat(vector< int, N> x) { VECTOR_MAP_UNARY(float, N, asfloat, x); @@ -980,7 +980,7 @@ vector<float, N> asfloat(vector< int, N> x) __generic<let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "uintBitsToFloat") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") vector<float,N> asfloat(vector<uint,N> x) { VECTOR_MAP_UNARY(float, N, asfloat, x); @@ -1021,13 +1021,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_asin($0)") __target_intrinsic(cpp, "$P_asin($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 16 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Asin _0") T asin(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 16 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Asin _0") vector<T, N> asin(vector<T, N> x) { VECTOR_MAP_UNARY(T,N,asin,x); @@ -1044,18 +1044,18 @@ matrix<T, N, M> asin(matrix<T, N, M> x) __target_intrinsic(hlsl) __target_intrinsic(glsl, "floatBitsToInt") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") int asint(float x); __target_intrinsic(hlsl) __target_intrinsic(glsl, "int($0)") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") int asint(uint x); __generic<let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "floatBitsToInt") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") vector<int, N> asint(vector<float, N> x) { VECTOR_MAP_UNARY(int, N, asint, x); @@ -1064,7 +1064,7 @@ vector<int, N> asint(vector<float, N> x) __generic<let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "ivec$N0($0)") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") vector<int, N> asint(vector<uint, N> x) { VECTOR_MAP_UNARY(int, N, asint, x); @@ -1110,18 +1110,18 @@ void asuint(double value, out uint lowbits, out uint highbits); __target_intrinsic(hlsl) __target_intrinsic(glsl, "floatBitsToUint") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") uint asuint(float x); __target_intrinsic(hlsl) __target_intrinsic(glsl, "uint($0)") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") uint asuint(int x); __generic<let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "floatBitsToUint") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") vector<uint,N> asuint(vector<float,N> x) { VECTOR_MAP_UNARY(uint, N, asuint, x); @@ -1130,7 +1130,7 @@ vector<uint,N> asuint(vector<float,N> x) __generic<let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "uvec$N0($0)") -__target_intrinsic(spirv_direct, "124 resultType resultId _0") +__target_intrinsic(spirv_direct, "OpBitcast resultType resultId _0") vector<uint, N> asuint(vector<int, N> x) { VECTOR_MAP_UNARY(uint, N, asuint, x); @@ -1242,13 +1242,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_atan($0)") __target_intrinsic(cpp, "$P_atan($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 18 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Atan _0") T atan(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 18 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Atan _0") vector<T, N> atan(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, atan, x); @@ -1266,13 +1266,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl,"atan($0,$1)") __target_intrinsic(cuda, "$P_atan2($0, $1)") __target_intrinsic(cpp, "$P_atan2($0, $1)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 25 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Atan2 _0 _1") T atan2(T y, T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl,"atan($0,$1)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 25 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Atan2 _0 _1") vector<T, N> atan2(vector<T, N> y, vector<T, N> x) { VECTOR_MAP_BINARY(T, N, atan2, y, x); @@ -1291,13 +1291,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_ceil($0)") __target_intrinsic(cpp, "$P_ceil($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 9 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Ceil _0") T ceil(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 9 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Ceil _0") vector<T, N> ceil(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, ceil, x); @@ -1318,7 +1318,7 @@ bool CheckAccessFullyMapped(uint status); __generic<T : __BuiltinIntegerType> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(43,44,45) _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FClamp, UClamp, SClamp) _0 _1 _2") T clamp(T x, T minBound, T maxBound) { return min(max(x, minBound), maxBound); @@ -1327,7 +1327,7 @@ T clamp(T x, T minBound, T maxBound) __generic<T : __BuiltinIntegerType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(43,44,45) _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FClamp, UClamp, SClamp) _0 _1 _2") vector<T, N> clamp(vector<T, N> x, vector<T, N> minBound, vector<T, N> maxBound) { return min(max(x, minBound), maxBound); @@ -1343,7 +1343,7 @@ matrix<T,N,M> clamp(matrix<T,N,M> x, matrix<T,N,M> minBound, matrix<T,N,M> maxBo __generic<T : __BuiltinFloatingPointType> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(43,44,45) _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FClamp, UClamp, SClamp) _0 _1 _2") T clamp(T x, T minBound, T maxBound) { return min(max(x, minBound), maxBound); @@ -1352,7 +1352,7 @@ T clamp(T x, T minBound, T maxBound) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(43,44,45) _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FClamp, UClamp, SClamp) _0 _1 _2") vector<T, N> clamp(vector<T, N> x, vector<T, N> minBound, vector<T, N> maxBound) { return min(max(x, minBound), maxBound); @@ -1393,13 +1393,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_cos($0)") __target_intrinsic(cpp, "$P_cos($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 14 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Cos _0") T cos(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 14 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Cos _0") vector<T, N> cos(vector<T, N> x) { VECTOR_MAP_UNARY(T,N, cos, x); @@ -1418,13 +1418,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_cosh($0)") __target_intrinsic(cpp, "$P_cosh($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 20 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Cosh _0") T cosh(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 20 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Cosh _0") vector<T,N> cosh(vector<T,N> x) { VECTOR_MAP_UNARY(T,N, cosh, x); @@ -1449,7 +1449,7 @@ uint countbits(uint value); __generic<T : __BuiltinArithmeticType> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 68 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Cross _0 _1") vector<T,3> cross(vector<T,3> left, vector<T,3> right) { return vector<T,3>( @@ -1599,7 +1599,7 @@ matrix<T, N, M> ddy_fine(matrix<T, N, M> x) __generic<T : __BuiltinFloatingPointType> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 12 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Degrees _0") T degrees(T x) { return x * (T(180) / T.getPi()); @@ -1608,7 +1608,7 @@ T degrees(T x) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 12 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Degrees _0") vector<T, N> degrees(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, degrees, x); @@ -1626,7 +1626,7 @@ matrix<T, N, M> degrees(matrix<T, N, M> x) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 33 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Determinant _0") T determinant(matrix<T,N,N> m); // Barrier for device memory @@ -1643,7 +1643,7 @@ void DeviceMemoryBarrierWithGroupSync(); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 67 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Distance _0 _1") T distance(vector<T, N> x, vector<T, N> y) { return length(x - y); @@ -1695,12 +1695,12 @@ RWStructuredBuffer<T> __getEquivalentStructuredBuffer<T>(RWByteAddressBuffer b); __generic<T : __BuiltinArithmeticType> __target_intrinsic(glsl, interpolateAtCentroid) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 76 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 InterpolateAtCentroid _0") T EvaluateAttributeAtCentroid(T x); __generic<T : __BuiltinArithmeticType, let N : int> __target_intrinsic(glsl, interpolateAtCentroid) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 76 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 InterpolateAtCentroid _0") vector<T,N> EvaluateAttributeAtCentroid(vector<T,N> x); __generic<T : __BuiltinArithmeticType, let N : int, let M : int> @@ -1712,12 +1712,12 @@ matrix<T,N,M> EvaluateAttributeAtCentroid(matrix<T,N,M> x) __generic<T : __BuiltinArithmeticType> __target_intrinsic(glsl, "interpolateAtSample($0, int($1))") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 77 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 InterpolateAtSample _0 _1") T EvaluateAttributeAtSample(T x, uint sampleindex); __generic<T : __BuiltinArithmeticType, let N : int> __target_intrinsic(glsl, "interpolateAtSample($0, int($1))") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 77 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 InterpolateAtSample _0 _1") vector<T,N> EvaluateAttributeAtSample(vector<T,N> x, uint sampleindex); __generic<T : __BuiltinArithmeticType, let N : int, let M : int> @@ -1734,12 +1734,12 @@ matrix<T,N,M> EvaluateAttributeAtSample(matrix<T,N,M> x, uint sampleindex) __generic<T : __BuiltinArithmeticType> __target_intrinsic(glsl, "interpolateAtOffset($0, vec2($1) / 16.0f)") -__target_intrinsic(spirv_direct, "%foffset = 111 _type(float2) resultId _1; %offsetdiv16 = 136 _type(float2) resultId %foffset const(float2, 16.0, 16.0); 12 resultType resultId glsl450 78 _0 %offsetdiv16") +__target_intrinsic(spirv_direct, "%foffset = OpConvertSToF _type(float2) resultId _1; %offsetdiv16 = 136 _type(float2) resultId %foffset const(float2, 16.0, 16.0); OpExtInst resultType resultId glsl450 78 _0 %offsetdiv16") T EvaluateAttributeSnapped(T x, int2 offset); __generic<T : __BuiltinArithmeticType, let N : int> __target_intrinsic(glsl, "interpolateAtOffset($0, vec2($1) / 16.0f)") -__target_intrinsic(spirv_direct, "%foffset = 111 _type(float2) resultId _1; %offsetdiv16 = 136 _type(float2) resultId %foffset const(float2, 16.0, 16.0); 12 resultType resultId glsl450 78 _0 %offsetdiv16") +__target_intrinsic(spirv_direct, "%foffset = OpConvertSToF _type(float2) resultId _1; %offsetdiv16 = 136 _type(float2) resultId %foffset const(float2, 16.0, 16.0); OpExtInst resultType resultId glsl450 78 _0 %offsetdiv16") vector<T,N> EvaluateAttributeSnapped(vector<T,N> x, int2 offset); __generic<T : __BuiltinArithmeticType, let N : int, let M : int> @@ -1761,13 +1761,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_exp($0)") __target_intrinsic(cpp, "$P_exp($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 27 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Exp _0") T exp(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 27 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Exp _0") vector<T, N> exp(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, exp, x); @@ -1787,13 +1787,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_exp2($0)") __target_intrinsic(cpp, "$P_exp2($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 29 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Exp2 _0") T exp2(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 29 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Exp2 _0") vector<T,N> exp2(vector<T,N> x) { VECTOR_MAP_UNARY(T, N, exp2, x); @@ -1886,12 +1886,12 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl,"findMSB") __target_intrinsic(cuda, "$P_firstbithigh($0)") __target_intrinsic(cpp, "$P_firstbithigh($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 74 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FindSMsb _0") int firstbithigh(int value); __target_intrinsic(hlsl) __target_intrinsic(glsl,"findMSB") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 74 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FindSMsb _0") __generic<let N : int> vector<int, N> firstbithigh(vector<int, N> value) { @@ -1902,12 +1902,12 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl,"findMSB") __target_intrinsic(cuda, "$P_firstbithigh($0)") __target_intrinsic(cpp, "$P_firstbithigh($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 75 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FindUMsb _0") uint firstbithigh(uint value); __target_intrinsic(hlsl) __target_intrinsic(glsl,"findMSB") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 75 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FindUMsb _0") __generic<let N : int> vector<uint,N> firstbithigh(vector<uint,N> value) { @@ -1919,12 +1919,12 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl,"findLSB") __target_intrinsic(cuda, "$P_firstbitlow($0)") __target_intrinsic(cpp, "$P_firstbitlow($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 73 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FindILsb _0") int firstbitlow(int value); __target_intrinsic(hlsl) __target_intrinsic(glsl,"findLSB") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 73 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FindILsb _0") __generic<let N : int> vector<int,N> firstbitlow(vector<int,N> value) { @@ -1935,13 +1935,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl,"findLSB") __target_intrinsic(cuda, "$P_firstbitlow($0)") __target_intrinsic(cpp, "$P_firstbitlow($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 73 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FindILsb _0") uint firstbitlow(uint value); __target_intrinsic(hlsl) __target_intrinsic(glsl,"findLSB") __generic<let N : int> -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 73 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FindILsb _0") vector<uint,N> firstbitlow(vector<uint,N> value) { VECTOR_MAP_UNARY(uint, N, firstbitlow, value); @@ -1954,13 +1954,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_floor($0)") __target_intrinsic(cpp, "$P_floor($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 8 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Floor _0") T floor(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 8 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Floor _0") vector<T, N> floor(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, floor, x); @@ -1978,13 +1978,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_fma($0, $1, $2)") __target_intrinsic(cpp, "$P_fma($0, $1, $2)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 50 _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Fma _0 _1 _2") double fma(double a, double b, double c); __generic<let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 50 _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Fma _0 _1 _2") vector<double, N> fma(vector<double, N> a, vector<double, N> b, vector<double, N> c) { VECTOR_MAP_TRINARY(double, N, fma, a, b, c); @@ -2027,13 +2027,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl, fract) __target_intrinsic(cuda, "$P_frac($0)") __target_intrinsic(cpp, "$P_frac($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 10 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Fract _0") T frac(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, fract) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 10 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Fract _0") vector<T, N> frac(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, frac, x); @@ -2049,13 +2049,13 @@ matrix<T, N, M> frac(matrix<T, N, M> x) __generic<T : __BuiltinFloatingPointType> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 51 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Frexp _0 _1") T frexp(T x, out T exp); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 51 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Frexp _0 _1") vector<T, N> frexp(vector<T, N> x, out vector<T, N> exp) { VECTOR_MAP_BINARY(T, N, frexp, x, exp); @@ -2367,7 +2367,7 @@ matrix<bool, N, M> isnan(matrix<T, N, M> x) __generic<T : __BuiltinFloatingPointType> __target_intrinsic(hlsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 53 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Ldexp _0 _1") T ldexp(T x, T exp) { return x * exp2(exp); @@ -2375,7 +2375,7 @@ T ldexp(T x, T exp) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 53 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Ldexp _0 _1") vector<T, N> ldexp(vector<T, N> x, vector<T, N> exp) { return x * exp2(exp); @@ -2392,7 +2392,7 @@ matrix<T, N, M> ldexp(matrix<T, N, M> x, matrix<T, N, M> exp) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 66 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Length _0") T length(vector<T, N> x) { return sqrt(dot(x, x)); @@ -2402,7 +2402,7 @@ T length(vector<T, N> x) __generic<T : __BuiltinFloatingPointType> __target_intrinsic(hlsl) __target_intrinsic(glsl, mix) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 46 _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FMix _0 _1 _2") T lerp(T x, T y, T s) { return x * (T(1.0f) - s) + y * s; @@ -2411,7 +2411,7 @@ T lerp(T x, T y, T s) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, mix) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 46 _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 FMix _0 _1 _2") vector<T, N> lerp(vector<T, N> x, vector<T, N> y, vector<T, N> s) { return x * (T(1.0f) - s) + y * s; @@ -2440,13 +2440,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_log($0)") __target_intrinsic(cpp, "$P_log($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 28 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Log _0") T log(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 28 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Log _0") vector<T, N> log(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, log, x); @@ -2465,13 +2465,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl, "(log( $0 ) * $S0( 0.43429448190325182765112891891661) )" ) __target_intrinsic(cuda, "$P_log10($0)") __target_intrinsic(cpp, "$P_log10($0)") -__target_intrinsic(spirv_direct, "%baseElog = 12 resultType resultId glsl450 28 _0; 133 resultType resultId _0 %baseElog const(_p,0.43429448190325182765112891891661)") +__target_intrinsic(spirv_direct, "%baseElog = OpExtInst resultType resultId glsl450 Log _0; OpFMul resultType resultId _0 %baseElog const(_p,0.43429448190325182765112891891661)") T log10(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "(log( $0 ) * $S0(0.43429448190325182765112891891661) )" ) -__target_intrinsic(spirv_direct, "%baseElog = 12 resultType resultId glsl450 28 _0; 142 resultType resultId _0 %baseElog const(_p,0.43429448190325182765112891891661)") +__target_intrinsic(spirv_direct, "%baseElog = OpExtInst resultType resultId glsl450 Log _0; OpVectorTimesScalar resultType resultId _0 %baseElog const(_p,0.43429448190325182765112891891661)") vector<T,N> log10(vector<T,N> x) { VECTOR_MAP_UNARY(T, N, log10, x); @@ -2490,13 +2490,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_log2($0)") __target_intrinsic(cpp, "$P_log2($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 30 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Log2 _0") T log2(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 30 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Log2 _0") vector<T,N> log2(vector<T,N> x) { VECTOR_MAP_UNARY(T, N, log2, x); @@ -2516,13 +2516,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl, fma) __target_intrinsic(cuda, "$P_fma($0, $1, $2)") __target_intrinsic(cpp, "$P_fma($0, $1, $2)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 50 _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Fma _0 _1 _2") T mad(T mvalue, T avalue, T bvalue); __generic<T : __BuiltinArithmeticType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, fma) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 50 _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Fma _0 _1 _2") vector<T, N> mad(vector<T, N> mvalue, vector<T, N> avalue, vector<T, N> bvalue) { VECTOR_MAP_TRINARY(T, N, mad, mvalue, avalue, bvalue); @@ -2541,7 +2541,7 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_max($0, $1)") __target_intrinsic(cpp, "$P_max($0, $1)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(40,41,42) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FMax, UMax, SMax) _0") T max(T x, T y); // Note: a stdlib implementation of `max` (or `min`) will require splitting // floating-point and integer cases apart, because the floating-point @@ -2551,7 +2551,7 @@ T max(T x, T y); __generic<T : __BuiltinIntegerType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(40,41,42) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FMax, UMax, SMax) _0") vector<T, N> max(vector<T, N> x, vector<T, N> y) { VECTOR_MAP_BINARY(T, N, max, x, y); @@ -2569,13 +2569,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_max($0, $1)") __target_intrinsic(cpp, "$P_max($0, $1)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(40,41,42) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FMax, UMax, SMax) _0") T max(T x, T y); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(40,41,42) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FMax, UMax, SMax) _0") vector<T, N> max(vector<T, N> x, vector<T, N> y) { VECTOR_MAP_BINARY(T, N, max, x, y); @@ -2594,13 +2594,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_min($0, $1)") __target_intrinsic(cpp, "$P_min($0, $1)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(37,38,39) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FMin, UMin, SMin) _0") T min(T x, T y); __generic<T : __BuiltinIntegerType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(37,38,39) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FMin, UMin, SMin) _0") vector<T,N> min(vector<T,N> x, vector<T,N> y) { VECTOR_MAP_BINARY(T, N, min, x, y); @@ -2618,13 +2618,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_min($0, $1)") __target_intrinsic(cpp, "$P_min($0, $1)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(37,38,39) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FMin, UMin, SMin) _0") T min(T x, T y); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fus(37,38,39) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fus(FMin, UMin, SMin) _0") vector<T,N> min(vector<T,N> x, vector<T,N> y) { VECTOR_MAP_BINARY(T, N, min, x, y); @@ -2928,7 +2928,7 @@ int NonUniformResourceIndex(int index) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 69 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Normalize _0") vector<T,N> normalize(vector<T,N> x) { return x / length(x); @@ -2940,13 +2940,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_pow($0, $1)") __target_intrinsic(cpp, "$P_pow($0, $1)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 26 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Pow _0 _1") T pow(T x, T y); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 26 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Pow _0 _1") vector<T, N> pow(vector<T, N> x, vector<T, N> y) { VECTOR_MAP_BINARY(T, N, pow, x, y); @@ -3100,7 +3100,7 @@ void ProcessTriTessFactorsMin( __generic<T : __BuiltinFloatingPointType> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 11 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Radians _0") T radians(T x) { return x * (T.getPi() / T(180.0f)); @@ -3109,7 +3109,7 @@ T radians(T x) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 11 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Radians _0") vector<T, N> radians(vector<T, N> x) { return x * (T.getPi() / T(180.0f)); @@ -3148,7 +3148,7 @@ matrix<T, N, M> rcp(matrix<T, N, M> x) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 71 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Reflect _0 _1") vector<T,N> reflect(vector<T,N> i, vector<T,N> n) { return i - T(2) * dot(n,i) * n; @@ -3158,7 +3158,7 @@ vector<T,N> reflect(vector<T,N> i, vector<T,N> n) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 72 _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Refract _0 _1 _2") vector<T,N> refract(vector<T,N> i, vector<T,N> n, T eta) { let dotNI = dot(n,i); @@ -3187,13 +3187,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_round($0)") __target_intrinsic(cpp, "$P_round($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 1 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Round _0") T round(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 1 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Round _0") vector<T, N> round(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, round, x); @@ -3212,7 +3212,7 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl, "inversesqrt($0)") __target_intrinsic(cuda, "$P_rsqrt($0)") __target_intrinsic(cpp, "$P_rsqrt($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 32 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 InverseSqrt _0") T rsqrt(T x) { return T(1.0) / sqrt(x); @@ -3221,7 +3221,7 @@ T rsqrt(T x) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "inversesqrt($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 32 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 InverseSqrt _0") vector<T, N> rsqrt(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, rsqrt, x); @@ -3265,13 +3265,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl, "int(sign($0))") __target_intrinsic(cuda, "$P_sign($0)") __target_intrinsic(cpp, "$P_sign($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fi(6,7) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fi(FSign, SSign) _0") int sign(T x); __generic<T : __BuiltinSignedArithmeticType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "ivec$N0(sign($0))") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 fi(6,7) _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 fi(FSign, SSign) _0") vector<int, N> sign(vector<T, N> x) { VECTOR_MAP_UNARY(int, N, sign, x); @@ -3292,13 +3292,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_sin($0)") __target_intrinsic(cpp, "$P_sin($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 13 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Sin _0") T sin(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 13 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Sin _0") vector<T, N> sin(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, sin, x); @@ -3343,13 +3343,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_sinh($0)") __target_intrinsic(cpp, "$P_sinh($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 19 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Sinh _0") T sinh(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 19 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Sinh _0") vector<T, N> sinh(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, sinh, x); @@ -3366,7 +3366,7 @@ matrix<T, N, M> sinh(matrix<T, N, M> x) __generic<T : __BuiltinFloatingPointType> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 49 _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 SmoothStep _0 _1 _2") T smoothstep(T min, T max, T x) { let t = saturate((x - min) / (max - min)); @@ -3376,7 +3376,7 @@ T smoothstep(T min, T max, T x) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 49 _0 _1 _2") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 SmoothStep _0 _1 _2") vector<T, N> smoothstep(vector<T, N> min, vector<T, N> max, vector<T, N> x) { VECTOR_MAP_TRINARY(T, N, smoothstep, min, max, x); @@ -3395,13 +3395,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_sqrt($0)") __target_intrinsic(cpp, "$P_sqrt($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 31 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Sqrt _0") T sqrt(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 31 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Sqrt _0") vector<T, N> sqrt(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, sqrt, x); @@ -3418,7 +3418,7 @@ matrix<T, N, M> sqrt(matrix<T, N, M> x) __generic<T : __BuiltinFloatingPointType> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 48 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Step _0 _1") T step(T y, T x) { return x < y ? T(0.0f) : T(1.0f); @@ -3427,7 +3427,7 @@ T step(T y, T x) __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 48 _0 _1") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Step _0 _1") vector<T,N> step(vector<T,N> y, vector<T,N> x) { VECTOR_MAP_BINARY(T, N, step, y, x); @@ -3446,13 +3446,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_tan($0)") __target_intrinsic(cpp, "$P_tan($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 15 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Tan _0") T tan(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 15 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Tan _0") vector<T, N> tan(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, tan, x); @@ -3471,13 +3471,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_tanh($0)") __target_intrinsic(cpp, "$P_tanh($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 21 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Tanh _0") T tanh(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 21 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Tanh _0") vector<T,N> tanh(vector<T,N> x) { VECTOR_MAP_UNARY(T, N, tanh, x); @@ -3509,13 +3509,13 @@ __target_intrinsic(hlsl) __target_intrinsic(glsl) __target_intrinsic(cuda, "$P_trunc($0)") __target_intrinsic(cpp, "$P_trunc($0)") -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 3 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Trunc _0") T trunc(T x); __generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) -__target_intrinsic(spirv_direct, "12 resultType resultId glsl450 3 _0") +__target_intrinsic(spirv_direct, "OpExtInst resultType resultId glsl450 Trunc _0") vector<T, N> trunc(vector<T, N> x) { VECTOR_MAP_UNARY(T, N, trunc, x); diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp index 09ad3be58..47537b108 100644 --- a/source/slang/slang-emit-spirv.cpp +++ b/source/slang/slang-emit-spirv.cpp @@ -915,6 +915,7 @@ struct SPIRVEmitContext getSection(SpvLogicalSectionID::ExtIntInstImports), nullptr, SpvOpExtInstImport, + kResultID, UnownedStringSlice("GLSL.std.450")); return m_glsl450ExtInst; } @@ -1213,7 +1214,7 @@ struct SPIRVEmitContext // ... default: - SLANG_UNIMPLEMENTED_X("unhandled instruction opcode"); + SLANG_UNIMPLEMENTED_X("unhandled instruction opcode for global instruction"); UNREACHABLE_RETURN(nullptr); } } @@ -1568,7 +1569,7 @@ struct SPIRVEmitContext // The instructions that appear inside the basic blocks of // functions are what we will call "local" instructions. // - // When emititng blobal instructions, we usually have to + // When emitting global instructions, we usually have to // pick the right logical section to emit them into, while // for local instructions they will usually emit into // a known parent (the basic block that contains them). @@ -1579,7 +1580,7 @@ struct SPIRVEmitContext switch( inst->getOp() ) { default: - SLANG_UNIMPLEMENTED_X("unhandled instruction opcode"); + SLANG_UNIMPLEMENTED_X("unhandled instruction opcode for local instruction"); break; case kIROp_Specialize: return nullptr; diff --git a/source/slang/slang-ir-spirv-snippet.cpp b/source/slang/slang-ir-spirv-snippet.cpp index 5109d88c1..120c0accb 100644 --- a/source/slang/slang-ir-spirv-snippet.cpp +++ b/source/slang/slang-ir-spirv-snippet.cpp @@ -1,6 +1,7 @@ // slang-ir-spirv-snippet.cpp -#include"slang-ir-spirv-snippet.h" +#include "slang-ir-spirv-snippet.h" +#include "slang-lookup-spirv.h" #include "../core/slang-token-reader.h" namespace Slang @@ -60,8 +61,58 @@ RefPtr<SpvSnippet> SpvSnippet::parse(UnownedStringSlice definition) mapInstNameToIndex[instName] = (int)snippet->instructions.getCount(); tokenReader.Read(Slang::Misc::TokenType::OpAssign); } - inst.opCode = (SpvWord)tokenReader.ReadInt(); + SpvOp opCode; + switch (tokenReader.NextToken().Type) + { + case Slang::Misc::TokenType::IntLiteral: + opCode = (SpvOp)tokenReader.ReadInt(); + break; + case Slang::Misc::TokenType::Identifier: + { + auto opName = tokenReader.ReadWord(); + if(!lookupSpvOp(opName.getUnownedSlice(), opCode)) + { + throw Misc::TextFormatException( + "Text parsing error: Unrecognized SPIR-V opcode: " + opName); + } + break; + } + default: + throw Misc::TextFormatException( + "Text parsing error: SPIR-V intrinsics must begin with an integer or opcode name"); + } + inst.opCode = opCode; bool insideOperandList = true; + const bool isExtInst = inst.opCode == SpvOpExtInst; + bool isGLSLstd450OpcodeAllowed = false; + auto readExtInstOpcode = [&]() + { + switch (tokenReader.NextToken().Type) + { + case Slang::Misc::TokenType::IntLiteral: + return (SpvWord)tokenReader.ReadInt(); + break; + case Slang::Misc::TokenType::Identifier: + { + if(isGLSLstd450OpcodeAllowed) + { + auto opName = tokenReader.ReadWord(); + GLSLstd450 glslOpcode; + if(!lookupGLSLstd450(opName.getUnownedSlice(), glslOpcode)) + { + throw Misc::TextFormatException( + "Text parsing error: Unrecognized SPIR-V GLSLstd450 opcode: " + opName); + } + printf("BNBBB: %d\n", glslOpcode); + return (SpvWord)glslOpcode; + } + } + // fallthrough + default: + throw Misc::TextFormatException( + "Text parsing error: Failed to read SPIR-V ExtInst Opcode"); + } + }; while (insideOperandList) { ASMOperand operand = {ASMOperandType::SpvWord, 0, 0, 0}; @@ -115,14 +166,16 @@ RefPtr<SpvSnippet> SpvSnippet::parse(UnownedStringSlice definition) { operand.type = SpvSnippet::ASMOperandType::GLSL450ExtInstSet; inst.operands.add(operand); + // Allow the next token to be parsed as a glslsstd450 opcode + isGLSLstd450OpcodeAllowed = isExtInst; } else if (identifier == "fi") { operand.type = SpvSnippet::ASMOperandType::FloatIntegerSelection; tokenReader.Read("("); - operand.content = (SpvWord)tokenReader.ReadInt(); + operand.content = readExtInstOpcode(); tokenReader.Read(","); - operand.content2 = (SpvWord)tokenReader.ReadInt(); + operand.content2 = readExtInstOpcode(); tokenReader.Read(")"); inst.operands.add(operand); } @@ -130,11 +183,11 @@ RefPtr<SpvSnippet> SpvSnippet::parse(UnownedStringSlice definition) { operand.type = SpvSnippet::ASMOperandType::FloatUnsignedSignedSelection; tokenReader.Read("("); - operand.content = (SpvWord)tokenReader.ReadInt(); + operand.content = readExtInstOpcode(); tokenReader.Read(","); - operand.content2 = (SpvWord)tokenReader.ReadInt(); + operand.content2 = readExtInstOpcode(); tokenReader.Read(","); - operand.content3 = (SpvWord)tokenReader.ReadInt(); + operand.content3 = readExtInstOpcode(); tokenReader.Read(")"); inst.operands.add(operand); } @@ -183,6 +236,14 @@ RefPtr<SpvSnippet> SpvSnippet::parse(UnownedStringSlice definition) operand.content = (SpvWord)(snippet->constants.getCount() - 1); inst.operands.add(operand); } + else if(isGLSLstd450OpcodeAllowed) + { + GLSLstd450 glslstd450Opcode; + lookupGLSLstd450(identifier.getUnownedSlice(), glslstd450Opcode); + operand.type = SpvSnippet::ASMOperandType::SpvWord; + operand.content = (SpvWord)glslstd450Opcode; + inst.operands.add(operand); + } else { SLANG_ASSERT(!"Invalid SPV ASM operand."); diff --git a/source/slang/slang-lookup-glslstd450.cpp b/source/slang/slang-lookup-glslstd450.cpp new file mode 100644 index 000000000..46d683dbb --- /dev/null +++ b/source/slang/slang-lookup-glslstd450.cpp @@ -0,0 +1,137 @@ +// Hash function for GLSLstd450 +// +// This file was thoughtfully generated by a machine, +// don't even think about modifying it yourself! +// + +#include "../core/slang-common.h" +#include "../core/slang-string.h" +#include "spirv/unified1/GLSL.std.450.h" + + +namespace Slang +{ + +static const unsigned tableSalt[81] ={ + 2, 1, 5, 1, 1, 0, 1, 0, 3, 0, 3, 0, 0, 4, 6, 3, + 7, 8, 10, 32, 0, 0, 0, 1, 0, 21, 1, 0, 0, 66, 1, 18, + 2, 0, 0, 2, 0, 1, 0, 0, 3, 1, 1, 0, 0, 0, 0, 1, + 4, 2, 2, 0, 2, 0, 0, 2, 0, 2, 3, 0, 0, 1, 5, 4, + 0, 0, 0, 5, 4, 2, 1, 1, 0, 7, 5, 0, 14, 4, 10, 4, + 5 +}; + +struct KV +{ + const char* name; + GLSLstd450 value; +}; + +static const KV words[81] = +{ + {"FindSMsb", GLSLstd450FindSMsb}, + {"SClamp", GLSLstd450SClamp}, + {"UnpackHalf2x16", GLSLstd450UnpackHalf2x16}, + {"Normalize", GLSLstd450Normalize}, + {"Pow", GLSLstd450Pow}, + {"Ceil", GLSLstd450Ceil}, + {"InterpolateAtSample", GLSLstd450InterpolateAtSample}, + {"Cosh", GLSLstd450Cosh}, + {"SMax", GLSLstd450SMax}, + {"PackUnorm2x16", GLSLstd450PackUnorm2x16}, + {"ModfStruct", GLSLstd450ModfStruct}, + {"IMix", GLSLstd450IMix}, + {"Ldexp", GLSLstd450Ldexp}, + {"Atan", GLSLstd450Atan}, + {"Round", GLSLstd450Round}, + {"Cos", GLSLstd450Cos}, + {"UMin", GLSLstd450UMin}, + {"FClamp", GLSLstd450FClamp}, + {"PackHalf2x16", GLSLstd450PackHalf2x16}, + {"SAbs", GLSLstd450SAbs}, + {"FindUMsb", GLSLstd450FindUMsb}, + {"PackUnorm4x8", GLSLstd450PackUnorm4x8}, + {"UnpackDouble2x32", GLSLstd450UnpackDouble2x32}, + {"Fma", GLSLstd450Fma}, + {"RoundEven", GLSLstd450RoundEven}, + {"SmoothStep", GLSLstd450SmoothStep}, + {"Refract", GLSLstd450Refract}, + {"UnpackUnorm4x8", GLSLstd450UnpackUnorm4x8}, + {"NClamp", GLSLstd450NClamp}, + {"Trunc", GLSLstd450Trunc}, + {"Sin", GLSLstd450Sin}, + {"Asinh", GLSLstd450Asinh}, + {"Atanh", GLSLstd450Atanh}, + {"Length", GLSLstd450Length}, + {"Fract", GLSLstd450Fract}, + {"Asin", GLSLstd450Asin}, + {"Determinant", GLSLstd450Determinant}, + {"Floor", GLSLstd450Floor}, + {"SMin", GLSLstd450SMin}, + {"MatrixInverse", GLSLstd450MatrixInverse}, + {"Exp2", GLSLstd450Exp2}, + {"PackSnorm2x16", GLSLstd450PackSnorm2x16}, + {"FindILsb", GLSLstd450FindILsb}, + {"FMax", GLSLstd450FMax}, + {"NMin", GLSLstd450NMin}, + {"Frexp", GLSLstd450Frexp}, + {"InverseSqrt", GLSLstd450InverseSqrt}, + {"Atan2", GLSLstd450Atan2}, + {"InterpolateAtCentroid", GLSLstd450InterpolateAtCentroid}, + {"UClamp", GLSLstd450UClamp}, + {"FMix", GLSLstd450FMix}, + {"FaceForward", GLSLstd450FaceForward}, + {"Tan", GLSLstd450Tan}, + {"Modf", GLSLstd450Modf}, + {"Exp", GLSLstd450Exp}, + {"PackSnorm4x8", GLSLstd450PackSnorm4x8}, + {"UnpackUnorm2x16", GLSLstd450UnpackUnorm2x16}, + {"UMax", GLSLstd450UMax}, + {"FSign", GLSLstd450FSign}, + {"Distance", GLSLstd450Distance}, + {"UnpackSnorm2x16", GLSLstd450UnpackSnorm2x16}, + {"Log", GLSLstd450Log}, + {"PackDouble2x32", GLSLstd450PackDouble2x32}, + {"Sinh", GLSLstd450Sinh}, + {"UnpackSnorm4x8", GLSLstd450UnpackSnorm4x8}, + {"Cross", GLSLstd450Cross}, + {"NMax", GLSLstd450NMax}, + {"Acosh", GLSLstd450Acosh}, + {"Reflect", GLSLstd450Reflect}, + {"Degrees", GLSLstd450Degrees}, + {"Acos", GLSLstd450Acos}, + {"Radians", GLSLstd450Radians}, + {"Sqrt", GLSLstd450Sqrt}, + {"Tanh", GLSLstd450Tanh}, + {"InterpolateAtOffset", GLSLstd450InterpolateAtOffset}, + {"Step", GLSLstd450Step}, + {"FAbs", GLSLstd450FAbs}, + {"FrexpStruct", GLSLstd450FrexpStruct}, + {"Log2", GLSLstd450Log2}, + {"SSign", GLSLstd450SSign}, + {"FMin", GLSLstd450FMin}, +}; + +static UInt32 hash(const UnownedStringSlice& str, UInt32 salt) +{ + UInt64 h = salt; + for(const char c : str) + h = ((h * 0x00000100000001B3) ^ c); + return h % (sizeof(tableSalt)/sizeof(tableSalt[0])); +} + +bool lookupGLSLstd450(const UnownedStringSlice& str, GLSLstd450& value) +{ + const auto i = hash(str, tableSalt[hash(str, 0)]); + if(str == words[i].name) + { + value = words[i].value; + return true; + } + else + { + return false; + } +} + +} diff --git a/source/slang/slang-lookup-spirv.h b/source/slang/slang-lookup-spirv.h new file mode 100644 index 000000000..bc8dfb5a4 --- /dev/null +++ b/source/slang/slang-lookup-spirv.h @@ -0,0 +1,10 @@ +#include "../core/slang-string.h" + +#include "spirv/unified1/spirv.h" +#include "spirv/unified1/GLSL.std.450.h" + +namespace Slang +{ +bool lookupSpvOp(const UnownedStringSlice& str, SpvOp& value); +bool lookupGLSLstd450(const UnownedStringSlice& str, GLSLstd450& value); +} diff --git a/source/slang/slang-lookup-spvop.cpp b/source/slang/slang-lookup-spvop.cpp new file mode 100644 index 000000000..545229eed --- /dev/null +++ b/source/slang/slang-lookup-spvop.cpp @@ -0,0 +1,762 @@ +// Hash function for SpvOp +// +// This file was thoughtfully generated by a machine, +// don't even think about modifying it yourself! +// + +#include "../core/slang-common.h" +#include "../core/slang-string.h" +#include "spirv/unified1/spirv.h" + + +namespace Slang +{ + +static const unsigned tableSalt[670] ={ + 0, 2, 4, 0, 0, 0, 4, 5, 10, 7, 0, 5, 0, 2, 24, 1, + 0, 6, 8, 7, 0, 0, 2, 1, 23, 23, 5, 0, 0, 1, 0, 0, + 5, 0, 0, 1, 0, 10, 6, 1, 9, 6, 0, 0, 0, 12, 0, 20, + 7, 1, 0, 1, 0, 1, 0, 1, 18, 2, 3, 3, 0, 2, 9, 0, + 3, 0, 0, 4, 0, 9, 9, 0, 0, 2, 11, 0, 10, 13, 13, 0, + 0, 0, 38, 23, 0, 16, 7, 1, 1, 7, 63, 15, 5, 16, 12, 9, + 30, 0, 6, 10, 2, 22, 0, 1, 3, 2, 3, 0, 6, 0, 0, 3, + 0, 4, 1, 0, 1, 5, 23, 0, 0, 0, 0, 13, 9, 0, 1, 1, + 1, 2, 0, 5, 1, 5, 4, 1, 5, 8, 10, 3, 3, 10, 4, 2, + 0, 0, 5, 8, 1, 15, 7, 0, 0, 18, 5, 2, 0, 0, 0, 1, + 1, 1, 0, 0, 1, 7, 1, 22, 4, 0, 8, 4, 5, 11, 0, 7, + 0, 1, 3, 0, 4, 1, 8, 1, 2, 2, 0, 1, 0, 2, 0, 3, + 0, 2, 0, 0, 8, 0, 1, 0, 3, 0, 27, 15, 0, 1, 7, 7, + 5, 1, 1, 6, 1, 1, 22, 5, 9, 4, 0, 2, 1, 0, 70, 1, + 0, 4, 4, 0, 4, 0, 76, 0, 0, 36, 0, 0, 44, 80, 0, 1, + 8, 3, 2, 1, 4, 1, 0, 66, 0, 0, 5, 2, 2, 56, 281, 7, + 31, 15, 0, 0, 1, 2, 19, 1, 72, 6, 4, 40, 6, 1, 220, 0, + 0, 3, 104, 222, 2, 333, 0, 0, 2, 7, 7, 11, 28, 0, 19, 563, + 138, 0, 0, 1, 1, 2, 0, 0, 3, 21, 0, 0, 0, 0, 15, 23, + 4, 0, 6, 2, 179, 26, 1, 1, 0, 3, 2, 5, 0, 1, 1, 2, + 1, 1, 3, 7, 7, 1, 5, 1, 3, 1, 1, 0, 2, 4, 5, 1, + 0, 0, 3, 0, 1, 1, 0, 0, 2, 2, 1, 2, 0, 3, 3, 2, + 0, 0, 0, 0, 1, 3, 0, 3, 0, 0, 0, 0, 5, 1, 0, 0, + 1, 1, 1, 1, 0, 2, 0, 0, 1, 0, 4, 3, 2, 3, 2, 0, + 1, 1, 5, 3, 0, 1, 0, 2, 2, 1, 2, 7, 0, 1, 0, 0, + 3, 7, 2, 0, 8, 1, 9, 0, 3, 1, 1, 1, 0, 6, 0, 1, + 3, 15, 0, 0, 0, 3, 0, 0, 1, 1, 12, 9, 1, 1, 7, 12, + 0, 0, 2, 3, 3, 0, 0, 24, 1, 9, 1, 1, 0, 3, 9, 1, + 4, 0, 0, 0, 0, 3, 2, 0, 1, 3, 0, 2, 2, 0, 2, 0, + 17, 4, 0, 1, 1, 2, 0, 0, 0, 4, 0, 1, 2, 6, 0, 1, + 1, 0, 1, 0, 5, 0, 0, 0, 0, 1, 7, 2, 0, 5, 3, 0, + 1, 4, 0, 0, 12, 4, 1, 0, 2, 0, 0, 3, 2, 8, 3, 0, + 0, 6, 3, 0, 1, 7, 1, 1, 0, 0, 1, 0, 3, 20, 1, 1, + 1, 0, 2, 0, 5, 0, 2, 0, 0, 1, 1, 1, 1, 5, 1, 4, + 0, 0, 6, 12, 0, 0, 3, 3, 0, 0, 0, 0, 0, 9, 4, 4, + 0, 2, 0, 5, 2, 0, 2, 0, 4, 1, 0, 5, 16, 3, 0, 1, + 0, 1, 0, 0, 0, 3, 0, 2, 6, 2, 12, 0, 16, 0, 1, 2, + 3, 0, 2, 12, 3, 2, 0, 1, 0, 0, 1, 2, 0, 1, 1, 0, + 1, 1, 1, 4, 0, 1, 0, 4, 0, 3, 5, 0, 1, 1, 3, 2, + 0, 0, 3, 14, 2, 0, 0, 0, 3, 8, 1, 2, 1, 2, 1, 3, + 1, 0, 3, 2, 1, 0, 1, 3, 1, 1, 0, 3, 2, 0, 0, 0, + 3, 0, 1, 0, 9, 4, 2, 0, 1, 8, 5, 5, 0, 0 +}; + +struct KV +{ + const char* name; + SpvOp value; +}; + +static const KV words[670] = +{ + {"OpAtomicOr", SpvOpAtomicOr}, + {"OpIsValidReserveId", SpvOpIsValidReserveId}, + {"OpSubgroupAnyKHR", SpvOpSubgroupAnyKHR}, + {"OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL", SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL}, + {"OpSubgroupAvcRefEvaluateWithDualReferenceINTEL", SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL}, + {"OpSubgroupAvcFmeInitializeINTEL", SpvOpSubgroupAvcFmeInitializeINTEL}, + {"OpCompositeInsert", SpvOpCompositeInsert}, + {"OpPtrAccessChain", SpvOpPtrAccessChain}, + {"OpConvertSampledImageToUNV", SpvOpConvertSampledImageToUNV}, + {"OpReadPipeBlockingINTEL", SpvOpReadPipeBlockingINTEL}, + {"OpAtomicIIncrement", SpvOpAtomicIIncrement}, + {"OpBitFieldSExtract", SpvOpBitFieldSExtract}, + {"OpUnordered", SpvOpUnordered}, + {"OpArbitraryFloatAddINTEL", SpvOpArbitraryFloatAddINTEL}, + {"OpLoopMerge", SpvOpLoopMerge}, + {"OpAsmTargetINTEL", SpvOpAsmTargetINTEL}, + {"OpConstantSampler", SpvOpConstantSampler}, + {"OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL", SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL}, + {"OpFOrdNotEqual", SpvOpFOrdNotEqual}, + {"OpRayQueryGetIntersectionCandidateAABBOpaqueKHR", SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR}, + {"OpBuildNDRange", SpvOpBuildNDRange}, + {"OpUndef", SpvOpUndef}, + {"OpConvertPtrToU", SpvOpConvertPtrToU}, + {"OpGroupLogicalOrKHR", SpvOpGroupLogicalOrKHR}, + {"OpNamedBarrierInitialize", SpvOpNamedBarrierInitialize}, + {"OpConstantComposite", SpvOpConstantComposite}, + {"OpImageSparseSampleProjDrefExplicitLod", SpvOpImageSparseSampleProjDrefExplicitLod}, + {"OpSGreaterThanEqual", SpvOpSGreaterThanEqual}, + {"OpBitwiseAnd", SpvOpBitwiseAnd}, + {"OpRayQueryGetIntersectionBarycentricsKHR", SpvOpRayQueryGetIntersectionBarycentricsKHR}, + {"OpULessThan", SpvOpULessThan}, + {"OpUnreachable", SpvOpUnreachable}, + {"OpSubgroupAvcRefConvertToMceResultINTEL", SpvOpSubgroupAvcRefConvertToMceResultINTEL}, + {"OpSubgroupAvcMceConvertToImePayloadINTEL", SpvOpSubgroupAvcMceConvertToImePayloadINTEL}, + {"OpFunctionEnd", SpvOpFunctionEnd}, + {"OpTypeAccelerationStructureNV", SpvOpTypeAccelerationStructureNV}, + {"OpRayQueryConfirmIntersectionKHR", SpvOpRayQueryConfirmIntersectionKHR}, + {"OpFConvert", SpvOpFConvert}, + {"OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL", SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL}, + {"OpIsInf", SpvOpIsInf}, + {"OpGroupCommitReadPipe", SpvOpGroupCommitReadPipe}, + {"OpReadClockKHR", SpvOpReadClockKHR}, + {"OpSubgroupReadInvocationKHR", SpvOpSubgroupReadInvocationKHR}, + {"OpFDiv", SpvOpFDiv}, + {"OpSubgroupAvcMceConvertToImeResultINTEL", SpvOpSubgroupAvcMceConvertToImeResultINTEL}, + {"OpSubgroupAvcImeAdjustRefOffsetINTEL", SpvOpSubgroupAvcImeAdjustRefOffsetINTEL}, + {"OpArbitraryFloatHypotINTEL", SpvOpArbitraryFloatHypotINTEL}, + {"OpFragmentFetchAMD", SpvOpFragmentFetchAMD}, + {"OpISub", SpvOpISub}, + {"OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL", SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL}, + {"OpEnqueueMarker", SpvOpEnqueueMarker}, + {"OpGroupUMinNonUniformAMD", SpvOpGroupUMinNonUniformAMD}, + {"OpImageQueryLevels", SpvOpImageQueryLevels}, + {"OpIMul", SpvOpIMul}, + {"OpRayQueryGetWorldRayDirectionKHR", SpvOpRayQueryGetWorldRayDirectionKHR}, + {"OpAtomicIAdd", SpvOpAtomicIAdd}, + {"OpGroupNonUniformSMin", SpvOpGroupNonUniformSMin}, + {"OpISubSatINTEL", SpvOpISubSatINTEL}, + {"OpTypePipeStorage", SpvOpTypePipeStorage}, + {"OpGroupNonUniformAllEqual", SpvOpGroupNonUniformAllEqual}, + {"OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL", SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL}, + {"OpTypeDeviceEvent", SpvOpTypeDeviceEvent}, + {"OpGroupFMax", SpvOpGroupFMax}, + {"OpGroupNonUniformBroadcast", SpvOpGroupNonUniformBroadcast}, + {"OpGroupNonUniformUMax", SpvOpGroupNonUniformUMax}, + {"OpSubgroupAvcRefSetBidirectionalMixDisableINTEL", SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL}, + {"OpTypeAvcMcePayloadINTEL", SpvOpTypeAvcMcePayloadINTEL}, + {"OpSubgroupAvcSicGetPackedIpeLumaModesINTEL", SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL}, + {"OpFSub", SpvOpFSub}, + {"OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL", SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL}, + {"OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL", SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL}, + {"OpGroupNonUniformBroadcastFirst", SpvOpGroupNonUniformBroadcastFirst}, + {"OpGroupReserveReadPipePackets", SpvOpGroupReserveReadPipePackets}, + {"OpRayQueryProceedKHR", SpvOpRayQueryProceedKHR}, + {"OpExecutionModeId", SpvOpExecutionModeId}, + {"OpCapability", SpvOpCapability}, + {"OpDPdyFine", SpvOpDPdyFine}, + {"OpDot", SpvOpDot}, + {"OpFragmentMaskFetchAMD", SpvOpFragmentMaskFetchAMD}, + {"OpGroupReserveWritePipePackets", SpvOpGroupReserveWritePipePackets}, + {"OpArbitraryFloatGTINTEL", SpvOpArbitraryFloatGTINTEL}, + {"OpFixedRecipINTEL", SpvOpFixedRecipINTEL}, + {"OpArbitraryFloatExp10INTEL", SpvOpArbitraryFloatExp10INTEL}, + {"OpWritePipe", SpvOpWritePipe}, + {"OpReserveReadPipePackets", SpvOpReserveReadPipePackets}, + {"OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL", SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL}, + {"OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL", SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL}, + {"OpRestoreMemoryINTEL", SpvOpRestoreMemoryINTEL}, + {"OpLine", SpvOpLine}, + {"OpGroupNonUniformQuadSwap", SpvOpGroupNonUniformQuadSwap}, + {"OpTypeArray", SpvOpTypeArray}, + {"OpRayQueryGetIntersectionInstanceCustomIndexKHR", SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR}, + {"OpFMod", SpvOpFMod}, + {"OpLifetimeStart", SpvOpLifetimeStart}, + {"OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL", SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL}, + {"OpArbitraryFloatCosINTEL", SpvOpArbitraryFloatCosINTEL}, + {"OpSelect", SpvOpSelect}, + {"OpUCountLeadingZerosINTEL", SpvOpUCountLeadingZerosINTEL}, + {"OpAliasDomainDeclINTEL", SpvOpAliasDomainDeclINTEL}, + {"OpConstantCompositeContinuedINTEL", SpvOpConstantCompositeContinuedINTEL}, + {"OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL", SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL}, + {"OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL", SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL}, + {"OpCommitWritePipe", SpvOpCommitWritePipe}, + {"OpLogicalOr", SpvOpLogicalOr}, + {"OpAtomicUMax", SpvOpAtomicUMax}, + {"OpRayQueryGetIntersectionTypeKHR", SpvOpRayQueryGetIntersectionTypeKHR}, + {"OpSLessThanEqual", SpvOpSLessThanEqual}, + {"OpSubgroupBallotKHR", SpvOpSubgroupBallotKHR}, + {"OpVectorShuffle", SpvOpVectorShuffle}, + {"OpReturnValue", SpvOpReturnValue}, + {"OpTypeForwardPointer", SpvOpTypeForwardPointer}, + {"OpArrayLength", SpvOpArrayLength}, + {"OpSubgroupAllKHR", SpvOpSubgroupAllKHR}, + {"OpMatrixTimesVector", SpvOpMatrixTimesVector}, + {"OpGroupNonUniformAny", SpvOpGroupNonUniformAny}, + {"OpUSubSatINTEL", SpvOpUSubSatINTEL}, + {"OpUGreaterThanEqual", SpvOpUGreaterThanEqual}, + {"OpIEqual", SpvOpIEqual}, + {"OpCompositeExtract", SpvOpCompositeExtract}, + {"OpSetMeshOutputsEXT", SpvOpSetMeshOutputsEXT}, + {"OpDPdxFine", SpvOpDPdxFine}, + {"OpArbitraryFloatLog2INTEL", SpvOpArbitraryFloatLog2INTEL}, + {"OpCommitReadPipe", SpvOpCommitReadPipe}, + {"OpTypeAvcImeDualReferenceStreaminINTEL", SpvOpTypeAvcImeDualReferenceStreaminINTEL}, + {"OpGroupNonUniformLogicalAnd", SpvOpGroupNonUniformLogicalAnd}, + {"OpAtomicUMin", SpvOpAtomicUMin}, + {"OpPtrEqual", SpvOpPtrEqual}, + {"OpAtomicFMinEXT", SpvOpAtomicFMinEXT}, + {"OpUDotAccSatKHR", SpvOpUDotAccSatKHR}, + {"OpExecuteCallableKHR", SpvOpExecuteCallableKHR}, + {"OpIsHelperInvocationEXT", SpvOpIsHelperInvocationEXT}, + {"OpRayQueryGetIntersectionPrimitiveIndexKHR", SpvOpRayQueryGetIntersectionPrimitiveIndexKHR}, + {"OpTypeAvcSicResultINTEL", SpvOpTypeAvcSicResultINTEL}, + {"OpExtInst", SpvOpExtInst}, + {"OpUMulExtended", SpvOpUMulExtended}, + {"OpLoopControlINTEL", SpvOpLoopControlINTEL}, + {"OpNot", SpvOpNot}, + {"OpCreatePipeFromPipeStorage", SpvOpCreatePipeFromPipeStorage}, + {"OpImageFetch", SpvOpImageFetch}, + {"OpSubgroupAvcSicConfigureIpeLumaChromaINTEL", SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL}, + {"OpNop", SpvOpNop}, + {"OpIsNormal", SpvOpIsNormal}, + {"OpArbitraryFloatExpINTEL", SpvOpArbitraryFloatExpINTEL}, + {"OpSubgroupAvcSicConfigureIpeLumaINTEL", SpvOpSubgroupAvcSicConfigureIpeLumaINTEL}, + {"OpShiftRightArithmetic", SpvOpShiftRightArithmetic}, + {"OpUMul32x16INTEL", SpvOpUMul32x16INTEL}, + {"OpIAddSatINTEL", SpvOpIAddSatINTEL}, + {"OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL", SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL}, + {"OpCopyMemory", SpvOpCopyMemory}, + {"OpGroupSMinNonUniformAMD", SpvOpGroupSMinNonUniformAMD}, + {"OpArbitraryFloatPowNINTEL", SpvOpArbitraryFloatPowNINTEL}, + {"OpAccessChain", SpvOpAccessChain}, + {"OpCooperativeMatrixMulAddNV", SpvOpCooperativeMatrixMulAddNV}, + {"OpGroupNonUniformFMin", SpvOpGroupNonUniformFMin}, + {"OpIsFinite", SpvOpIsFinite}, + {"OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL", SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL}, + {"OpSubgroupAvcImeGetDualReferenceStreaminINTEL", SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL}, + {"OpVmeImageINTEL", SpvOpVmeImageINTEL}, + {"OpSubgroupAvcMceGetInterDirectionsINTEL", SpvOpSubgroupAvcMceGetInterDirectionsINTEL}, + {"OpSubgroupImageBlockWriteINTEL", SpvOpSubgroupImageBlockWriteINTEL}, + {"OpArbitraryFloatSubINTEL", SpvOpArbitraryFloatSubINTEL}, + {"OpLogicalEqual", SpvOpLogicalEqual}, + {"OpDecorateString", SpvOpDecorateString}, + {"OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL", SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL}, + {"OpGroupNonUniformQuadBroadcast", SpvOpGroupNonUniformQuadBroadcast}, + {"OpRayQueryGetWorldRayOriginKHR", SpvOpRayQueryGetWorldRayOriginKHR}, + {"OpCopyMemorySized", SpvOpCopyMemorySized}, + {"OpSubgroupAvcMceSetInterDirectionPenaltyINTEL", SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL}, + {"OpLogicalNotEqual", SpvOpLogicalNotEqual}, + {"OpFixedSinINTEL", SpvOpFixedSinINTEL}, + {"OpImageSampleFootprintNV", SpvOpImageSampleFootprintNV}, + {"OpSubgroupBlockReadINTEL", SpvOpSubgroupBlockReadINTEL}, + {"OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL", SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL}, + {"OpOrdered", SpvOpOrdered}, + {"OpImageSampleExplicitLod", SpvOpImageSampleExplicitLod}, + {"OpGroupUMin", SpvOpGroupUMin}, + {"OpFixedSinPiINTEL", SpvOpFixedSinPiINTEL}, + {"OpRayQueryInitializeKHR", SpvOpRayQueryInitializeKHR}, + {"OpTerminateRayKHR", SpvOpTerminateRayKHR}, + {"OpConvertUToSamplerNV", SpvOpConvertUToSamplerNV}, + {"OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL", SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL}, + {"OpAtomicSMax", SpvOpAtomicSMax}, + {"OpBitReverse", SpvOpBitReverse}, + {"OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL", SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL}, + {"OpTypeAvcRefResultINTEL", SpvOpTypeAvcRefResultINTEL}, + {"OpTypeBufferSurfaceINTEL", SpvOpTypeBufferSurfaceINTEL}, + {"OpConvertFToS", SpvOpConvertFToS}, + {"OpGetKernelNDrangeSubGroupCount", SpvOpGetKernelNDrangeSubGroupCount}, + {"OpSDotKHR", SpvOpSDotKHR}, + {"OpImageSampleProjImplicitLod", SpvOpImageSampleProjImplicitLod}, + {"OpGenericCastToPtr", SpvOpGenericCastToPtr}, + {"OpRayQueryGetIntersectionObjectRayDirectionKHR", SpvOpRayQueryGetIntersectionObjectRayDirectionKHR}, + {"OpSubgroupAvcSicGetIpeLumaShapeINTEL", SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL}, + {"OpSpecConstantCompositeContinuedINTEL", SpvOpSpecConstantCompositeContinuedINTEL}, + {"OpTraceRayMotionNV", SpvOpTraceRayMotionNV}, + {"OpExecutionMode", SpvOpExecutionMode}, + {"OpDPdyCoarse", SpvOpDPdyCoarse}, + {"OpSubgroupAvcImeSetDualReferenceINTEL", SpvOpSubgroupAvcImeSetDualReferenceINTEL}, + {"OpBranch", SpvOpBranch}, + {"OpSubgroupAvcImeStripDualReferenceStreamoutINTEL", SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL}, + {"OpSLessThan", SpvOpSLessThan}, + {"OpUAverageRoundedINTEL", SpvOpUAverageRoundedINTEL}, + {"OpAtomicLoad", SpvOpAtomicLoad}, + {"OpConvertUToF", SpvOpConvertUToF}, + {"OpGroupNonUniformBitwiseXor", SpvOpGroupNonUniformBitwiseXor}, + {"OpSubgroupAvcImeRefWindowSizeINTEL", SpvOpSubgroupAvcImeRefWindowSizeINTEL}, + {"OpSubgroupAvcSicSetBilinearFilterEnableINTEL", SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL}, + {"OpStore", SpvOpStore}, + {"OpUDotAccSat", SpvOpUDotAccSat}, + {"OpControlBarrierWaitINTEL", SpvOpControlBarrierWaitINTEL}, + {"OpTypeFloat", SpvOpTypeFloat}, + {"OpSubgroupAvcMceConvertToSicPayloadINTEL", SpvOpSubgroupAvcMceConvertToSicPayloadINTEL}, + {"OpGroupAny", SpvOpGroupAny}, + {"OpUAddSatINTEL", SpvOpUAddSatINTEL}, + {"OpTypeStructContinuedINTEL", SpvOpTypeStructContinuedINTEL}, + {"OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL", SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL}, + {"OpGroupNonUniformShuffleUp", SpvOpGroupNonUniformShuffleUp}, + {"OpImageSampleDrefExplicitLod", SpvOpImageSampleDrefExplicitLod}, + {"OpSRem", SpvOpSRem}, + {"OpVariableLengthArrayINTEL", SpvOpVariableLengthArrayINTEL}, + {"OpCooperativeMatrixStoreNV", SpvOpCooperativeMatrixStoreNV}, + {"OpSubgroupShuffleDownINTEL", SpvOpSubgroupShuffleDownINTEL}, + {"OpTypeMatrix", SpvOpTypeMatrix}, + {"OpSatConvertUToS", SpvOpSatConvertUToS}, + {"OpImageQueryFormat", SpvOpImageQueryFormat}, + {"OpRayQueryTerminateKHR", SpvOpRayQueryTerminateKHR}, + {"OpPtrNotEqual", SpvOpPtrNotEqual}, + {"OpImageSparseRead", SpvOpImageSparseRead}, + {"OpSubgroupShuffleXorINTEL", SpvOpSubgroupShuffleXorINTEL}, + {"OpGroupDecorate", SpvOpGroupDecorate}, + {"OpSubgroupAvcSicConvertToMceResultINTEL", SpvOpSubgroupAvcSicConvertToMceResultINTEL}, + {"OpTypeAvcMceResultINTEL", SpvOpTypeAvcMceResultINTEL}, + {"OpSubgroupAvcMceGetInterMinorShapeINTEL", SpvOpSubgroupAvcMceGetInterMinorShapeINTEL}, + {"OpINotEqual", SpvOpINotEqual}, + {"OpImageQueryLod", SpvOpImageQueryLod}, + {"OpTypeQueue", SpvOpTypeQueue}, + {"OpSetUserEventStatus", SpvOpSetUserEventStatus}, + {"OpBranchConditional", SpvOpBranchConditional}, + {"OpIgnoreIntersectionNV", SpvOpIgnoreIntersectionNV}, + {"OpVectorExtractDynamic", SpvOpVectorExtractDynamic}, + {"OpImageQuerySizeLod", SpvOpImageQuerySizeLod}, + {"OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL", SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL}, + {"OpTypeBool", SpvOpTypeBool}, + {"OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR", SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR}, + {"OpEntryPoint", SpvOpEntryPoint}, + {"OpAtomicCompareExchangeWeak", SpvOpAtomicCompareExchangeWeak}, + {"OpSource", SpvOpSource}, + {"OpEmitStreamVertex", SpvOpEmitStreamVertex}, + {"OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL", SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL}, + {"OpSubgroupAvcRefConvertToMcePayloadINTEL", SpvOpSubgroupAvcRefConvertToMcePayloadINTEL}, + {"OpImageSparseTexelsResident", SpvOpImageSparseTexelsResident}, + {"OpImageSparseFetch", SpvOpImageSparseFetch}, + {"OpArbitraryFloatExp2INTEL", SpvOpArbitraryFloatExp2INTEL}, + {"OpCreateUserEvent", SpvOpCreateUserEvent}, + {"OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL", SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL}, + {"OpSubgroupAvcSicEvaluateIpeINTEL", SpvOpSubgroupAvcSicEvaluateIpeINTEL}, + {"OpFixedCosPiINTEL", SpvOpFixedCosPiINTEL}, + {"OpTypeVmeImageINTEL", SpvOpTypeVmeImageINTEL}, + {"OpRayQueryGetRayTMinKHR", SpvOpRayQueryGetRayTMinKHR}, + {"OpName", SpvOpName}, + {"OpIgnoreIntersectionKHR", SpvOpIgnoreIntersectionKHR}, + {"OpArbitraryFloatExpm1INTEL", SpvOpArbitraryFloatExpm1INTEL}, + {"OpAtomicFMaxEXT", SpvOpAtomicFMaxEXT}, + {"OpSDiv", SpvOpSDiv}, + {"OpGroupNonUniformBallotBitExtract", SpvOpGroupNonUniformBallotBitExtract}, + {"OpFUnordNotEqual", SpvOpFUnordNotEqual}, + {"OpGetKernelNDrangeMaxSubGroupSize", SpvOpGetKernelNDrangeMaxSubGroupSize}, + {"OpGetKernelPreferredWorkGroupSizeMultiple", SpvOpGetKernelPreferredWorkGroupSizeMultiple}, + {"OpTypeAvcRefPayloadINTEL", SpvOpTypeAvcRefPayloadINTEL}, + {"OpLogicalAnd", SpvOpLogicalAnd}, + {"OpConvertUToPtr", SpvOpConvertUToPtr}, + {"OpSubgroupShuffleUpINTEL", SpvOpSubgroupShuffleUpINTEL}, + {"OpFUnordLessThanEqual", SpvOpFUnordLessThanEqual}, + {"OpArbitraryFloatSinCosINTEL", SpvOpArbitraryFloatSinCosINTEL}, + {"OpEndPrimitive", SpvOpEndPrimitive}, + {"OpPhi", SpvOpPhi}, + {"OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL", SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL}, + {"OpArbitraryFloatATan2INTEL", SpvOpArbitraryFloatATan2INTEL}, + {"OpSubgroupAvcSicGetIpeChromaModeINTEL", SpvOpSubgroupAvcSicGetIpeChromaModeINTEL}, + {"OpAbsISubINTEL", SpvOpAbsISubINTEL}, + {"OpFAdd", SpvOpFAdd}, + {"OpFOrdGreaterThan", SpvOpFOrdGreaterThan}, + {"OpBitCount", SpvOpBitCount}, + {"OpAtomicStore", SpvOpAtomicStore}, + {"OpSizeOf", SpvOpSizeOf}, + {"OpAny", SpvOpAny}, + {"OpGroupFAddNonUniformAMD", SpvOpGroupFAddNonUniformAMD}, + {"OpUDiv", SpvOpUDiv}, + {"OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL", SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL}, + {"OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL", SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL}, + {"OpAtomicAnd", SpvOpAtomicAnd}, + {"OpArbitraryFloatCastToIntINTEL", SpvOpArbitraryFloatCastToIntINTEL}, + {"OpRayQueryGetIntersectionGeometryIndexKHR", SpvOpRayQueryGetIntersectionGeometryIndexKHR}, + {"OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL", SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL}, + {"OpGetDefaultQueue", SpvOpGetDefaultQueue}, + {"OpSUDotAccSatKHR", SpvOpSUDotAccSatKHR}, + {"OpQuantizeToF16", SpvOpQuantizeToF16}, + {"OpFOrdGreaterThanEqual", SpvOpFOrdGreaterThanEqual}, + {"OpArbitraryFloatEQINTEL", SpvOpArbitraryFloatEQINTEL}, + {"OpImageQueryOrder", SpvOpImageQueryOrder}, + {"OpBitwiseXor", SpvOpBitwiseXor}, + {"OpConstantNull", SpvOpConstantNull}, + {"OpIsValidEvent", SpvOpIsValidEvent}, + {"OpImageTexelPointer", SpvOpImageTexelPointer}, + {"OpTypePipe", SpvOpTypePipe}, + {"OpConstantPipeStorage", SpvOpConstantPipeStorage}, + {"OpSelectionMerge", SpvOpSelectionMerge}, + {"OpGroupUMax", SpvOpGroupUMax}, + {"OpGroupSMaxNonUniformAMD", SpvOpGroupSMaxNonUniformAMD}, + {"OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL", SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL}, + {"OpGroupWaitEvents", SpvOpGroupWaitEvents}, + {"OpFRem", SpvOpFRem}, + {"OpGroupNonUniformBallotBitCount", SpvOpGroupNonUniformBallotBitCount}, + {"OpFwidthCoarse", SpvOpFwidthCoarse}, + {"OpSubgroupFirstInvocationKHR", SpvOpSubgroupFirstInvocationKHR}, + {"OpDPdxCoarse", SpvOpDPdxCoarse}, + {"OpSubgroupAvcMceConvertToRefPayloadINTEL", SpvOpSubgroupAvcMceConvertToRefPayloadINTEL}, + {"OpConvertSamplerToUNV", SpvOpConvertSamplerToUNV}, + {"OpArbitraryFloatLTINTEL", SpvOpArbitraryFloatLTINTEL}, + {"OpLessOrGreater", SpvOpLessOrGreater}, + {"OpSUDotAccSat", SpvOpSUDotAccSat}, + {"OpArbitraryFloatDivINTEL", SpvOpArbitraryFloatDivINTEL}, + {"OpExtension", SpvOpExtension}, + {"OpSubgroupAvcMceConvertToSicResultINTEL", SpvOpSubgroupAvcMceConvertToSicResultINTEL}, + {"OpGroupNonUniformBallot", SpvOpGroupNonUniformBallot}, + {"OpArbitraryFloatCastINTEL", SpvOpArbitraryFloatCastINTEL}, + {"OpExtInstImport", SpvOpExtInstImport}, + {"OpCopyObject", SpvOpCopyObject}, + {"OpGroupAsyncCopy", SpvOpGroupAsyncCopy}, + {"OpSubgroupAvcSicInitializeINTEL", SpvOpSubgroupAvcSicInitializeINTEL}, + {"OpSubgroupAvcImeConvertToMcePayloadINTEL", SpvOpSubgroupAvcImeConvertToMcePayloadINTEL}, + {"OpEndStreamPrimitive", SpvOpEndStreamPrimitive}, + {"OpArbitraryFloatLEINTEL", SpvOpArbitraryFloatLEINTEL}, + {"OpSMod", SpvOpSMod}, + {"OpMemberDecorateString", SpvOpMemberDecorateString}, + {"OpGroupIAddNonUniformAMD", SpvOpGroupIAddNonUniformAMD}, + {"OpUGreaterThan", SpvOpUGreaterThan}, + {"OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL", SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL}, + {"OpOuterProduct", SpvOpOuterProduct}, + {"OpSubgroupAvcMceConvertToRefResultINTEL", SpvOpSubgroupAvcMceConvertToRefResultINTEL}, + {"OpGroupBitwiseXorKHR", SpvOpGroupBitwiseXorKHR}, + {"OpBeginInvocationInterlockEXT", SpvOpBeginInvocationInterlockEXT}, + {"OpAtomicSMin", SpvOpAtomicSMin}, + {"OpArbitraryFloatLog1pINTEL", SpvOpArbitraryFloatLog1pINTEL}, + {"OpMemoryModel", SpvOpMemoryModel}, + {"OpTypeInt", SpvOpTypeInt}, + {"OpReportIntersectionNV", SpvOpReportIntersectionNV}, + {"OpDecorateStringGOOGLE", SpvOpDecorateStringGOOGLE}, + {"OpControlBarrier", SpvOpControlBarrier}, + {"OpSubgroupAvcSicConfigureSkcINTEL", SpvOpSubgroupAvcSicConfigureSkcINTEL}, + {"OpImageSampleImplicitLod", SpvOpImageSampleImplicitLod}, + {"OpSwitch", SpvOpSwitch}, + {"OpSDot", SpvOpSDot}, + {"OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL", SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL}, + {"OpDemoteToHelperInvocationEXT", SpvOpDemoteToHelperInvocationEXT}, + {"OpSUDot", SpvOpSUDot}, + {"OpSDotAccSat", SpvOpSDotAccSat}, + {"OpGetKernelWorkGroupSize", SpvOpGetKernelWorkGroupSize}, + {"OpGroupNonUniformBallotFindLSB", SpvOpGroupNonUniformBallotFindLSB}, + {"OpFwidthFine", SpvOpFwidthFine}, + {"OpReserveWritePipePackets", SpvOpReserveWritePipePackets}, + {"OpConstantFalse", SpvOpConstantFalse}, + {"OpCooperativeMatrixLengthNV", SpvOpCooperativeMatrixLengthNV}, + {"OpFixedExpINTEL", SpvOpFixedExpINTEL}, + {"OpArbitraryFloatASinPiINTEL", SpvOpArbitraryFloatASinPiINTEL}, + {"OpEnqueueKernel", SpvOpEnqueueKernel}, + {"OpVectorInsertDynamic", SpvOpVectorInsertDynamic}, + {"OpBitFieldInsert", SpvOpBitFieldInsert}, + {"OpSubgroupAvcMceGetInterMajorShapeINTEL", SpvOpSubgroupAvcMceGetInterMajorShapeINTEL}, + {"OpGroupNonUniformAll", SpvOpGroupNonUniformAll}, + {"OpRayQueryGetIntersectionWorldToObjectKHR", SpvOpRayQueryGetIntersectionWorldToObjectKHR}, + {"OpMatrixTimesScalar", SpvOpMatrixTimesScalar}, + {"OpFixedCosINTEL", SpvOpFixedCosINTEL}, + {"OpWritePackedPrimitiveIndices4x8NV", SpvOpWritePackedPrimitiveIndices4x8NV}, + {"OpDemoteToHelperInvocation", SpvOpDemoteToHelperInvocation}, + {"OpSubgroupImageBlockReadINTEL", SpvOpSubgroupImageBlockReadINTEL}, + {"OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL", SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL}, + {"OpDecorationGroup", SpvOpDecorationGroup}, + {"OpReturn", SpvOpReturn}, + {"OpArbitraryFloatACosINTEL", SpvOpArbitraryFloatACosINTEL}, + {"OpSubgroupAvcSicConvertToMcePayloadINTEL", SpvOpSubgroupAvcSicConvertToMcePayloadINTEL}, + {"OpTranspose", SpvOpTranspose}, + {"OpImageSparseSampleProjImplicitLod", SpvOpImageSparseSampleProjImplicitLod}, + {"OpKill", SpvOpKill}, + {"OpTraceRayKHR", SpvOpTraceRayKHR}, + {"OpArbitraryFloatSinPiINTEL", SpvOpArbitraryFloatSinPiINTEL}, + {"OpGroupNonUniformBallotFindMSB", SpvOpGroupNonUniformBallotFindMSB}, + {"OpTraceMotionNV", SpvOpTraceMotionNV}, + {"OpGroupNonUniformSMax", SpvOpGroupNonUniformSMax}, + {"OpFunctionParameter", SpvOpFunctionParameter}, + {"OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL", SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL}, + {"OpGroupAll", SpvOpGroupAll}, + {"OpTypeOpaque", SpvOpTypeOpaque}, + {"OpConstant", SpvOpConstant}, + {"OpPtrCastToGeneric", SpvOpPtrCastToGeneric}, + {"OpUConvert", SpvOpUConvert}, + {"OpArbitraryFloatRecipINTEL", SpvOpArbitraryFloatRecipINTEL}, + {"OpIsNan", SpvOpIsNan}, + {"OpImageRead", SpvOpImageRead}, + {"OpReleaseEvent", SpvOpReleaseEvent}, + {"OpTypeFunction", SpvOpTypeFunction}, + {"OpFwidth", SpvOpFwidth}, + {"OpSourceExtension", SpvOpSourceExtension}, + {"OpGetNumPipePackets", SpvOpGetNumPipePackets}, + {"OpBitwiseOr", SpvOpBitwiseOr}, + {"OpLifetimeStop", SpvOpLifetimeStop}, + {"OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL", SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL}, + {"OpSourceContinued", SpvOpSourceContinued}, + {"OpAsmCallINTEL", SpvOpAsmCallINTEL}, + {"OpGroupNonUniformShuffleXor", SpvOpGroupNonUniformShuffleXor}, + {"OpArbitraryFloatGEINTEL", SpvOpArbitraryFloatGEINTEL}, + {"OpImageSparseSampleProjDrefImplicitLod", SpvOpImageSparseSampleProjDrefImplicitLod}, + {"OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL", SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL}, + {"OpArbitraryFloatASinINTEL", SpvOpArbitraryFloatASinINTEL}, + {"OpFUnordEqual", SpvOpFUnordEqual}, + {"OpGroupNonUniformElect", SpvOpGroupNonUniformElect}, + {"OpArbitraryFloatATanINTEL", SpvOpArbitraryFloatATanINTEL}, + {"OpFOrdEqual", SpvOpFOrdEqual}, + {"OpGroupFAdd", SpvOpGroupFAdd}, + {"OpTypeRuntimeArray", SpvOpTypeRuntimeArray}, + {"OpUAverageINTEL", SpvOpUAverageINTEL}, + {"OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL", SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL}, + {"OpGroupFMinNonUniformAMD", SpvOpGroupFMinNonUniformAMD}, + {"OpAll", SpvOpAll}, + {"OpReservedReadPipe", SpvOpReservedReadPipe}, + {"OpImageSparseGather", SpvOpImageSparseGather}, + {"OpSpecConstantOp", SpvOpSpecConstantOp}, + {"OpString", SpvOpString}, + {"OpExpectKHR", SpvOpExpectKHR}, + {"OpVectorTimesScalar", SpvOpVectorTimesScalar}, + {"OpGroupNonUniformInverseBallot", SpvOpGroupNonUniformInverseBallot}, + {"OpGroupNonUniformIMul", SpvOpGroupNonUniformIMul}, + {"OpFixedSqrtINTEL", SpvOpFixedSqrtINTEL}, + {"OpSubgroupAvcImeInitializeINTEL", SpvOpSubgroupAvcImeInitializeINTEL}, + {"OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL", SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL}, + {"OpArbitraryFloatACosPiINTEL", SpvOpArbitraryFloatACosPiINTEL}, + {"OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL", SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL}, + {"OpTerminateInvocation", SpvOpTerminateInvocation}, + {"OpGroupBroadcast", SpvOpGroupBroadcast}, + {"OpTypePointer", SpvOpTypePointer}, + {"OpTypeRayQueryKHR", SpvOpTypeRayQueryKHR}, + {"OpGenericCastToPtrExplicit", SpvOpGenericCastToPtrExplicit}, + {"OpEndInvocationInterlockEXT", SpvOpEndInvocationInterlockEXT}, + {"OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL", SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL}, + {"OpSubgroupAvcImeSetMaxMotionVectorCountINTEL", SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL}, + {"OpTypeImage", SpvOpTypeImage}, + {"OpSubgroupAvcImeGetSingleReferenceStreaminINTEL", SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL}, + {"OpGroupCommitWritePipe", SpvOpGroupCommitWritePipe}, + {"OpSGreaterThan", SpvOpSGreaterThan}, + {"OpDecorate", SpvOpDecorate}, + {"OpLabel", SpvOpLabel}, + {"OpFUnordGreaterThan", SpvOpFUnordGreaterThan}, + {"OpArbitraryFloatMulINTEL", SpvOpArbitraryFloatMulINTEL}, + {"OpTypeAvcImeResultDualReferenceStreamoutINTEL", SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL}, + {"OpGroupSMin", SpvOpGroupSMin}, + {"OpConstantTrue", SpvOpConstantTrue}, + {"OpMatrixTimesMatrix", SpvOpMatrixTimesMatrix}, + {"OpGetKernelLocalSizeForSubgroupCount", SpvOpGetKernelLocalSizeForSubgroupCount}, + {"OpGroupFMulKHR", SpvOpGroupFMulKHR}, + {"OpSpecConstantFalse", SpvOpSpecConstantFalse}, + {"OpGroupNonUniformRotateKHR", SpvOpGroupNonUniformRotateKHR}, + {"OpAtomicFlagTestAndSet", SpvOpAtomicFlagTestAndSet}, + {"OpSDotAccSatKHR", SpvOpSDotAccSatKHR}, + {"OpVariable", SpvOpVariable}, + {"OpSpecConstantComposite", SpvOpSpecConstantComposite}, + {"OpGroupSMax", SpvOpGroupSMax}, + {"OpInBoundsAccessChain", SpvOpInBoundsAccessChain}, + {"OpFOrdLessThanEqual", SpvOpFOrdLessThanEqual}, + {"OpUCountTrailingZerosINTEL", SpvOpUCountTrailingZerosINTEL}, + {"OpTypeStruct", SpvOpTypeStruct}, + {"OpFNegate", SpvOpFNegate}, + {"OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL", SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL}, + {"OpShiftLeftLogical", SpvOpShiftLeftLogical}, + {"OpSubgroupAvcSicGetInterRawSadsINTEL", SpvOpSubgroupAvcSicGetInterRawSadsINTEL}, + {"OpArbitraryFloatPowINTEL", SpvOpArbitraryFloatPowINTEL}, + {"OpReservedWritePipe", SpvOpReservedWritePipe}, + {"OpTypeAvcImeResultINTEL", SpvOpTypeAvcImeResultINTEL}, + {"OpFPGARegINTEL", SpvOpFPGARegINTEL}, + {"OpImageQuerySize", SpvOpImageQuerySize}, + {"OpImageSparseSampleImplicitLod", SpvOpImageSparseSampleImplicitLod}, + {"OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL", SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL}, + {"OpControlBarrierArriveINTEL", SpvOpControlBarrierArriveINTEL}, + {"OpFixedLogINTEL", SpvOpFixedLogINTEL}, + {"OpImageSparseSampleDrefImplicitLod", SpvOpImageSparseSampleDrefImplicitLod}, + {"OpIAddCarry", SpvOpIAddCarry}, + {"OpGroupNonUniformShuffle", SpvOpGroupNonUniformShuffle}, + {"OpRayQueryGenerateIntersectionKHR", SpvOpRayQueryGenerateIntersectionKHR}, + {"OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL", SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL}, + {"OpIAdd", SpvOpIAdd}, + {"OpRayQueryGetIntersectionInstanceIdKHR", SpvOpRayQueryGetIntersectionInstanceIdKHR}, + {"OpIAverageINTEL", SpvOpIAverageINTEL}, + {"OpTypeAvcImePayloadINTEL", SpvOpTypeAvcImePayloadINTEL}, + {"OpImageWrite", SpvOpImageWrite}, + {"OpAssumeTrueKHR", SpvOpAssumeTrueKHR}, + {"OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL", SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL}, + {"OpTypeAvcImeSingleReferenceStreaminINTEL", SpvOpTypeAvcImeSingleReferenceStreaminINTEL}, + {"OpSatConvertSToU", SpvOpSatConvertSToU}, + {"OpSubgroupAllEqualKHR", SpvOpSubgroupAllEqualKHR}, + {"OpGenericPtrMemSemantics", SpvOpGenericPtrMemSemantics}, + {"OpMemberDecorate", SpvOpMemberDecorate}, + {"OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL", SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL}, + {"OpGroupNonUniformUMin", SpvOpGroupNonUniformUMin}, + {"OpFunction", SpvOpFunction}, + {"OpTypeAccelerationStructureKHR", SpvOpTypeAccelerationStructureKHR}, + {"OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL", SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL}, + {"OpImageSampleProjDrefExplicitLod", SpvOpImageSampleProjDrefExplicitLod}, + {"OpPtrCastToCrossWorkgroupINTEL", SpvOpPtrCastToCrossWorkgroupINTEL}, + {"OpGroupNonUniformFAdd", SpvOpGroupNonUniformFAdd}, + {"OpModuleProcessed", SpvOpModuleProcessed}, + {"OpReadPipe", SpvOpReadPipe}, + {"OpConvertUToSampledImageNV", SpvOpConvertUToSampledImageNV}, + {"OpSampledImage", SpvOpSampledImage}, + {"OpArbitraryFloatSinCosPiINTEL", SpvOpArbitraryFloatSinCosPiINTEL}, + {"OpAliasScopeDeclINTEL", SpvOpAliasScopeDeclINTEL}, + {"OpConstantFunctionPointerINTEL", SpvOpConstantFunctionPointerINTEL}, + {"OpConvertImageToUNV", SpvOpConvertImageToUNV}, + {"OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL", SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL}, + {"OpAliasScopeListDeclINTEL", SpvOpAliasScopeListDeclINTEL}, + {"OpSubgroupAvcImeGetBorderReachedINTEL", SpvOpSubgroupAvcImeGetBorderReachedINTEL}, + {"OpGroupNonUniformShuffleDown", SpvOpGroupNonUniformShuffleDown}, + {"OpCaptureEventProfilingInfo", SpvOpCaptureEventProfilingInfo}, + {"OpLoad", SpvOpLoad}, + {"OpSUDotKHR", SpvOpSUDotKHR}, + {"OpRayQueryGetIntersectionTKHR", SpvOpRayQueryGetIntersectionTKHR}, + {"OpIMul32x16INTEL", SpvOpIMul32x16INTEL}, + {"OpSubgroupAvcMceGetMotionVectorsINTEL", SpvOpSubgroupAvcMceGetMotionVectorsINTEL}, + {"OpRayQueryGetIntersectionObjectRayOriginKHR", SpvOpRayQueryGetIntersectionObjectRayOriginKHR}, + {"OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL", SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL}, + {"OpArbitraryFloatLogINTEL", SpvOpArbitraryFloatLogINTEL}, + {"OpBitFieldUExtract", SpvOpBitFieldUExtract}, + {"OpGetMaxPipePackets", SpvOpGetMaxPipePackets}, + {"OpGetKernelMaxNumSubgroups", SpvOpGetKernelMaxNumSubgroups}, + {"OpRayQueryGetIntersectionObjectToWorldKHR", SpvOpRayQueryGetIntersectionObjectToWorldKHR}, + {"OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL", SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL}, + {"OpCooperativeMatrixLoadNV", SpvOpCooperativeMatrixLoadNV}, + {"OpGroupIMulKHR", SpvOpGroupIMulKHR}, + {"OpConvertUToAccelerationStructureKHR", SpvOpConvertUToAccelerationStructureKHR}, + {"OpNoLine", SpvOpNoLine}, + {"OpSignBitSet", SpvOpSignBitSet}, + {"OpAsmINTEL", SpvOpAsmINTEL}, + {"OpGroupNonUniformBitwiseOr", SpvOpGroupNonUniformBitwiseOr}, + {"OpImageSparseDrefGather", SpvOpImageSparseDrefGather}, + {"OpSubgroupShuffleINTEL", SpvOpSubgroupShuffleINTEL}, + {"OpGroupBitwiseOrKHR", SpvOpGroupBitwiseOrKHR}, + {"OpSubgroupImageMediaBlockWriteINTEL", SpvOpSubgroupImageMediaBlockWriteINTEL}, + {"OpImage", SpvOpImage}, + {"OpAtomicFlagClear", SpvOpAtomicFlagClear}, + {"OpISubBorrow", SpvOpISubBorrow}, + {"OpGroupFMin", SpvOpGroupFMin}, + {"OpSubgroupAvcMceGetBestInterDistortionsINTEL", SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL}, + {"OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL", SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL}, + {"OpAtomicFAddEXT", SpvOpAtomicFAddEXT}, + {"OpTypeNamedBarrier", SpvOpTypeNamedBarrier}, + {"OpAtomicIDecrement", SpvOpAtomicIDecrement}, + {"OpGroupNonUniformFMax", SpvOpGroupNonUniformFMax}, + {"OpArbitraryFloatCbrtINTEL", SpvOpArbitraryFloatCbrtINTEL}, + {"OpSubgroupAvcBmeInitializeINTEL", SpvOpSubgroupAvcBmeInitializeINTEL}, + {"OpFunctionPointerCallINTEL", SpvOpFunctionPointerCallINTEL}, + {"OpArbitraryFloatCastFromIntINTEL", SpvOpArbitraryFloatCastFromIntINTEL}, + {"OpMemberDecorateStringGOOGLE", SpvOpMemberDecorateStringGOOGLE}, + {"OpSConvert", SpvOpSConvert}, + {"OpSMulExtended", SpvOpSMulExtended}, + {"OpAtomicExchange", SpvOpAtomicExchange}, + {"OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL", SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL}, + {"OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL", SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL}, + {"OpTypeSampledImage", SpvOpTypeSampledImage}, + {"OpGroupNonUniformBitwiseAnd", SpvOpGroupNonUniformBitwiseAnd}, + {"OpGroupUMaxNonUniformAMD", SpvOpGroupUMaxNonUniformAMD}, + {"OpCopyLogical", SpvOpCopyLogical}, + {"OpSNegate", SpvOpSNegate}, + {"OpTypeReserveId", SpvOpTypeReserveId}, + {"OpImageSparseSampleProjExplicitLod", SpvOpImageSparseSampleProjExplicitLod}, + {"OpDecorateId", SpvOpDecorateId}, + {"OpEmitMeshTasksEXT", SpvOpEmitMeshTasksEXT}, + {"OpSaveMemoryINTEL", SpvOpSaveMemoryINTEL}, + {"OpSubgroupBlockWriteINTEL", SpvOpSubgroupBlockWriteINTEL}, + {"OpTypeVector", SpvOpTypeVector}, + {"OpAbsUSubINTEL", SpvOpAbsUSubINTEL}, + {"OpLogicalNot", SpvOpLogicalNot}, + {"OpImageSparseSampleExplicitLod", SpvOpImageSparseSampleExplicitLod}, + {"OpSubgroupAvcImeSetWeightedSadINTEL", SpvOpSubgroupAvcImeSetWeightedSadINTEL}, + {"OpCompositeConstruct", SpvOpCompositeConstruct}, + {"OpTypeCooperativeMatrixNV", SpvOpTypeCooperativeMatrixNV}, + {"OpAtomicISub", SpvOpAtomicISub}, + {"OpImageSampleProjDrefImplicitLod", SpvOpImageSampleProjDrefImplicitLod}, + {"OpSubgroupAvcImeConvertToMceResultINTEL", SpvOpSubgroupAvcImeConvertToMceResultINTEL}, + {"OpFixedSinCosPiINTEL", SpvOpFixedSinCosPiINTEL}, + {"OpIAverageRoundedINTEL", SpvOpIAverageRoundedINTEL}, + {"OpSubgroupAvcMceGetInterDistortionsINTEL", SpvOpSubgroupAvcMceGetInterDistortionsINTEL}, + {"OpFOrdLessThan", SpvOpFOrdLessThan}, + {"OpULessThanEqual", SpvOpULessThanEqual}, + {"OpSpecConstant", SpvOpSpecConstant}, + {"OpUDotKHR", SpvOpUDotKHR}, + {"OpTypeVoid", SpvOpTypeVoid}, + {"OpSubgroupAvcSicEvaluateWithDualReferenceINTEL", SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL}, + {"OpAtomicXor", SpvOpAtomicXor}, + {"OpArbitraryFloatRSqrtINTEL", SpvOpArbitraryFloatRSqrtINTEL}, + {"OpConvertSToF", SpvOpConvertSToF}, + {"OpBitcast", SpvOpBitcast}, + {"OpSubgroupAvcMceSetInterShapePenaltyINTEL", SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL}, + {"OpImageGather", SpvOpImageGather}, + {"OpSubgroupAvcMceSetAcOnlyHaarINTEL", SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL}, + {"OpUDot", SpvOpUDot}, + {"OpImageSparseSampleDrefExplicitLod", SpvOpImageSparseSampleDrefExplicitLod}, + {"OpRayQueryGetRayFlagsKHR", SpvOpRayQueryGetRayFlagsKHR}, + {"OpTerminateRayNV", SpvOpTerminateRayNV}, + {"OpGroupLogicalXorKHR", SpvOpGroupLogicalXorKHR}, + {"OpGroupNonUniformIAdd", SpvOpGroupNonUniformIAdd}, + {"OpFunctionCall", SpvOpFunctionCall}, + {"OpTypeAvcSicPayloadINTEL", SpvOpTypeAvcSicPayloadINTEL}, + {"OpImageQuerySamples", SpvOpImageQuerySamples}, + {"OpAtomicCompareExchange", SpvOpAtomicCompareExchange}, + {"OpGroupNonUniformLogicalXor", SpvOpGroupNonUniformLogicalXor}, + {"OpImageSampleProjExplicitLod", SpvOpImageSampleProjExplicitLod}, + {"OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL", SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL}, + {"OpArbitraryFloatLog10INTEL", SpvOpArbitraryFloatLog10INTEL}, + {"OpSamplerImageAddressingModeNV", SpvOpSamplerImageAddressingModeNV}, + {"OpExecuteCallableNV", SpvOpExecuteCallableNV}, + {"OpGroupIAdd", SpvOpGroupIAdd}, + {"OpFUnordGreaterThanEqual", SpvOpFUnordGreaterThanEqual}, + {"OpSubgroupAvcRefSetBilinearFilterEnableINTEL", SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL}, + {"OpMemoryNamedBarrier", SpvOpMemoryNamedBarrier}, + {"OpTypeEvent", SpvOpTypeEvent}, + {"OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL", SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL}, + {"OpDPdx", SpvOpDPdx}, + {"OpDPdy", SpvOpDPdy}, + {"OpEmitVertex", SpvOpEmitVertex}, + {"OpTraceNV", SpvOpTraceNV}, + {"OpGroupFMaxNonUniformAMD", SpvOpGroupFMaxNonUniformAMD}, + {"OpArbitraryFloatATanPiINTEL", SpvOpArbitraryFloatATanPiINTEL}, + {"OpGroupBitwiseAndKHR", SpvOpGroupBitwiseAndKHR}, + {"OpMemberName", SpvOpMemberName}, + {"OpGroupMemberDecorate", SpvOpGroupMemberDecorate}, + {"OpUMod", SpvOpUMod}, + {"OpSubgroupAvcMceGetInterMotionVectorCountINTEL", SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL}, + {"OpSubgroupAvcImeEvaluateWithDualReferenceINTEL", SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL}, + {"OpArbitraryFloatPowRINTEL", SpvOpArbitraryFloatPowRINTEL}, + {"OpImageSampleDrefImplicitLod", SpvOpImageSampleDrefImplicitLod}, + {"OpImageDrefGather", SpvOpImageDrefGather}, + {"OpSubgroupImageMediaBlockReadINTEL", SpvOpSubgroupImageMediaBlockReadINTEL}, + {"OpGroupLogicalAndKHR", SpvOpGroupLogicalAndKHR}, + {"OpSubgroupAvcMceGetInterReferenceIdsINTEL", SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL}, + {"OpMemoryBarrier", SpvOpMemoryBarrier}, + {"OpSubgroupAvcSicGetMotionVectorMaskINTEL", SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL}, + {"OpWritePipeBlockingINTEL", SpvOpWritePipeBlockingINTEL}, + {"OpTypeAvcImeResultSingleReferenceStreamoutINTEL", SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL}, + {"OpGroupNonUniformPartitionNV", SpvOpGroupNonUniformPartitionNV}, + {"OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL", SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL}, + {"OpConvertFToU", SpvOpConvertFToU}, + {"OpFMul", SpvOpFMul}, + {"OpGroupNonUniformFMul", SpvOpGroupNonUniformFMul}, + {"OpShiftRightLogical", SpvOpShiftRightLogical}, + {"OpConvertUToImageNV", SpvOpConvertUToImageNV}, + {"OpInBoundsPtrAccessChain", SpvOpInBoundsPtrAccessChain}, + {"OpVectorTimesMatrix", SpvOpVectorTimesMatrix}, + {"OpTypeSampler", SpvOpTypeSampler}, + {"OpFixedRsqrtINTEL", SpvOpFixedRsqrtINTEL}, + {"OpPtrDiff", SpvOpPtrDiff}, + {"OpArbitraryFloatSinINTEL", SpvOpArbitraryFloatSinINTEL}, + {"OpSubgroupAvcImeSetSingleReferenceINTEL", SpvOpSubgroupAvcImeSetSingleReferenceINTEL}, + {"OpRetainEvent", SpvOpRetainEvent}, + {"OpReportIntersectionKHR", SpvOpReportIntersectionKHR}, + {"OpArbitraryFloatSqrtINTEL", SpvOpArbitraryFloatSqrtINTEL}, + {"OpSpecConstantTrue", SpvOpSpecConstantTrue}, + {"OpRayQueryGetIntersectionFrontFaceKHR", SpvOpRayQueryGetIntersectionFrontFaceKHR}, + {"OpArbitraryFloatCosPiINTEL", SpvOpArbitraryFloatCosPiINTEL}, + {"OpFixedSinCosINTEL", SpvOpFixedSinCosINTEL}, + {"OpGroupNonUniformLogicalOr", SpvOpGroupNonUniformLogicalOr}, + {"OpCrossWorkgroupCastToPtrINTEL", SpvOpCrossWorkgroupCastToPtrINTEL}, + {"OpFUnordLessThan", SpvOpFUnordLessThan}, +}; + +static UInt32 hash(const UnownedStringSlice& str, UInt32 salt) +{ + UInt64 h = salt; + for(const char c : str) + h = ((h * 0x00000100000001B3) ^ c); + return h % (sizeof(tableSalt)/sizeof(tableSalt[0])); +} + +bool lookupSpvOp(const UnownedStringSlice& str, SpvOp& value) +{ + const auto i = hash(str, tableSalt[hash(str, 0)]); + if(str == words[i].name) + { + value = words[i].value; + return true; + } + else + { + return false; + } +} + +} |
