]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/spirvconstants.h
Add a SPIR-V backend to the GLSL compiler
[libs/gl.git] / source / glsl / spirvconstants.h
diff --git a/source/glsl/spirvconstants.h b/source/glsl/spirvconstants.h
new file mode 100644 (file)
index 0000000..b981d19
--- /dev/null
@@ -0,0 +1,275 @@
+#ifndef MSP_GL_SL_SPIRVCONSTANTS_H_
+#define MSP_GL_SL_SPIRVCONSTANTS_H_
+
+namespace Msp {
+namespace GL {
+namespace SL {
+
+enum SpirVConstants
+{
+       SPIRV_MAGIC = 0x07230203,
+       SPIRV_MAGIC_REVERSED = 0x03022307
+};
+
+enum SpirVOpcode
+{
+       OP_NOP = 1,
+       OP_NAME = 5,
+       OP_MEMBER_NAME = 6,
+       OP_EXT_INST_IMPORT = 11,
+       OP_EXT_INST = 12,
+       OP_MEMORY_MODEL = 14,
+       OP_ENTRY_POINT = 15,
+       OP_EXECUTION_MODE = 16,
+       OP_CAPABILITY = 17,
+       OP_TYPE_VOID = 19,
+       OP_TYPE_BOOL = 20,
+       OP_TYPE_INT = 21,
+       OP_TYPE_FLOAT = 22,
+       OP_TYPE_VECTOR = 23,
+       OP_TYPE_MATRIX = 24,
+       OP_TYPE_IMAGE = 25,
+       OP_TYPE_SAMPLED_IMAGE = 27,
+       OP_TYPE_ARRAY = 28,
+       OP_TYPE_RUNTIME_ARRAY = 29,
+       OP_TYPE_STRUCT = 30,
+       OP_TYPE_POINTER = 32,
+       OP_TYPE_FUNCTION = 33,
+       OP_CONSTANT_TRUE = 41,
+       OP_CONSTANT_FALSE = 42,
+       OP_CONSTANT = 43,
+       OP_CONSTANT_COMPOSITE = 44,
+       OP_SPEC_CONSTANT_TRUE = 48,
+       OP_SPEC_CONSTANT_FALSE = 49,
+       OP_SPEC_CONSTANT = 50,
+       OP_SPEC_CONSTANT_COMPOSITE = 51,
+       OP_SPEC_CONSTANT_OP = 52,
+       OP_FUNCTION = 54,
+       OP_FUNCTION_PARAMETER = 55,
+       OP_FUNCTION_END = 56,
+       OP_FUNCTION_CALL = 57,
+       OP_VARIABLE = 59,
+       OP_LOAD = 61,
+       OP_STORE = 62,
+       OP_ACCESS_CHAIN = 65,
+       OP_DECORATE = 71,
+       OP_MEMBER_DECORATE = 72,
+       OP_VECTOR_SHUFFLE = 79,
+       OP_COMPOSITE_CONSTRUCT = 80,
+       OP_COMPOSITE_EXTRACT = 81,
+       OP_TRANSPOSE = 84,
+       OP_IMAGE_SAMPLE_IMPLICIT_LOD = 87,
+       OP_IMAGE_SAMPLE_EXPLICIT_LOD = 88,
+       OP_IMAGE_SAMPLE_DREF_IMPLICIT_LOD = 89,
+       OP_IMAGE_SAMPLE_DREF_EXPLICIT_LOD = 89,
+       OP_IMAGE_FETCH = 95,
+       OP_IMAGE_QUERY_SIZE_LOD = 103,
+       OP_CONVERT_F_TO_S = 110,
+       OP_CONVERT_S_TO_F = 111,
+       OP_S_NEGATE = 126,
+       OP_F_NEGATE = 127,
+       OP_I_ADD = 128,
+       OP_F_ADD = 129,
+       OP_I_SUB = 130,
+       OP_F_SUB = 131,
+       OP_I_MUL = 132,
+       OP_F_MUL = 133,
+       OP_S_DIV = 135,
+       OP_F_DIV = 136,
+       OP_S_MOD = 139,
+       OP_F_MOD = 141,
+       OP_VECTOR_TIMES_SCALAR = 142,
+       OP_MATRIX_TIMES_SCALAR = 143,
+       OP_VECTOR_TIMES_MATRIX = 144,
+       OP_MATRIX_TIMES_VECTOR = 145,
+       OP_MATRIX_TIMES_MATRIX = 146,
+       OP_OUTER_PRODUCT = 147,
+       OP_DOT = 148,
+       OP_ANY = 154,
+       OP_ALL = 155,
+       OP_IS_NAN = 156,
+       OP_IS_INF = 157,
+       OP_LOGICAL_EQUAL = 164,
+       OP_LOGICAL_NOT_EQUAL = 165,
+       OP_LOGICAL_OR = 166,
+       OP_LOGICAL_AND = 167,
+       OP_LOGICAL_NOT = 168,
+       OP_SELECT = 169,
+       OP_I_EQUAL = 170,
+       OP_I_NOT_EQUAL = 171,
+       OP_S_GREATER_THAN = 173,
+       OP_S_GREATER_THAN_EQUAL = 175,
+       OP_S_LESS_THAN = 177,
+       OP_S_LESS_THAN_EQUAL = 179,
+       OP_F_ORD_EQUAL = 180,
+       OP_F_ORD_NOT_EQUAL = 182,
+       OP_F_ORD_LESS_THAN = 184,
+       OP_F_ORD_GREATER_THAN = 186,
+       OP_F_ORD_LESS_THAN_EQUAL = 188,
+       OP_F_ORD_GREATER_THAN_EQUAL = 190,
+       OP_SHIFT_RIGHT_ARITHMETIC = 195,
+       OP_SHIFT_LEFT_LOGICAL = 196,
+       OP_BITWISE_OR = 197,
+       OP_BITWISE_XOR = 198,
+       OP_BITWISE_AND = 199,
+       OP_NOT = 200,
+       OP_BIT_FIELD_INSERT = 201,
+       OP_BIT_FIELD_S_EXTRACT = 202,
+       OP_BIT_REVERSE = 204,
+       OP_BIT_COUNT = 205,
+       OP_DP_DX = 207,
+       OP_DP_DY = 208,
+       OP_FWIDTH = 209,
+       OP_DP_DX_FINE = 210,
+       OP_DP_DY_FINE = 211,
+       OP_FWIDTH_FINE = 212,
+       OP_DP_DX_COARSE = 213,
+       OP_DP_DY_COARSE = 214,
+       OP_FWIDTH_COARSE = 215,
+       OP_EMIT_VERTEX = 218,
+       OP_END_PRIMITIVE = 219,
+       OP_PHI = 245,
+       OP_LOOP_MERGE = 246,
+       OP_SELECTION_MERGE = 247,
+       OP_LABEL = 248,
+       OP_BRANCH = 249,
+       OP_BRANCH_CONDITIONAL = 250,
+       OP_KILL = 252,
+       OP_RETURN = 253,
+       OP_RETURN_VALUE = 254,
+       OP_UNREACHABLE = 255
+};
+
+enum SpirVCapability
+{
+       CAP_SHADER = 1,
+       CAP_GEOMETRY = 2,
+       CAP_IMAGE_CUBE_ARRAY = 34,
+       CAP_SAMPLED_1D = 43,
+       CAP_IMAGE_1D = 44,
+       CAP_SAMPLED_CUBE_ARRAY = 45,
+       CAP_INTERPOLATION_FUNCTION = 52
+};
+
+enum SpirVExecutionMode
+{
+       EXEC_ORIGIN_LOWER_LEFT = 8,
+       EXEC_INPUT_POINTS = 19,
+       EXEC_INPUT_LINES = 20,
+       EXEC_INPUT_LINES_ADJACENCY = 21,
+       EXEC_TRIANGLES = 22,
+       EXEC_INPUT_TRIANGLES_ADJACENCY = 23,
+       EXEC_OUTPUT_VERTICES = 26,
+       EXEC_OUTPUT_POINTS = 27,
+       EXEC_OUTPUT_LINE_STRIP = 28,
+       EXEC_OUTPUT_TRIANGLE_STRIP = 29
+};
+
+enum SpirVStorageClass
+{
+       STORAGE_UNIFORM_CONSTANT = 0,
+       STORAGE_INPUT = 1,
+       STORAGE_UNIFORM = 2,
+       STORAGE_OUTPUT = 3,
+       STORAGE_PRIVATE = 6,
+       STORAGE_FUNCTION = 7
+};
+
+enum SpirVDecoration
+{
+       DECO_SPEC_ID = 1,
+       DECO_BLOCK = 2,
+       DECO_ROW_MAJOR = 4,
+       DECO_COL_MAJOR = 5,
+       DECO_ARRAY_STRIDE = 6,
+       DECO_MATRIX_STRIDE = 7,
+       DECO_BUILTIN = 11,
+       DECO_LOCATION = 30,
+       DECO_BINDING = 33,
+       DECO_DESCRIPTOR_SET = 34,
+       DECO_OFFSET = 35
+};
+
+enum SpirVBuiltin
+{
+       BUILTIN_POSITION = 0,
+       BUILTIN_POINT_SIZE = 1,
+       BUILTIN_CLIP_DISTANCE = 3,
+       BUILTIN_VERTEX_ID = 5,
+       BUILTIN_INSTANCE_ID = 6,
+       BUILTIN_PRIMITIVE_ID = 7,
+       BUILTIN_INVOCATION_ID = 8,
+       BUILTIN_LAYER = 9,
+       BUILTIN_FRAG_COORD = 15,
+       BUILTIN_POINT_COORD = 16,
+       BUILTIN_FRONT_FACING = 17,
+       BUILTIN_SAMPLE_ID = 18,
+       BUILTIN_SAMPLE_POSITION = 19,
+       BUILTIN_FRAG_DEPTH = 22
+};
+
+enum SpirVGlslStd450Opcode
+{
+       GLSL450_ROUND = 1,
+       GLSL450_ROUND_EVEN = 2,
+       GLSL450_TRUNC = 3,
+       GLSL450_F_ABS = 4,
+       GLSL450_S_ABS = 5,
+       GLSL450_F_SIGN = 6,
+       GLSL450_S_SIGN = 7,
+       GLSL450_FLOOR = 8,
+       GLSL450_CEIL = 9,
+       GLSL450_FRACT = 10,
+       GLSL450_RADIANS = 11,
+       GLSL450_DEGREES = 12,
+       GLSL450_SIN = 13,
+       GLSL450_COS = 14,
+       GLSL450_TAN = 15,
+       GLSL450_ASIN = 16,
+       GLSL450_ACOS = 17,
+       GLSL450_ATAN = 18,
+       GLSL450_SINH = 19,
+       GLSL450_COSH = 20,
+       GLSL450_TANH = 21,
+       GLSL450_ASINH = 22,
+       GLSL450_ACOSH = 23,
+       GLSL450_ATANH = 24,
+       GLSL450_ATAN2 = 25,
+       GLSL450_POW = 26,
+       GLSL450_EXP = 27,
+       GLSL450_LOG = 28,
+       GLSL450_EXP2 = 29,
+       GLSL450_LOG2 = 30,
+       GLSL450_SQRT = 31,
+       GLSL450_INVERSE_SQRT = 32,
+       GLSL450_DETERMINANT = 33,
+       GLSL450_MATRIX_INVERSE = 33,
+       GLSL450_F_MIN = 37,
+       GLSL450_S_MIN = 39,
+       GLSL450_F_MAX = 40,
+       GLSL450_S_MAX = 42,
+       GLSL450_F_CLAMP = 43,
+       GLSL450_S_CLAMP = 45,
+       GLSL450_F_MIX = 46,
+       GLSL450_F_STEP = 48,
+       GLSL450_F_SMOOTH_STEP = 49,
+       GLSL450_F_FMA = 50,
+       GLSL450_LENGTH = 66,
+       GLSL450_DISTANCE = 67,
+       GLSL450_CROSS = 68,
+       GLSL450_NORMALIZE = 69,
+       GLSL450_FACE_FORWARD = 70,
+       GLSL450_REFLECT = 71,
+       GLSL450_REFRACT = 72,
+       GLSL450_FIND_I_LSB = 73,
+       GLSL450_FIND_S_MSB = 74,
+       GLSL450_INTERPOLATE_AT_CENTROID = 76,
+       GLSL450_INTERPOLATE_AT_SAMPLE = 77,
+       GLSL450_INTERPOLATE_AT_OFFSET = 78
+};
+
+} // namespace SL
+} // namespace GL
+} // namespace Msp
+
+#endif