sync code with last improvements from OpenBSD

This commit is contained in:
purplerain 2023-08-28 05:57:34 +00:00
commit 88965415ff
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
26235 changed files with 29195616 additions and 0 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,122 @@
/* A Bison parser, made by GNU Bison 3.7.6. */
/* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
especially those whose name start with YY_ or yy_. They are
private implementation details that can be changed or removed. */
#ifndef YY_GLCPP_PARSER_SRC_COMPILER_GLSL_GLCPP_GLCPP_PARSE_H_INCLUDED
# define YY_GLCPP_PARSER_SRC_COMPILER_GLSL_GLCPP_GLCPP_PARSE_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
#endif
#if YYDEBUG
extern int glcpp_parser_debug;
#endif
/* Token kinds. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
YYEMPTY = -2,
YYEOF = 0, /* "end of file" */
YYerror = 256, /* error */
YYUNDEF = 257, /* "invalid token" */
DEFINED = 258, /* DEFINED */
ELIF_EXPANDED = 259, /* ELIF_EXPANDED */
HASH_TOKEN = 260, /* HASH_TOKEN */
DEFINE_TOKEN = 261, /* DEFINE_TOKEN */
FUNC_IDENTIFIER = 262, /* FUNC_IDENTIFIER */
OBJ_IDENTIFIER = 263, /* OBJ_IDENTIFIER */
ELIF = 264, /* ELIF */
ELSE = 265, /* ELSE */
ENDIF = 266, /* ENDIF */
ERROR_TOKEN = 267, /* ERROR_TOKEN */
IF = 268, /* IF */
IFDEF = 269, /* IFDEF */
IFNDEF = 270, /* IFNDEF */
LINE = 271, /* LINE */
PRAGMA = 272, /* PRAGMA */
UNDEF = 273, /* UNDEF */
VERSION_TOKEN = 274, /* VERSION_TOKEN */
GARBAGE = 275, /* GARBAGE */
IDENTIFIER = 276, /* IDENTIFIER */
IF_EXPANDED = 277, /* IF_EXPANDED */
INTEGER = 278, /* INTEGER */
INTEGER_STRING = 279, /* INTEGER_STRING */
LINE_EXPANDED = 280, /* LINE_EXPANDED */
NEWLINE = 281, /* NEWLINE */
OTHER = 282, /* OTHER */
PLACEHOLDER = 283, /* PLACEHOLDER */
SPACE = 284, /* SPACE */
PLUS_PLUS = 285, /* PLUS_PLUS */
MINUS_MINUS = 286, /* MINUS_MINUS */
PATH = 287, /* PATH */
INCLUDE = 288, /* INCLUDE */
PASTE = 289, /* PASTE */
OR = 290, /* OR */
AND = 291, /* AND */
EQUAL = 292, /* EQUAL */
NOT_EQUAL = 293, /* NOT_EQUAL */
LESS_OR_EQUAL = 294, /* LESS_OR_EQUAL */
GREATER_OR_EQUAL = 295, /* GREATER_OR_EQUAL */
LEFT_SHIFT = 296, /* LEFT_SHIFT */
RIGHT_SHIFT = 297, /* RIGHT_SHIFT */
UNARY = 298 /* UNARY */
};
typedef enum yytokentype yytoken_kind_t;
#endif
/* Value type. */
/* Location type. */
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef struct YYLTYPE YYLTYPE;
struct YYLTYPE
{
int first_line;
int first_column;
int last_line;
int last_column;
};
# define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1
#endif
int glcpp_parser_parse (glcpp_parser_t *parser);
#endif /* !YY_GLCPP_PARSER_SRC_COMPILER_GLSL_GLCPP_GLCPP_PARSE_H_INCLUDED */

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,268 @@
/* A Bison parser, made by GNU Bison 3.7.6. */
/* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
especially those whose name start with YY_ or yy_. They are
private implementation details that can be changed or removed. */
#ifndef YY__MESA_GLSL_SRC_COMPILER_GLSL_GLSL_PARSER_H_INCLUDED
# define YY__MESA_GLSL_SRC_COMPILER_GLSL_GLSL_PARSER_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int _mesa_glsl_debug;
#endif
/* Token kinds. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
YYEMPTY = -2,
YYEOF = 0, /* "end of file" */
YYerror = 256, /* error */
YYUNDEF = 257, /* "invalid token" */
ATTRIBUTE = 258, /* ATTRIBUTE */
CONST_TOK = 259, /* CONST_TOK */
BASIC_TYPE_TOK = 260, /* BASIC_TYPE_TOK */
BREAK = 261, /* BREAK */
BUFFER = 262, /* BUFFER */
CONTINUE = 263, /* CONTINUE */
DO = 264, /* DO */
ELSE = 265, /* ELSE */
FOR = 266, /* FOR */
IF = 267, /* IF */
DEMOTE = 268, /* DEMOTE */
DISCARD = 269, /* DISCARD */
RETURN = 270, /* RETURN */
SWITCH = 271, /* SWITCH */
CASE = 272, /* CASE */
DEFAULT = 273, /* DEFAULT */
CENTROID = 274, /* CENTROID */
IN_TOK = 275, /* IN_TOK */
OUT_TOK = 276, /* OUT_TOK */
INOUT_TOK = 277, /* INOUT_TOK */
UNIFORM = 278, /* UNIFORM */
VARYING = 279, /* VARYING */
SAMPLE = 280, /* SAMPLE */
NOPERSPECTIVE = 281, /* NOPERSPECTIVE */
FLAT = 282, /* FLAT */
SMOOTH = 283, /* SMOOTH */
IMAGE1DSHADOW = 284, /* IMAGE1DSHADOW */
IMAGE2DSHADOW = 285, /* IMAGE2DSHADOW */
IMAGE1DARRAYSHADOW = 286, /* IMAGE1DARRAYSHADOW */
IMAGE2DARRAYSHADOW = 287, /* IMAGE2DARRAYSHADOW */
COHERENT = 288, /* COHERENT */
VOLATILE = 289, /* VOLATILE */
RESTRICT = 290, /* RESTRICT */
READONLY = 291, /* READONLY */
WRITEONLY = 292, /* WRITEONLY */
SHARED = 293, /* SHARED */
STRUCT = 294, /* STRUCT */
VOID_TOK = 295, /* VOID_TOK */
WHILE = 296, /* WHILE */
IDENTIFIER = 297, /* IDENTIFIER */
TYPE_IDENTIFIER = 298, /* TYPE_IDENTIFIER */
NEW_IDENTIFIER = 299, /* NEW_IDENTIFIER */
FLOATCONSTANT = 300, /* FLOATCONSTANT */
DOUBLECONSTANT = 301, /* DOUBLECONSTANT */
INTCONSTANT = 302, /* INTCONSTANT */
UINTCONSTANT = 303, /* UINTCONSTANT */
BOOLCONSTANT = 304, /* BOOLCONSTANT */
INT64CONSTANT = 305, /* INT64CONSTANT */
UINT64CONSTANT = 306, /* UINT64CONSTANT */
FIELD_SELECTION = 307, /* FIELD_SELECTION */
LEFT_OP = 308, /* LEFT_OP */
RIGHT_OP = 309, /* RIGHT_OP */
INC_OP = 310, /* INC_OP */
DEC_OP = 311, /* DEC_OP */
LE_OP = 312, /* LE_OP */
GE_OP = 313, /* GE_OP */
EQ_OP = 314, /* EQ_OP */
NE_OP = 315, /* NE_OP */
AND_OP = 316, /* AND_OP */
OR_OP = 317, /* OR_OP */
XOR_OP = 318, /* XOR_OP */
MUL_ASSIGN = 319, /* MUL_ASSIGN */
DIV_ASSIGN = 320, /* DIV_ASSIGN */
ADD_ASSIGN = 321, /* ADD_ASSIGN */
MOD_ASSIGN = 322, /* MOD_ASSIGN */
LEFT_ASSIGN = 323, /* LEFT_ASSIGN */
RIGHT_ASSIGN = 324, /* RIGHT_ASSIGN */
AND_ASSIGN = 325, /* AND_ASSIGN */
XOR_ASSIGN = 326, /* XOR_ASSIGN */
OR_ASSIGN = 327, /* OR_ASSIGN */
SUB_ASSIGN = 328, /* SUB_ASSIGN */
INVARIANT = 329, /* INVARIANT */
PRECISE = 330, /* PRECISE */
LOWP = 331, /* LOWP */
MEDIUMP = 332, /* MEDIUMP */
HIGHP = 333, /* HIGHP */
SUPERP = 334, /* SUPERP */
PRECISION = 335, /* PRECISION */
VERSION_TOK = 336, /* VERSION_TOK */
EXTENSION = 337, /* EXTENSION */
LINE = 338, /* LINE */
COLON = 339, /* COLON */
EOL = 340, /* EOL */
INTERFACE_TOK = 341, /* INTERFACE_TOK */
OUTPUT = 342, /* OUTPUT */
PRAGMA_DEBUG_ON = 343, /* PRAGMA_DEBUG_ON */
PRAGMA_DEBUG_OFF = 344, /* PRAGMA_DEBUG_OFF */
PRAGMA_OPTIMIZE_ON = 345, /* PRAGMA_OPTIMIZE_ON */
PRAGMA_OPTIMIZE_OFF = 346, /* PRAGMA_OPTIMIZE_OFF */
PRAGMA_WARNING_ON = 347, /* PRAGMA_WARNING_ON */
PRAGMA_WARNING_OFF = 348, /* PRAGMA_WARNING_OFF */
PRAGMA_INVARIANT_ALL = 349, /* PRAGMA_INVARIANT_ALL */
LAYOUT_TOK = 350, /* LAYOUT_TOK */
DOT_TOK = 351, /* DOT_TOK */
ASM = 352, /* ASM */
CLASS = 353, /* CLASS */
UNION = 354, /* UNION */
ENUM = 355, /* ENUM */
TYPEDEF = 356, /* TYPEDEF */
TEMPLATE = 357, /* TEMPLATE */
THIS = 358, /* THIS */
PACKED_TOK = 359, /* PACKED_TOK */
GOTO = 360, /* GOTO */
INLINE_TOK = 361, /* INLINE_TOK */
NOINLINE = 362, /* NOINLINE */
PUBLIC_TOK = 363, /* PUBLIC_TOK */
STATIC = 364, /* STATIC */
EXTERN = 365, /* EXTERN */
EXTERNAL = 366, /* EXTERNAL */
LONG_TOK = 367, /* LONG_TOK */
SHORT_TOK = 368, /* SHORT_TOK */
HALF = 369, /* HALF */
FIXED_TOK = 370, /* FIXED_TOK */
UNSIGNED = 371, /* UNSIGNED */
INPUT_TOK = 372, /* INPUT_TOK */
HVEC2 = 373, /* HVEC2 */
HVEC3 = 374, /* HVEC3 */
HVEC4 = 375, /* HVEC4 */
FVEC2 = 376, /* FVEC2 */
FVEC3 = 377, /* FVEC3 */
FVEC4 = 378, /* FVEC4 */
SAMPLER3DRECT = 379, /* SAMPLER3DRECT */
SIZEOF = 380, /* SIZEOF */
CAST = 381, /* CAST */
NAMESPACE = 382, /* NAMESPACE */
USING = 383, /* USING */
RESOURCE = 384, /* RESOURCE */
PATCH = 385, /* PATCH */
SUBROUTINE = 386, /* SUBROUTINE */
ERROR_TOK = 387, /* ERROR_TOK */
COMMON = 388, /* COMMON */
PARTITION = 389, /* PARTITION */
ACTIVE = 390, /* ACTIVE */
FILTER = 391, /* FILTER */
ROW_MAJOR = 392, /* ROW_MAJOR */
THEN = 393 /* THEN */
};
typedef enum yytokentype yytoken_kind_t;
#endif
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
#line 100 "../src/compiler/glsl/glsl_parser.yy"
int n;
int64_t n64;
float real;
double dreal;
const char *identifier;
struct ast_type_qualifier type_qualifier;
ast_node *node;
ast_type_specifier *type_specifier;
ast_array_specifier *array_specifier;
ast_fully_specified_type *fully_specified_type;
ast_function *function;
ast_parameter_declarator *parameter_declarator;
ast_function_definition *function_definition;
ast_compound_statement *compound_statement;
ast_expression *expression;
ast_declarator_list *declarator_list;
ast_struct_specifier *struct_specifier;
ast_declaration *declaration;
ast_switch_body *switch_body;
ast_case_label *case_label;
ast_case_label_list *case_label_list;
ast_case_statement *case_statement;
ast_case_statement_list *case_statement_list;
ast_interface_block *interface_block;
ast_subroutine_list *subroutine_list;
struct {
ast_node *cond;
ast_expression *rest;
} for_rest_statement;
struct {
ast_node *then_statement;
ast_node *else_statement;
} selection_rest_statement;
const glsl_type *type;
#line 243 "src/compiler/glsl/glsl_parser.h"
};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
/* Location type. */
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef struct YYLTYPE YYLTYPE;
struct YYLTYPE
{
int first_line;
int first_column;
int last_line;
int last_column;
};
# define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1
#endif
int _mesa_glsl_parse (struct _mesa_glsl_parse_state *state);
#endif /* !YY__MESA_GLSL_SRC_COMPILER_GLSL_GLSL_PARSER_H_INCLUDED */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,344 @@
/*
* Copyright (C) 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
const char *const ir_expression_operation_strings[] = {
"~",
"!",
"neg",
"abs",
"sign",
"rcp",
"rsq",
"sqrt",
"exp",
"log",
"exp2",
"log2",
"f2i",
"f2u",
"i2f",
"f2b",
"b2f",
"b2f16",
"i2b",
"b2i",
"u2f",
"i2u",
"u2i",
"d2f",
"f2d",
"f2f16",
"f2fmp",
"f162f",
"i2i",
"i2imp",
"u2u",
"u2ump",
"d2i",
"i2d",
"d2u",
"u2d",
"d2b",
"f162b",
"bitcast_i2f",
"bitcast_f2i",
"bitcast_u2f",
"bitcast_f2u",
"bitcast_u642d",
"bitcast_i642d",
"bitcast_d2u64",
"bitcast_d2i64",
"i642i",
"u642i",
"i642u",
"u642u",
"i642b",
"i642f",
"u642f",
"i642d",
"u642d",
"i2i64",
"u2i64",
"b2i64",
"f2i64",
"d2i64",
"i2u64",
"u2u64",
"f2u64",
"d2u64",
"u642i64",
"i642u64",
"trunc",
"ceil",
"floor",
"fract",
"round_even",
"sin",
"cos",
"atan",
"dFdx",
"dFdxCoarse",
"dFdxFine",
"dFdy",
"dFdyCoarse",
"dFdyFine",
"packSnorm2x16",
"packSnorm4x8",
"packUnorm2x16",
"packUnorm4x8",
"packHalf2x16",
"unpackSnorm2x16",
"unpackSnorm4x8",
"unpackUnorm2x16",
"unpackUnorm4x8",
"unpackHalf2x16",
"bitfield_reverse",
"bit_count",
"find_msb",
"find_lsb",
"clz",
"sat",
"packDouble2x32",
"unpackDouble2x32",
"packSampler2x32",
"packImage2x32",
"unpackSampler2x32",
"unpackImage2x32",
"frexp_sig",
"frexp_exp",
"subroutine_to_int",
"interpolate_at_centroid",
"get_buffer_size",
"ssbo_unsized_array_length",
"implicitly_sized_array_length",
"packInt2x32",
"packUint2x32",
"unpackInt2x32",
"unpackUint2x32",
"+",
"-",
"add_sat",
"sub_sat",
"abs_sub",
"average",
"average_rounded",
"*",
"*",
"imul_high",
"/",
"carry",
"borrow",
"%",
"<",
">=",
"==",
"!=",
"all_equal",
"any_nequal",
"<<",
">>",
"&",
"^",
"|",
"&&",
"^^",
"||",
"dot",
"min",
"max",
"pow",
"ubo_load",
"ldexp",
"vector_extract",
"interpolate_at_offset",
"interpolate_at_sample",
"atan2",
"fma",
"lrp",
"csel",
"bitfield_extract",
"vector_insert",
"bitfield_insert",
"vector",
};
const char *const ir_expression_operation_enum_strings[] = {
"bit_not",
"logic_not",
"neg",
"abs",
"sign",
"rcp",
"rsq",
"sqrt",
"exp",
"log",
"exp2",
"log2",
"f2i",
"f2u",
"i2f",
"f2b",
"b2f",
"b2f16",
"i2b",
"b2i",
"u2f",
"i2u",
"u2i",
"d2f",
"f2d",
"f2f16",
"f2fmp",
"f162f",
"i2i",
"i2imp",
"u2u",
"u2ump",
"d2i",
"i2d",
"d2u",
"u2d",
"d2b",
"f162b",
"bitcast_i2f",
"bitcast_f2i",
"bitcast_u2f",
"bitcast_f2u",
"bitcast_u642d",
"bitcast_i642d",
"bitcast_d2u64",
"bitcast_d2i64",
"i642i",
"u642i",
"i642u",
"u642u",
"i642b",
"i642f",
"u642f",
"i642d",
"u642d",
"i2i64",
"u2i64",
"b2i64",
"f2i64",
"d2i64",
"i2u64",
"u2u64",
"f2u64",
"d2u64",
"u642i64",
"i642u64",
"trunc",
"ceil",
"floor",
"fract",
"round_even",
"sin",
"cos",
"atan",
"dFdx",
"dFdx_coarse",
"dFdx_fine",
"dFdy",
"dFdy_coarse",
"dFdy_fine",
"pack_snorm_2x16",
"pack_snorm_4x8",
"pack_unorm_2x16",
"pack_unorm_4x8",
"pack_half_2x16",
"unpack_snorm_2x16",
"unpack_snorm_4x8",
"unpack_unorm_2x16",
"unpack_unorm_4x8",
"unpack_half_2x16",
"bitfield_reverse",
"bit_count",
"find_msb",
"find_lsb",
"clz",
"saturate",
"pack_double_2x32",
"unpack_double_2x32",
"pack_sampler_2x32",
"pack_image_2x32",
"unpack_sampler_2x32",
"unpack_image_2x32",
"frexp_sig",
"frexp_exp",
"subroutine_to_int",
"interpolate_at_centroid",
"get_buffer_size",
"ssbo_unsized_array_length",
"implicitly_sized_array_length",
"pack_int_2x32",
"pack_uint_2x32",
"unpack_int_2x32",
"unpack_uint_2x32",
"add",
"sub",
"add_sat",
"sub_sat",
"abs_sub",
"avg",
"avg_round",
"mul",
"mul_32x16",
"imul_high",
"div",
"carry",
"borrow",
"mod",
"less",
"gequal",
"equal",
"nequal",
"all_equal",
"any_nequal",
"lshift",
"rshift",
"bit_and",
"bit_xor",
"bit_or",
"logic_and",
"logic_xor",
"logic_or",
"dot",
"min",
"max",
"pow",
"ubo_load",
"ldexp",
"vector_extract",
"interpolate_at_offset",
"interpolate_at_sample",
"atan2",
"fma",
"lrp",
"csel",
"bitfield_extract",
"vector_insert",
"bitfield_insert",
"vector",
};

View file

@ -0,0 +1,190 @@
/*
* Copyright (C) 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
enum ir_expression_operation {
ir_unop_bit_not,
ir_unop_logic_not,
ir_unop_neg,
ir_unop_abs,
ir_unop_sign,
ir_unop_rcp,
ir_unop_rsq,
ir_unop_sqrt,
ir_unop_exp,
ir_unop_log,
ir_unop_exp2,
ir_unop_log2,
ir_unop_f2i,
ir_unop_f2u,
ir_unop_i2f,
ir_unop_f2b,
ir_unop_b2f,
ir_unop_b2f16,
ir_unop_i2b,
ir_unop_b2i,
ir_unop_u2f,
ir_unop_i2u,
ir_unop_u2i,
ir_unop_d2f,
ir_unop_f2d,
ir_unop_f2f16,
ir_unop_f2fmp,
ir_unop_f162f,
ir_unop_i2i,
ir_unop_i2imp,
ir_unop_u2u,
ir_unop_u2ump,
ir_unop_d2i,
ir_unop_i2d,
ir_unop_d2u,
ir_unop_u2d,
ir_unop_d2b,
ir_unop_f162b,
ir_unop_bitcast_i2f,
ir_unop_bitcast_f2i,
ir_unop_bitcast_u2f,
ir_unop_bitcast_f2u,
ir_unop_bitcast_u642d,
ir_unop_bitcast_i642d,
ir_unop_bitcast_d2u64,
ir_unop_bitcast_d2i64,
ir_unop_i642i,
ir_unop_u642i,
ir_unop_i642u,
ir_unop_u642u,
ir_unop_i642b,
ir_unop_i642f,
ir_unop_u642f,
ir_unop_i642d,
ir_unop_u642d,
ir_unop_i2i64,
ir_unop_u2i64,
ir_unop_b2i64,
ir_unop_f2i64,
ir_unop_d2i64,
ir_unop_i2u64,
ir_unop_u2u64,
ir_unop_f2u64,
ir_unop_d2u64,
ir_unop_u642i64,
ir_unop_i642u64,
ir_unop_trunc,
ir_unop_ceil,
ir_unop_floor,
ir_unop_fract,
ir_unop_round_even,
ir_unop_sin,
ir_unop_cos,
ir_unop_atan,
ir_unop_dFdx,
ir_unop_dFdx_coarse,
ir_unop_dFdx_fine,
ir_unop_dFdy,
ir_unop_dFdy_coarse,
ir_unop_dFdy_fine,
ir_unop_pack_snorm_2x16,
ir_unop_pack_snorm_4x8,
ir_unop_pack_unorm_2x16,
ir_unop_pack_unorm_4x8,
ir_unop_pack_half_2x16,
ir_unop_unpack_snorm_2x16,
ir_unop_unpack_snorm_4x8,
ir_unop_unpack_unorm_2x16,
ir_unop_unpack_unorm_4x8,
ir_unop_unpack_half_2x16,
ir_unop_bitfield_reverse,
ir_unop_bit_count,
ir_unop_find_msb,
ir_unop_find_lsb,
ir_unop_clz,
ir_unop_saturate,
ir_unop_pack_double_2x32,
ir_unop_unpack_double_2x32,
ir_unop_pack_sampler_2x32,
ir_unop_pack_image_2x32,
ir_unop_unpack_sampler_2x32,
ir_unop_unpack_image_2x32,
ir_unop_frexp_sig,
ir_unop_frexp_exp,
ir_unop_subroutine_to_int,
ir_unop_interpolate_at_centroid,
ir_unop_get_buffer_size,
ir_unop_ssbo_unsized_array_length,
ir_unop_implicitly_sized_array_length,
ir_unop_pack_int_2x32,
ir_unop_pack_uint_2x32,
ir_unop_unpack_int_2x32,
ir_unop_unpack_uint_2x32,
ir_binop_add,
ir_binop_sub,
ir_binop_add_sat,
ir_binop_sub_sat,
ir_binop_abs_sub,
ir_binop_avg,
ir_binop_avg_round,
ir_binop_mul,
ir_binop_mul_32x16,
ir_binop_imul_high,
ir_binop_div,
ir_binop_carry,
ir_binop_borrow,
ir_binop_mod,
ir_binop_less,
ir_binop_gequal,
ir_binop_equal,
ir_binop_nequal,
ir_binop_all_equal,
ir_binop_any_nequal,
ir_binop_lshift,
ir_binop_rshift,
ir_binop_bit_and,
ir_binop_bit_xor,
ir_binop_bit_or,
ir_binop_logic_and,
ir_binop_logic_xor,
ir_binop_logic_or,
ir_binop_dot,
ir_binop_min,
ir_binop_max,
ir_binop_pow,
ir_binop_ubo_load,
ir_binop_ldexp,
ir_binop_vector_extract,
ir_binop_interpolate_at_offset,
ir_binop_interpolate_at_sample,
ir_binop_atan2,
ir_triop_fma,
ir_triop_lrp,
ir_triop_csel,
ir_triop_bitfield_extract,
ir_triop_vector_insert,
ir_quadop_bitfield_insert,
ir_quadop_vector,
/* Sentinels marking the last of each kind of operation. */
ir_last_unop = ir_unop_unpack_uint_2x32,
ir_last_binop = ir_binop_atan2,
ir_last_triop = ir_triop_vector_insert,
ir_last_quadop = ir_quadop_vector,
ir_last_opcode = ir_quadop_vector
};

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,725 @@
/* Copyright (C) 2018 Red Hat
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/
#ifndef _NIR_INTRINSICS_
#define _NIR_INTRINSICS_
typedef enum {
nir_intrinsic_accept_ray_intersection,
nir_intrinsic_addr_mode_is,
nir_intrinsic_alloc_vertices_and_primitives_amd,
nir_intrinsic_atomic_add_gen_prim_count_amd,
nir_intrinsic_atomic_add_gs_emit_prim_count_amd,
nir_intrinsic_atomic_add_xfb_prim_count_amd,
nir_intrinsic_atomic_counter_add,
nir_intrinsic_atomic_counter_add_deref,
nir_intrinsic_atomic_counter_and,
nir_intrinsic_atomic_counter_and_deref,
nir_intrinsic_atomic_counter_comp_swap,
nir_intrinsic_atomic_counter_comp_swap_deref,
nir_intrinsic_atomic_counter_exchange,
nir_intrinsic_atomic_counter_exchange_deref,
nir_intrinsic_atomic_counter_inc,
nir_intrinsic_atomic_counter_inc_deref,
nir_intrinsic_atomic_counter_max,
nir_intrinsic_atomic_counter_max_deref,
nir_intrinsic_atomic_counter_min,
nir_intrinsic_atomic_counter_min_deref,
nir_intrinsic_atomic_counter_or,
nir_intrinsic_atomic_counter_or_deref,
nir_intrinsic_atomic_counter_post_dec,
nir_intrinsic_atomic_counter_post_dec_deref,
nir_intrinsic_atomic_counter_pre_dec,
nir_intrinsic_atomic_counter_pre_dec_deref,
nir_intrinsic_atomic_counter_read,
nir_intrinsic_atomic_counter_read_deref,
nir_intrinsic_atomic_counter_xor,
nir_intrinsic_atomic_counter_xor_deref,
nir_intrinsic_ballot,
nir_intrinsic_ballot_bit_count_exclusive,
nir_intrinsic_ballot_bit_count_inclusive,
nir_intrinsic_ballot_bit_count_reduce,
nir_intrinsic_ballot_bitfield_extract,
nir_intrinsic_ballot_find_lsb,
nir_intrinsic_ballot_find_msb,
nir_intrinsic_begin_invocation_interlock,
nir_intrinsic_bindless_image_atomic_add,
nir_intrinsic_bindless_image_atomic_and,
nir_intrinsic_bindless_image_atomic_comp_swap,
nir_intrinsic_bindless_image_atomic_dec_wrap,
nir_intrinsic_bindless_image_atomic_exchange,
nir_intrinsic_bindless_image_atomic_fadd,
nir_intrinsic_bindless_image_atomic_fmax,
nir_intrinsic_bindless_image_atomic_fmin,
nir_intrinsic_bindless_image_atomic_imax,
nir_intrinsic_bindless_image_atomic_imin,
nir_intrinsic_bindless_image_atomic_inc_wrap,
nir_intrinsic_bindless_image_atomic_or,
nir_intrinsic_bindless_image_atomic_umax,
nir_intrinsic_bindless_image_atomic_umin,
nir_intrinsic_bindless_image_atomic_xor,
nir_intrinsic_bindless_image_descriptor_amd,
nir_intrinsic_bindless_image_format,
nir_intrinsic_bindless_image_load,
nir_intrinsic_bindless_image_load_raw_intel,
nir_intrinsic_bindless_image_order,
nir_intrinsic_bindless_image_samples,
nir_intrinsic_bindless_image_samples_identical,
nir_intrinsic_bindless_image_size,
nir_intrinsic_bindless_image_sparse_load,
nir_intrinsic_bindless_image_store,
nir_intrinsic_bindless_image_store_raw_intel,
nir_intrinsic_bindless_resource_ir3,
nir_intrinsic_btd_retire_intel,
nir_intrinsic_btd_spawn_intel,
nir_intrinsic_btd_stack_push_intel,
nir_intrinsic_bvh64_intersect_ray_amd,
nir_intrinsic_byte_permute_amd,
nir_intrinsic_cond_end_ir3,
nir_intrinsic_control_barrier,
nir_intrinsic_convert_alu_types,
nir_intrinsic_copy_deref,
nir_intrinsic_copy_ubo_to_uniform_ir3,
nir_intrinsic_demote,
nir_intrinsic_demote_if,
nir_intrinsic_deref_atomic_add,
nir_intrinsic_deref_atomic_and,
nir_intrinsic_deref_atomic_comp_swap,
nir_intrinsic_deref_atomic_exchange,
nir_intrinsic_deref_atomic_fadd,
nir_intrinsic_deref_atomic_fcomp_swap,
nir_intrinsic_deref_atomic_fmax,
nir_intrinsic_deref_atomic_fmin,
nir_intrinsic_deref_atomic_imax,
nir_intrinsic_deref_atomic_imin,
nir_intrinsic_deref_atomic_or,
nir_intrinsic_deref_atomic_umax,
nir_intrinsic_deref_atomic_umin,
nir_intrinsic_deref_atomic_xor,
nir_intrinsic_deref_buffer_array_length,
nir_intrinsic_deref_mode_is,
nir_intrinsic_discard,
nir_intrinsic_discard_if,
nir_intrinsic_elect,
nir_intrinsic_emit_vertex,
nir_intrinsic_emit_vertex_with_counter,
nir_intrinsic_end_invocation_interlock,
nir_intrinsic_end_patch_ir3,
nir_intrinsic_end_primitive,
nir_intrinsic_end_primitive_with_counter,
nir_intrinsic_exclusive_scan,
nir_intrinsic_execute_callable,
nir_intrinsic_execute_closest_hit_amd,
nir_intrinsic_execute_miss_amd,
nir_intrinsic_export_primitive_amd,
nir_intrinsic_export_vertex_amd,
nir_intrinsic_first_invocation,
nir_intrinsic_gds_atomic_add_amd,
nir_intrinsic_get_ssbo_size,
nir_intrinsic_get_ubo_size,
nir_intrinsic_global_atomic_add,
nir_intrinsic_global_atomic_add_2x32,
nir_intrinsic_global_atomic_add_amd,
nir_intrinsic_global_atomic_add_ir3,
nir_intrinsic_global_atomic_and,
nir_intrinsic_global_atomic_and_2x32,
nir_intrinsic_global_atomic_and_amd,
nir_intrinsic_global_atomic_and_ir3,
nir_intrinsic_global_atomic_comp_swap,
nir_intrinsic_global_atomic_comp_swap_2x32,
nir_intrinsic_global_atomic_comp_swap_amd,
nir_intrinsic_global_atomic_comp_swap_ir3,
nir_intrinsic_global_atomic_exchange,
nir_intrinsic_global_atomic_exchange_2x32,
nir_intrinsic_global_atomic_exchange_amd,
nir_intrinsic_global_atomic_exchange_ir3,
nir_intrinsic_global_atomic_fadd,
nir_intrinsic_global_atomic_fadd_2x32,
nir_intrinsic_global_atomic_fadd_amd,
nir_intrinsic_global_atomic_fcomp_swap,
nir_intrinsic_global_atomic_fcomp_swap_2x32,
nir_intrinsic_global_atomic_fcomp_swap_amd,
nir_intrinsic_global_atomic_fmax,
nir_intrinsic_global_atomic_fmax_2x32,
nir_intrinsic_global_atomic_fmax_amd,
nir_intrinsic_global_atomic_fmin,
nir_intrinsic_global_atomic_fmin_2x32,
nir_intrinsic_global_atomic_fmin_amd,
nir_intrinsic_global_atomic_imax,
nir_intrinsic_global_atomic_imax_2x32,
nir_intrinsic_global_atomic_imax_amd,
nir_intrinsic_global_atomic_imax_ir3,
nir_intrinsic_global_atomic_imin,
nir_intrinsic_global_atomic_imin_2x32,
nir_intrinsic_global_atomic_imin_amd,
nir_intrinsic_global_atomic_imin_ir3,
nir_intrinsic_global_atomic_or,
nir_intrinsic_global_atomic_or_2x32,
nir_intrinsic_global_atomic_or_amd,
nir_intrinsic_global_atomic_or_ir3,
nir_intrinsic_global_atomic_umax,
nir_intrinsic_global_atomic_umax_2x32,
nir_intrinsic_global_atomic_umax_amd,
nir_intrinsic_global_atomic_umax_ir3,
nir_intrinsic_global_atomic_umin,
nir_intrinsic_global_atomic_umin_2x32,
nir_intrinsic_global_atomic_umin_amd,
nir_intrinsic_global_atomic_umin_ir3,
nir_intrinsic_global_atomic_xor,
nir_intrinsic_global_atomic_xor_2x32,
nir_intrinsic_global_atomic_xor_amd,
nir_intrinsic_global_atomic_xor_ir3,
nir_intrinsic_group_memory_barrier,
nir_intrinsic_ignore_ray_intersection,
nir_intrinsic_image_atomic_add,
nir_intrinsic_image_atomic_and,
nir_intrinsic_image_atomic_comp_swap,
nir_intrinsic_image_atomic_dec_wrap,
nir_intrinsic_image_atomic_exchange,
nir_intrinsic_image_atomic_fadd,
nir_intrinsic_image_atomic_fmax,
nir_intrinsic_image_atomic_fmin,
nir_intrinsic_image_atomic_imax,
nir_intrinsic_image_atomic_imin,
nir_intrinsic_image_atomic_inc_wrap,
nir_intrinsic_image_atomic_or,
nir_intrinsic_image_atomic_umax,
nir_intrinsic_image_atomic_umin,
nir_intrinsic_image_atomic_xor,
nir_intrinsic_image_deref_atomic_add,
nir_intrinsic_image_deref_atomic_and,
nir_intrinsic_image_deref_atomic_comp_swap,
nir_intrinsic_image_deref_atomic_dec_wrap,
nir_intrinsic_image_deref_atomic_exchange,
nir_intrinsic_image_deref_atomic_fadd,
nir_intrinsic_image_deref_atomic_fmax,
nir_intrinsic_image_deref_atomic_fmin,
nir_intrinsic_image_deref_atomic_imax,
nir_intrinsic_image_deref_atomic_imin,
nir_intrinsic_image_deref_atomic_inc_wrap,
nir_intrinsic_image_deref_atomic_or,
nir_intrinsic_image_deref_atomic_umax,
nir_intrinsic_image_deref_atomic_umin,
nir_intrinsic_image_deref_atomic_xor,
nir_intrinsic_image_deref_descriptor_amd,
nir_intrinsic_image_deref_format,
nir_intrinsic_image_deref_load,
nir_intrinsic_image_deref_load_param_intel,
nir_intrinsic_image_deref_load_raw_intel,
nir_intrinsic_image_deref_order,
nir_intrinsic_image_deref_samples,
nir_intrinsic_image_deref_samples_identical,
nir_intrinsic_image_deref_size,
nir_intrinsic_image_deref_sparse_load,
nir_intrinsic_image_deref_store,
nir_intrinsic_image_deref_store_raw_intel,
nir_intrinsic_image_descriptor_amd,
nir_intrinsic_image_format,
nir_intrinsic_image_load,
nir_intrinsic_image_load_raw_intel,
nir_intrinsic_image_order,
nir_intrinsic_image_samples,
nir_intrinsic_image_samples_identical,
nir_intrinsic_image_size,
nir_intrinsic_image_sparse_load,
nir_intrinsic_image_store,
nir_intrinsic_image_store_raw_intel,
nir_intrinsic_inclusive_scan,
nir_intrinsic_interp_deref_at_centroid,
nir_intrinsic_interp_deref_at_offset,
nir_intrinsic_interp_deref_at_sample,
nir_intrinsic_interp_deref_at_vertex,
nir_intrinsic_is_helper_invocation,
nir_intrinsic_is_sparse_texels_resident,
nir_intrinsic_is_subgroup_invocation_lt_amd,
nir_intrinsic_lane_permute_16_amd,
nir_intrinsic_last_invocation,
nir_intrinsic_launch_mesh_workgroups,
nir_intrinsic_launch_mesh_workgroups_with_payload_deref,
nir_intrinsic_load_aa_line_width,
nir_intrinsic_load_accel_struct_amd,
nir_intrinsic_load_back_face_agx,
nir_intrinsic_load_barycentric_at_offset,
nir_intrinsic_load_barycentric_at_sample,
nir_intrinsic_load_barycentric_centroid,
nir_intrinsic_load_barycentric_model,
nir_intrinsic_load_barycentric_pixel,
nir_intrinsic_load_barycentric_sample,
nir_intrinsic_load_base_global_invocation_id,
nir_intrinsic_load_base_instance,
nir_intrinsic_load_base_vertex,
nir_intrinsic_load_base_workgroup_id,
nir_intrinsic_load_blend_const_color_a_float,
nir_intrinsic_load_blend_const_color_aaaa8888_unorm,
nir_intrinsic_load_blend_const_color_b_float,
nir_intrinsic_load_blend_const_color_g_float,
nir_intrinsic_load_blend_const_color_r_float,
nir_intrinsic_load_blend_const_color_rgba,
nir_intrinsic_load_blend_const_color_rgba8888_unorm,
nir_intrinsic_load_btd_global_arg_addr_intel,
nir_intrinsic_load_btd_local_arg_addr_intel,
nir_intrinsic_load_btd_resume_sbt_addr_intel,
nir_intrinsic_load_btd_shader_type_intel,
nir_intrinsic_load_btd_stack_id_intel,
nir_intrinsic_load_buffer_amd,
nir_intrinsic_load_callable_sbt_addr_intel,
nir_intrinsic_load_callable_sbt_stride_intel,
nir_intrinsic_load_clip_half_line_width_amd,
nir_intrinsic_load_color0,
nir_intrinsic_load_color1,
nir_intrinsic_load_constant,
nir_intrinsic_load_constant_base_ptr,
nir_intrinsic_load_cull_any_enabled_amd,
nir_intrinsic_load_cull_back_face_enabled_amd,
nir_intrinsic_load_cull_ccw_amd,
nir_intrinsic_load_cull_front_face_enabled_amd,
nir_intrinsic_load_cull_mask,
nir_intrinsic_load_cull_small_prim_precision_amd,
nir_intrinsic_load_cull_small_primitives_enabled_amd,
nir_intrinsic_load_deref,
nir_intrinsic_load_deref_block_intel,
nir_intrinsic_load_desc_set_address_intel,
nir_intrinsic_load_draw_id,
nir_intrinsic_load_fb_layers_v3d,
nir_intrinsic_load_first_vertex,
nir_intrinsic_load_force_vrs_rates_amd,
nir_intrinsic_load_frag_coord,
nir_intrinsic_load_frag_shading_rate,
nir_intrinsic_load_front_face,
nir_intrinsic_load_fs_input_interp_deltas,
nir_intrinsic_load_global,
nir_intrinsic_load_global_2x32,
nir_intrinsic_load_global_amd,
nir_intrinsic_load_global_base_ptr,
nir_intrinsic_load_global_block_intel,
nir_intrinsic_load_global_const_block_intel,
nir_intrinsic_load_global_constant,
nir_intrinsic_load_global_constant_bounded,
nir_intrinsic_load_global_constant_offset,
nir_intrinsic_load_global_invocation_id,
nir_intrinsic_load_global_invocation_id_zero_base,
nir_intrinsic_load_global_invocation_index,
nir_intrinsic_load_global_ir3,
nir_intrinsic_load_gs_header_ir3,
nir_intrinsic_load_gs_vertex_offset_amd,
nir_intrinsic_load_helper_invocation,
nir_intrinsic_load_hs_out_patch_data_offset_amd,
nir_intrinsic_load_hs_patch_stride_ir3,
nir_intrinsic_load_initial_edgeflags_amd,
nir_intrinsic_load_input,
nir_intrinsic_load_input_vertex,
nir_intrinsic_load_instance_id,
nir_intrinsic_load_interpolated_input,
nir_intrinsic_load_intersection_opaque_amd,
nir_intrinsic_load_invocation_id,
nir_intrinsic_load_is_indexed_draw,
nir_intrinsic_load_kernel_input,
nir_intrinsic_load_layer_id,
nir_intrinsic_load_lds_ngg_gs_out_vertex_base_amd,
nir_intrinsic_load_lds_ngg_scratch_base_amd,
nir_intrinsic_load_leaf_opaque_intel,
nir_intrinsic_load_leaf_procedural_intel,
nir_intrinsic_load_line_coord,
nir_intrinsic_load_line_width,
nir_intrinsic_load_local_invocation_id,
nir_intrinsic_load_local_invocation_index,
nir_intrinsic_load_local_shared_r600,
nir_intrinsic_load_lshs_vertex_stride_amd,
nir_intrinsic_load_merged_wave_info_amd,
nir_intrinsic_load_mesh_inline_data_intel,
nir_intrinsic_load_mesh_view_count,
nir_intrinsic_load_mesh_view_indices,
nir_intrinsic_load_num_subgroups,
nir_intrinsic_load_num_vertices,
nir_intrinsic_load_num_vertices_per_primitive_amd,
nir_intrinsic_load_num_workgroups,
nir_intrinsic_load_ordered_id_amd,
nir_intrinsic_load_output,
nir_intrinsic_load_packed_passthrough_primitive_amd,
nir_intrinsic_load_param,
nir_intrinsic_load_patch_vertices_in,
nir_intrinsic_load_per_primitive_output,
nir_intrinsic_load_per_vertex_input,
nir_intrinsic_load_per_vertex_output,
nir_intrinsic_load_persp_center_rhw_ir3,
nir_intrinsic_load_pipeline_stat_query_enabled_amd,
nir_intrinsic_load_point_coord,
nir_intrinsic_load_point_coord_maybe_flipped,
nir_intrinsic_load_preamble,
nir_intrinsic_load_prim_gen_query_enabled_amd,
nir_intrinsic_load_prim_xfb_query_enabled_amd,
nir_intrinsic_load_primitive_id,
nir_intrinsic_load_primitive_location_ir3,
nir_intrinsic_load_printf_buffer_address,
nir_intrinsic_load_provoking_vtx_in_prim_amd,
nir_intrinsic_load_ptr_dxil,
nir_intrinsic_load_push_constant,
nir_intrinsic_load_rasterization_samples_amd,
nir_intrinsic_load_raw_output_pan,
nir_intrinsic_load_ray_base_mem_addr_intel,
nir_intrinsic_load_ray_flags,
nir_intrinsic_load_ray_geometry_index,
nir_intrinsic_load_ray_hit_kind,
nir_intrinsic_load_ray_hit_sbt_addr_intel,
nir_intrinsic_load_ray_hit_sbt_stride_intel,
nir_intrinsic_load_ray_hw_stack_size_intel,
nir_intrinsic_load_ray_instance_custom_index,
nir_intrinsic_load_ray_launch_id,
nir_intrinsic_load_ray_launch_size,
nir_intrinsic_load_ray_launch_size_addr_amd,
nir_intrinsic_load_ray_miss_sbt_addr_intel,
nir_intrinsic_load_ray_miss_sbt_stride_intel,
nir_intrinsic_load_ray_num_dss_rt_stacks_intel,
nir_intrinsic_load_ray_object_direction,
nir_intrinsic_load_ray_object_origin,
nir_intrinsic_load_ray_object_to_world,
nir_intrinsic_load_ray_query_global_intel,
nir_intrinsic_load_ray_sw_stack_size_intel,
nir_intrinsic_load_ray_t_max,
nir_intrinsic_load_ray_t_min,
nir_intrinsic_load_ray_world_direction,
nir_intrinsic_load_ray_world_origin,
nir_intrinsic_load_ray_world_to_object,
nir_intrinsic_load_rel_patch_id_ir3,
nir_intrinsic_load_reloc_const_intel,
nir_intrinsic_load_ring_attr_amd,
nir_intrinsic_load_ring_attr_offset_amd,
nir_intrinsic_load_ring_es2gs_offset_amd,
nir_intrinsic_load_ring_esgs_amd,
nir_intrinsic_load_ring_gsvs_amd,
nir_intrinsic_load_ring_mesh_scratch_amd,
nir_intrinsic_load_ring_mesh_scratch_offset_amd,
nir_intrinsic_load_ring_task_draw_amd,
nir_intrinsic_load_ring_task_payload_amd,
nir_intrinsic_load_ring_tess_factors_amd,
nir_intrinsic_load_ring_tess_factors_offset_amd,
nir_intrinsic_load_ring_tess_offchip_amd,
nir_intrinsic_load_ring_tess_offchip_offset_amd,
nir_intrinsic_load_rt_arg_scratch_offset_amd,
nir_intrinsic_load_rt_dynamic_callable_stack_base_amd,
nir_intrinsic_load_sample_id,
nir_intrinsic_load_sample_id_no_per_sample,
nir_intrinsic_load_sample_mask_in,
nir_intrinsic_load_sample_pos,
nir_intrinsic_load_sample_pos_from_id,
nir_intrinsic_load_sample_pos_or_center,
nir_intrinsic_load_sample_positions_amd,
nir_intrinsic_load_sample_positions_pan,
nir_intrinsic_load_sampler_lod_parameters_pan,
nir_intrinsic_load_sbt_base_amd,
nir_intrinsic_load_sbt_offset_amd,
nir_intrinsic_load_sbt_stride_amd,
nir_intrinsic_load_scalar_arg_amd,
nir_intrinsic_load_scratch,
nir_intrinsic_load_scratch_base_ptr,
nir_intrinsic_load_scratch_dxil,
nir_intrinsic_load_shader_record_ptr,
nir_intrinsic_load_shared,
nir_intrinsic_load_shared2_amd,
nir_intrinsic_load_shared_base_ptr,
nir_intrinsic_load_shared_block_intel,
nir_intrinsic_load_shared_dxil,
nir_intrinsic_load_shared_ir3,
nir_intrinsic_load_simd_width_intel,
nir_intrinsic_load_smem_amd,
nir_intrinsic_load_ssbo,
nir_intrinsic_load_ssbo_address,
nir_intrinsic_load_ssbo_block_intel,
nir_intrinsic_load_ssbo_ir3,
nir_intrinsic_load_stack,
nir_intrinsic_load_streamout_buffer_amd,
nir_intrinsic_load_streamout_config_amd,
nir_intrinsic_load_streamout_offset_amd,
nir_intrinsic_load_streamout_write_index_amd,
nir_intrinsic_load_subgroup_eq_mask,
nir_intrinsic_load_subgroup_ge_mask,
nir_intrinsic_load_subgroup_gt_mask,
nir_intrinsic_load_subgroup_id,
nir_intrinsic_load_subgroup_id_shift_ir3,
nir_intrinsic_load_subgroup_invocation,
nir_intrinsic_load_subgroup_le_mask,
nir_intrinsic_load_subgroup_lt_mask,
nir_intrinsic_load_subgroup_size,
nir_intrinsic_load_task_ib_addr,
nir_intrinsic_load_task_ib_stride,
nir_intrinsic_load_task_payload,
nir_intrinsic_load_task_ring_entry_amd,
nir_intrinsic_load_tcs_header_ir3,
nir_intrinsic_load_tcs_in_param_base_r600,
nir_intrinsic_load_tcs_num_patches_amd,
nir_intrinsic_load_tcs_out_param_base_r600,
nir_intrinsic_load_tcs_rel_patch_id_r600,
nir_intrinsic_load_tcs_tess_factor_base_r600,
nir_intrinsic_load_tess_coord,
nir_intrinsic_load_tess_coord_r600,
nir_intrinsic_load_tess_factor_base_ir3,
nir_intrinsic_load_tess_level_inner,
nir_intrinsic_load_tess_level_inner_default,
nir_intrinsic_load_tess_level_outer,
nir_intrinsic_load_tess_level_outer_default,
nir_intrinsic_load_tess_param_base_ir3,
nir_intrinsic_load_tess_rel_patch_id_amd,
nir_intrinsic_load_texture_base_agx,
nir_intrinsic_load_texture_rect_scaling,
nir_intrinsic_load_tlb_color_v3d,
nir_intrinsic_load_topology_id_intel,
nir_intrinsic_load_ubo,
nir_intrinsic_load_ubo_dxil,
nir_intrinsic_load_ubo_vec4,
nir_intrinsic_load_uniform,
nir_intrinsic_load_user_clip_plane,
nir_intrinsic_load_user_data_amd,
nir_intrinsic_load_vector_arg_amd,
nir_intrinsic_load_vertex_id,
nir_intrinsic_load_vertex_id_zero_base,
nir_intrinsic_load_view_index,
nir_intrinsic_load_viewport_offset,
nir_intrinsic_load_viewport_scale,
nir_intrinsic_load_viewport_x_offset,
nir_intrinsic_load_viewport_x_scale,
nir_intrinsic_load_viewport_xy_scale_and_offset,
nir_intrinsic_load_viewport_y_offset,
nir_intrinsic_load_viewport_y_scale,
nir_intrinsic_load_viewport_z_offset,
nir_intrinsic_load_viewport_z_scale,
nir_intrinsic_load_vs_primitive_stride_ir3,
nir_intrinsic_load_vs_vertex_stride_ir3,
nir_intrinsic_load_vulkan_descriptor,
nir_intrinsic_load_work_dim,
nir_intrinsic_load_workgroup_id,
nir_intrinsic_load_workgroup_id_zero_base,
nir_intrinsic_load_workgroup_index,
nir_intrinsic_load_workgroup_num_input_primitives_amd,
nir_intrinsic_load_workgroup_num_input_vertices_amd,
nir_intrinsic_load_workgroup_size,
nir_intrinsic_load_xfb_address,
nir_intrinsic_masked_swizzle_amd,
nir_intrinsic_mbcnt_amd,
nir_intrinsic_memcpy_deref,
nir_intrinsic_memory_barrier,
nir_intrinsic_memory_barrier_atomic_counter,
nir_intrinsic_memory_barrier_buffer,
nir_intrinsic_memory_barrier_image,
nir_intrinsic_memory_barrier_shared,
nir_intrinsic_memory_barrier_tcs_patch,
nir_intrinsic_nop,
nir_intrinsic_optimization_barrier_vgpr_amd,
nir_intrinsic_ordered_xfb_counter_add_amd,
nir_intrinsic_overwrite_tes_arguments_amd,
nir_intrinsic_overwrite_vs_arguments_amd,
nir_intrinsic_preamble_end_ir3,
nir_intrinsic_preamble_start_ir3,
nir_intrinsic_printf,
nir_intrinsic_quad_broadcast,
nir_intrinsic_quad_swap_diagonal,
nir_intrinsic_quad_swap_horizontal,
nir_intrinsic_quad_swap_vertical,
nir_intrinsic_quad_swizzle_amd,
nir_intrinsic_read_first_invocation,
nir_intrinsic_read_invocation,
nir_intrinsic_read_invocation_cond_ir3,
nir_intrinsic_reduce,
nir_intrinsic_report_ray_intersection,
nir_intrinsic_rq_confirm_intersection,
nir_intrinsic_rq_generate_intersection,
nir_intrinsic_rq_initialize,
nir_intrinsic_rq_load,
nir_intrinsic_rq_proceed,
nir_intrinsic_rq_terminate,
nir_intrinsic_rt_execute_callable,
nir_intrinsic_rt_resume,
nir_intrinsic_rt_return_amd,
nir_intrinsic_rt_trace_ray,
nir_intrinsic_scoped_barrier,
nir_intrinsic_set_vertex_and_primitive_count,
nir_intrinsic_shader_clock,
nir_intrinsic_shared_atomic_add,
nir_intrinsic_shared_atomic_add_dxil,
nir_intrinsic_shared_atomic_and,
nir_intrinsic_shared_atomic_and_dxil,
nir_intrinsic_shared_atomic_comp_swap,
nir_intrinsic_shared_atomic_comp_swap_dxil,
nir_intrinsic_shared_atomic_exchange,
nir_intrinsic_shared_atomic_exchange_dxil,
nir_intrinsic_shared_atomic_fadd,
nir_intrinsic_shared_atomic_fcomp_swap,
nir_intrinsic_shared_atomic_fmax,
nir_intrinsic_shared_atomic_fmin,
nir_intrinsic_shared_atomic_imax,
nir_intrinsic_shared_atomic_imax_dxil,
nir_intrinsic_shared_atomic_imin,
nir_intrinsic_shared_atomic_imin_dxil,
nir_intrinsic_shared_atomic_or,
nir_intrinsic_shared_atomic_or_dxil,
nir_intrinsic_shared_atomic_umax,
nir_intrinsic_shared_atomic_umax_dxil,
nir_intrinsic_shared_atomic_umin,
nir_intrinsic_shared_atomic_umin_dxil,
nir_intrinsic_shared_atomic_xor,
nir_intrinsic_shared_atomic_xor_dxil,
nir_intrinsic_shuffle,
nir_intrinsic_shuffle_down,
nir_intrinsic_shuffle_up,
nir_intrinsic_shuffle_xor,
nir_intrinsic_sparse_residency_code_and,
nir_intrinsic_ssbo_atomic_add,
nir_intrinsic_ssbo_atomic_add_ir3,
nir_intrinsic_ssbo_atomic_and,
nir_intrinsic_ssbo_atomic_and_ir3,
nir_intrinsic_ssbo_atomic_comp_swap,
nir_intrinsic_ssbo_atomic_comp_swap_ir3,
nir_intrinsic_ssbo_atomic_exchange,
nir_intrinsic_ssbo_atomic_exchange_ir3,
nir_intrinsic_ssbo_atomic_fadd,
nir_intrinsic_ssbo_atomic_fcomp_swap,
nir_intrinsic_ssbo_atomic_fmax,
nir_intrinsic_ssbo_atomic_fmin,
nir_intrinsic_ssbo_atomic_imax,
nir_intrinsic_ssbo_atomic_imax_ir3,
nir_intrinsic_ssbo_atomic_imin,
nir_intrinsic_ssbo_atomic_imin_ir3,
nir_intrinsic_ssbo_atomic_or,
nir_intrinsic_ssbo_atomic_or_ir3,
nir_intrinsic_ssbo_atomic_umax,
nir_intrinsic_ssbo_atomic_umax_ir3,
nir_intrinsic_ssbo_atomic_umin,
nir_intrinsic_ssbo_atomic_umin_ir3,
nir_intrinsic_ssbo_atomic_xor,
nir_intrinsic_ssbo_atomic_xor_ir3,
nir_intrinsic_store_buffer_amd,
nir_intrinsic_store_combined_output_pan,
nir_intrinsic_store_deref,
nir_intrinsic_store_deref_block_intel,
nir_intrinsic_store_global,
nir_intrinsic_store_global_2x32,
nir_intrinsic_store_global_amd,
nir_intrinsic_store_global_block_intel,
nir_intrinsic_store_global_ir3,
nir_intrinsic_store_local_shared_r600,
nir_intrinsic_store_output,
nir_intrinsic_store_per_primitive_output,
nir_intrinsic_store_per_vertex_output,
nir_intrinsic_store_preamble,
nir_intrinsic_store_raw_output_pan,
nir_intrinsic_store_scratch,
nir_intrinsic_store_scratch_dxil,
nir_intrinsic_store_shared,
nir_intrinsic_store_shared2_amd,
nir_intrinsic_store_shared_block_intel,
nir_intrinsic_store_shared_dxil,
nir_intrinsic_store_shared_ir3,
nir_intrinsic_store_shared_masked_dxil,
nir_intrinsic_store_ssbo,
nir_intrinsic_store_ssbo_block_intel,
nir_intrinsic_store_ssbo_ir3,
nir_intrinsic_store_ssbo_masked_dxil,
nir_intrinsic_store_stack,
nir_intrinsic_store_task_payload,
nir_intrinsic_store_tf_r600,
nir_intrinsic_store_tlb_sample_color_v3d,
nir_intrinsic_store_uniform_ir3,
nir_intrinsic_task_payload_atomic_add,
nir_intrinsic_task_payload_atomic_and,
nir_intrinsic_task_payload_atomic_comp_swap,
nir_intrinsic_task_payload_atomic_exchange,
nir_intrinsic_task_payload_atomic_fadd,
nir_intrinsic_task_payload_atomic_fcomp_swap,
nir_intrinsic_task_payload_atomic_fmax,
nir_intrinsic_task_payload_atomic_fmin,
nir_intrinsic_task_payload_atomic_imax,
nir_intrinsic_task_payload_atomic_imin,
nir_intrinsic_task_payload_atomic_or,
nir_intrinsic_task_payload_atomic_umax,
nir_intrinsic_task_payload_atomic_umin,
nir_intrinsic_task_payload_atomic_xor,
nir_intrinsic_terminate,
nir_intrinsic_terminate_if,
nir_intrinsic_terminate_ray,
nir_intrinsic_trace_ray,
nir_intrinsic_trace_ray_intel,
nir_intrinsic_vote_all,
nir_intrinsic_vote_any,
nir_intrinsic_vote_feq,
nir_intrinsic_vote_ieq,
nir_intrinsic_vulkan_resource_index,
nir_intrinsic_vulkan_resource_reindex,
nir_intrinsic_write_invocation_amd,
nir_last_intrinsic = nir_intrinsic_write_invocation_amd,
nir_num_intrinsics = nir_last_intrinsic + 1
} nir_intrinsic_op;
typedef enum {
NIR_INTRINSIC_BASE,
NIR_INTRINSIC_WRITE_MASK,
NIR_INTRINSIC_STREAM_ID,
NIR_INTRINSIC_UCP_ID,
NIR_INTRINSIC_RANGE_BASE,
NIR_INTRINSIC_RANGE,
NIR_INTRINSIC_DESC_SET,
NIR_INTRINSIC_BINDING,
NIR_INTRINSIC_COMPONENT,
NIR_INTRINSIC_COLUMN,
NIR_INTRINSIC_INTERP_MODE,
NIR_INTRINSIC_REDUCTION_OP,
NIR_INTRINSIC_CLUSTER_SIZE,
NIR_INTRINSIC_PARAM_IDX,
NIR_INTRINSIC_IMAGE_DIM,
NIR_INTRINSIC_IMAGE_ARRAY,
NIR_INTRINSIC_FORMAT,
NIR_INTRINSIC_ACCESS,
NIR_INTRINSIC_CALL_IDX,
NIR_INTRINSIC_STACK_SIZE,
NIR_INTRINSIC_ALIGN_MUL,
NIR_INTRINSIC_ALIGN_OFFSET,
NIR_INTRINSIC_DESC_TYPE,
NIR_INTRINSIC_SRC_TYPE,
NIR_INTRINSIC_DEST_TYPE,
NIR_INTRINSIC_SWIZZLE_MASK,
NIR_INTRINSIC_IS_SWIZZLED,
NIR_INTRINSIC_SLC_AMD,
NIR_INTRINSIC_OFFSET0,
NIR_INTRINSIC_OFFSET1,
NIR_INTRINSIC_ST64,
NIR_INTRINSIC_ARG_UPPER_BOUND_U32_AMD,
NIR_INTRINSIC_DST_ACCESS,
NIR_INTRINSIC_SRC_ACCESS,
NIR_INTRINSIC_DRIVER_LOCATION,
NIR_INTRINSIC_MEMORY_SEMANTICS,
NIR_INTRINSIC_MEMORY_MODES,
NIR_INTRINSIC_MEMORY_SCOPE,
NIR_INTRINSIC_EXECUTION_SCOPE,
NIR_INTRINSIC_IO_SEMANTICS,
NIR_INTRINSIC_IO_XFB,
NIR_INTRINSIC_IO_XFB2,
NIR_INTRINSIC_ROUNDING_MODE,
NIR_INTRINSIC_SATURATE,
NIR_INTRINSIC_SYNCHRONOUS,
NIR_INTRINSIC_VALUE_ID,
NIR_INTRINSIC_NUM_INDEX_FLAGS,
} nir_intrinsic_index_flag;
extern const char *nir_intrinsic_index_names[NIR_INTRINSIC_NUM_INDEX_FLAGS];
#endif /* _NIR_INTRINSICS_ */

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,458 @@
/* Copyright (C) 2014 Connor Abbott
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*
* Authors:
* Connor Abbott (cwabbott0@gmail.com)
*/
#ifndef _NIR_OPCODES_
#define _NIR_OPCODES_
typedef enum {
nir_op_amul,
nir_op_b16all_fequal16,
nir_op_b16all_fequal2,
nir_op_b16all_fequal3,
nir_op_b16all_fequal4,
nir_op_b16all_fequal5,
nir_op_b16all_fequal8,
nir_op_b16all_iequal16,
nir_op_b16all_iequal2,
nir_op_b16all_iequal3,
nir_op_b16all_iequal4,
nir_op_b16all_iequal5,
nir_op_b16all_iequal8,
nir_op_b16any_fnequal16,
nir_op_b16any_fnequal2,
nir_op_b16any_fnequal3,
nir_op_b16any_fnequal4,
nir_op_b16any_fnequal5,
nir_op_b16any_fnequal8,
nir_op_b16any_inequal16,
nir_op_b16any_inequal2,
nir_op_b16any_inequal3,
nir_op_b16any_inequal4,
nir_op_b16any_inequal5,
nir_op_b16any_inequal8,
nir_op_b16csel,
nir_op_b2b1,
nir_op_b2b16,
nir_op_b2b32,
nir_op_b2b8,
nir_op_b2f16,
nir_op_b2f32,
nir_op_b2f64,
nir_op_b2i1,
nir_op_b2i16,
nir_op_b2i32,
nir_op_b2i64,
nir_op_b2i8,
nir_op_b32all_fequal16,
nir_op_b32all_fequal2,
nir_op_b32all_fequal3,
nir_op_b32all_fequal4,
nir_op_b32all_fequal5,
nir_op_b32all_fequal8,
nir_op_b32all_iequal16,
nir_op_b32all_iequal2,
nir_op_b32all_iequal3,
nir_op_b32all_iequal4,
nir_op_b32all_iequal5,
nir_op_b32all_iequal8,
nir_op_b32any_fnequal16,
nir_op_b32any_fnequal2,
nir_op_b32any_fnequal3,
nir_op_b32any_fnequal4,
nir_op_b32any_fnequal5,
nir_op_b32any_fnequal8,
nir_op_b32any_inequal16,
nir_op_b32any_inequal2,
nir_op_b32any_inequal3,
nir_op_b32any_inequal4,
nir_op_b32any_inequal5,
nir_op_b32any_inequal8,
nir_op_b32csel,
nir_op_b8all_fequal16,
nir_op_b8all_fequal2,
nir_op_b8all_fequal3,
nir_op_b8all_fequal4,
nir_op_b8all_fequal5,
nir_op_b8all_fequal8,
nir_op_b8all_iequal16,
nir_op_b8all_iequal2,
nir_op_b8all_iequal3,
nir_op_b8all_iequal4,
nir_op_b8all_iequal5,
nir_op_b8all_iequal8,
nir_op_b8any_fnequal16,
nir_op_b8any_fnequal2,
nir_op_b8any_fnequal3,
nir_op_b8any_fnequal4,
nir_op_b8any_fnequal5,
nir_op_b8any_fnequal8,
nir_op_b8any_inequal16,
nir_op_b8any_inequal2,
nir_op_b8any_inequal3,
nir_op_b8any_inequal4,
nir_op_b8any_inequal5,
nir_op_b8any_inequal8,
nir_op_b8csel,
nir_op_ball_fequal16,
nir_op_ball_fequal2,
nir_op_ball_fequal3,
nir_op_ball_fequal4,
nir_op_ball_fequal5,
nir_op_ball_fequal8,
nir_op_ball_iequal16,
nir_op_ball_iequal2,
nir_op_ball_iequal3,
nir_op_ball_iequal4,
nir_op_ball_iequal5,
nir_op_ball_iequal8,
nir_op_bany_fnequal16,
nir_op_bany_fnequal2,
nir_op_bany_fnequal3,
nir_op_bany_fnequal4,
nir_op_bany_fnequal5,
nir_op_bany_fnequal8,
nir_op_bany_inequal16,
nir_op_bany_inequal2,
nir_op_bany_inequal3,
nir_op_bany_inequal4,
nir_op_bany_inequal5,
nir_op_bany_inequal8,
nir_op_bcsel,
nir_op_bfi,
nir_op_bfm,
nir_op_bit_count,
nir_op_bitfield_insert,
nir_op_bitfield_reverse,
nir_op_bitfield_select,
nir_op_cube_face_coord_amd,
nir_op_cube_face_index_amd,
nir_op_cube_r600,
nir_op_extract_i16,
nir_op_extract_i8,
nir_op_extract_u16,
nir_op_extract_u8,
nir_op_f2b1,
nir_op_f2b16,
nir_op_f2b32,
nir_op_f2b8,
nir_op_f2f16,
nir_op_f2f16_rtne,
nir_op_f2f16_rtz,
nir_op_f2f32,
nir_op_f2f64,
nir_op_f2fmp,
nir_op_f2i1,
nir_op_f2i16,
nir_op_f2i32,
nir_op_f2i64,
nir_op_f2i8,
nir_op_f2imp,
nir_op_f2u1,
nir_op_f2u16,
nir_op_f2u32,
nir_op_f2u64,
nir_op_f2u8,
nir_op_f2ump,
nir_op_fabs,
nir_op_fadd,
nir_op_fall_equal16,
nir_op_fall_equal2,
nir_op_fall_equal3,
nir_op_fall_equal4,
nir_op_fall_equal5,
nir_op_fall_equal8,
nir_op_fany_nequal16,
nir_op_fany_nequal2,
nir_op_fany_nequal3,
nir_op_fany_nequal4,
nir_op_fany_nequal5,
nir_op_fany_nequal8,
nir_op_fceil,
nir_op_fclamp_pos_mali,
nir_op_fcos,
nir_op_fcos_amd,
nir_op_fcsel,
nir_op_fcsel_ge,
nir_op_fcsel_gt,
nir_op_fddx,
nir_op_fddx_coarse,
nir_op_fddx_fine,
nir_op_fddx_must_abs_mali,
nir_op_fddy,
nir_op_fddy_coarse,
nir_op_fddy_fine,
nir_op_fddy_must_abs_mali,
nir_op_fdiv,
nir_op_fdot16,
nir_op_fdot16_replicated,
nir_op_fdot2,
nir_op_fdot2_replicated,
nir_op_fdot3,
nir_op_fdot3_replicated,
nir_op_fdot4,
nir_op_fdot4_replicated,
nir_op_fdot5,
nir_op_fdot5_replicated,
nir_op_fdot8,
nir_op_fdot8_replicated,
nir_op_fdph,
nir_op_fdph_replicated,
nir_op_feq,
nir_op_feq16,
nir_op_feq32,
nir_op_feq8,
nir_op_fexp2,
nir_op_ffloor,
nir_op_ffma,
nir_op_ffmaz,
nir_op_ffract,
nir_op_fge,
nir_op_fge16,
nir_op_fge32,
nir_op_fge8,
nir_op_find_lsb,
nir_op_fisfinite,
nir_op_fisfinite32,
nir_op_fisnormal,
nir_op_flog2,
nir_op_flrp,
nir_op_flt,
nir_op_flt16,
nir_op_flt32,
nir_op_flt8,
nir_op_fmax,
nir_op_fmin,
nir_op_fmod,
nir_op_fmul,
nir_op_fmulz,
nir_op_fneg,
nir_op_fneu,
nir_op_fneu16,
nir_op_fneu32,
nir_op_fneu8,
nir_op_fpow,
nir_op_fquantize2f16,
nir_op_frcp,
nir_op_frem,
nir_op_frexp_exp,
nir_op_frexp_sig,
nir_op_fround_even,
nir_op_frsq,
nir_op_fsat,
nir_op_fsat_signed_mali,
nir_op_fsign,
nir_op_fsin,
nir_op_fsin_agx,
nir_op_fsin_amd,
nir_op_fsqrt,
nir_op_fsub,
nir_op_fsum2,
nir_op_fsum3,
nir_op_fsum4,
nir_op_ftrunc,
nir_op_i2b1,
nir_op_i2b16,
nir_op_i2b32,
nir_op_i2b8,
nir_op_i2f16,
nir_op_i2f32,
nir_op_i2f64,
nir_op_i2fmp,
nir_op_i2i1,
nir_op_i2i16,
nir_op_i2i32,
nir_op_i2i64,
nir_op_i2i8,
nir_op_i2imp,
nir_op_i32csel_ge,
nir_op_i32csel_gt,
nir_op_iabs,
nir_op_iadd,
nir_op_iadd3,
nir_op_iadd_sat,
nir_op_iand,
nir_op_ibfe,
nir_op_ibitfield_extract,
nir_op_idiv,
nir_op_ieq,
nir_op_ieq16,
nir_op_ieq32,
nir_op_ieq8,
nir_op_ifind_msb,
nir_op_ifind_msb_rev,
nir_op_ige,
nir_op_ige16,
nir_op_ige32,
nir_op_ige8,
nir_op_ihadd,
nir_op_ilt,
nir_op_ilt16,
nir_op_ilt32,
nir_op_ilt8,
nir_op_imad24_ir3,
nir_op_imadsh_mix16,
nir_op_imax,
nir_op_imin,
nir_op_imod,
nir_op_imul,
nir_op_imul24,
nir_op_imul24_relaxed,
nir_op_imul_2x32_64,
nir_op_imul_32x16,
nir_op_imul_high,
nir_op_ine,
nir_op_ine16,
nir_op_ine32,
nir_op_ine8,
nir_op_ineg,
nir_op_inot,
nir_op_insert_u16,
nir_op_insert_u8,
nir_op_ior,
nir_op_irem,
nir_op_irhadd,
nir_op_ishl,
nir_op_ishr,
nir_op_isign,
nir_op_isub,
nir_op_isub_sat,
nir_op_ixor,
nir_op_ldexp,
nir_op_mov,
nir_op_pack_32_2x16,
nir_op_pack_32_2x16_split,
nir_op_pack_32_4x8,
nir_op_pack_32_4x8_split,
nir_op_pack_64_2x32,
nir_op_pack_64_2x32_split,
nir_op_pack_64_4x16,
nir_op_pack_double_2x32_dxil,
nir_op_pack_half_2x16,
nir_op_pack_half_2x16_split,
nir_op_pack_sint_2x16,
nir_op_pack_snorm_2x16,
nir_op_pack_snorm_4x8,
nir_op_pack_uint_2x16,
nir_op_pack_unorm_2x16,
nir_op_pack_unorm_4x8,
nir_op_pack_uvec2_to_uint,
nir_op_pack_uvec4_to_uint,
nir_op_sad_u8x4,
nir_op_sdot_2x16_iadd,
nir_op_sdot_2x16_iadd_sat,
nir_op_sdot_4x8_iadd,
nir_op_sdot_4x8_iadd_sat,
nir_op_seq,
nir_op_sge,
nir_op_slt,
nir_op_sne,
nir_op_sudot_4x8_iadd,
nir_op_sudot_4x8_iadd_sat,
nir_op_u2f16,
nir_op_u2f32,
nir_op_u2f64,
nir_op_u2fmp,
nir_op_u2u1,
nir_op_u2u16,
nir_op_u2u32,
nir_op_u2u64,
nir_op_u2u8,
nir_op_uabs_isub,
nir_op_uabs_usub,
nir_op_uadd_carry,
nir_op_uadd_sat,
nir_op_ubfe,
nir_op_ubitfield_extract,
nir_op_uclz,
nir_op_udiv,
nir_op_udot_2x16_uadd,
nir_op_udot_2x16_uadd_sat,
nir_op_udot_4x8_uadd,
nir_op_udot_4x8_uadd_sat,
nir_op_ufind_msb,
nir_op_ufind_msb_rev,
nir_op_uge,
nir_op_uge16,
nir_op_uge32,
nir_op_uge8,
nir_op_uhadd,
nir_op_ult,
nir_op_ult16,
nir_op_ult32,
nir_op_ult8,
nir_op_umad24,
nir_op_umad24_relaxed,
nir_op_umax,
nir_op_umax_4x8_vc4,
nir_op_umin,
nir_op_umin_4x8_vc4,
nir_op_umod,
nir_op_umul24,
nir_op_umul24_relaxed,
nir_op_umul_2x32_64,
nir_op_umul_32x16,
nir_op_umul_high,
nir_op_umul_low,
nir_op_umul_unorm_4x8_vc4,
nir_op_unpack_32_2x16,
nir_op_unpack_32_2x16_split_x,
nir_op_unpack_32_2x16_split_y,
nir_op_unpack_32_4x8,
nir_op_unpack_64_2x32,
nir_op_unpack_64_2x32_split_x,
nir_op_unpack_64_2x32_split_y,
nir_op_unpack_64_4x16,
nir_op_unpack_double_2x32_dxil,
nir_op_unpack_half_2x16,
nir_op_unpack_half_2x16_flush_to_zero,
nir_op_unpack_half_2x16_split_x,
nir_op_unpack_half_2x16_split_x_flush_to_zero,
nir_op_unpack_half_2x16_split_y,
nir_op_unpack_half_2x16_split_y_flush_to_zero,
nir_op_unpack_snorm_2x16,
nir_op_unpack_snorm_4x8,
nir_op_unpack_unorm_2x16,
nir_op_unpack_unorm_4x8,
nir_op_urhadd,
nir_op_urol,
nir_op_uror,
nir_op_usadd_4x8_vc4,
nir_op_ushr,
nir_op_ussub_4x8_vc4,
nir_op_usub_borrow,
nir_op_usub_sat,
nir_op_vec16,
nir_op_vec2,
nir_op_vec3,
nir_op_vec4,
nir_op_vec5,
nir_op_vec8,
nir_last_opcode = nir_op_vec8,
nir_num_opcodes = nir_last_opcode + 1
} nir_op;
#endif /* _NIR_OPCODES_ */

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,625 @@
/*
* Copyright (C) 2017 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/* DO NOT EDIT - This file is generated automatically by the
* vtn_gather_types_c.py script
*/
#include "vtn_private.h"
struct type_args {
int res_idx;
int res_type_idx;
};
static struct type_args
result_type_args_for_opcode(SpvOp opcode)
{
switch (opcode) {
case SpvOpUndef: return (struct type_args){ 1, 0 };
case SpvOpString: return (struct type_args){ 0, -1 };
case SpvOpExtInstImport: return (struct type_args){ 0, -1 };
case SpvOpExtInst: return (struct type_args){ 1, 0 };
case SpvOpTypeVoid: return (struct type_args){ 0, -1 };
case SpvOpTypeBool: return (struct type_args){ 0, -1 };
case SpvOpTypeInt: return (struct type_args){ 0, -1 };
case SpvOpTypeFloat: return (struct type_args){ 0, -1 };
case SpvOpTypeVector: return (struct type_args){ 0, -1 };
case SpvOpTypeMatrix: return (struct type_args){ 0, -1 };
case SpvOpTypeImage: return (struct type_args){ 0, -1 };
case SpvOpTypeSampler: return (struct type_args){ 0, -1 };
case SpvOpTypeSampledImage: return (struct type_args){ 0, -1 };
case SpvOpTypeArray: return (struct type_args){ 0, -1 };
case SpvOpTypeRuntimeArray: return (struct type_args){ 0, -1 };
case SpvOpTypeStruct: return (struct type_args){ 0, -1 };
case SpvOpTypeOpaque: return (struct type_args){ 0, -1 };
case SpvOpTypePointer: return (struct type_args){ 0, -1 };
case SpvOpTypeFunction: return (struct type_args){ 0, -1 };
case SpvOpTypeEvent: return (struct type_args){ 0, -1 };
case SpvOpTypeDeviceEvent: return (struct type_args){ 0, -1 };
case SpvOpTypeReserveId: return (struct type_args){ 0, -1 };
case SpvOpTypeQueue: return (struct type_args){ 0, -1 };
case SpvOpTypePipe: return (struct type_args){ 0, -1 };
case SpvOpConstantTrue: return (struct type_args){ 1, 0 };
case SpvOpConstantFalse: return (struct type_args){ 1, 0 };
case SpvOpConstant: return (struct type_args){ 1, 0 };
case SpvOpConstantComposite: return (struct type_args){ 1, 0 };
case SpvOpConstantSampler: return (struct type_args){ 1, 0 };
case SpvOpConstantNull: return (struct type_args){ 1, 0 };
case SpvOpSpecConstantTrue: return (struct type_args){ 1, 0 };
case SpvOpSpecConstantFalse: return (struct type_args){ 1, 0 };
case SpvOpSpecConstant: return (struct type_args){ 1, 0 };
case SpvOpSpecConstantComposite: return (struct type_args){ 1, 0 };
case SpvOpSpecConstantOp: return (struct type_args){ 1, 0 };
case SpvOpFunction: return (struct type_args){ 1, 0 };
case SpvOpFunctionParameter: return (struct type_args){ 1, 0 };
case SpvOpFunctionCall: return (struct type_args){ 1, 0 };
case SpvOpVariable: return (struct type_args){ 1, 0 };
case SpvOpImageTexelPointer: return (struct type_args){ 1, 0 };
case SpvOpLoad: return (struct type_args){ 1, 0 };
case SpvOpAccessChain: return (struct type_args){ 1, 0 };
case SpvOpInBoundsAccessChain: return (struct type_args){ 1, 0 };
case SpvOpPtrAccessChain: return (struct type_args){ 1, 0 };
case SpvOpArrayLength: return (struct type_args){ 1, 0 };
case SpvOpGenericPtrMemSemantics: return (struct type_args){ 1, 0 };
case SpvOpInBoundsPtrAccessChain: return (struct type_args){ 1, 0 };
case SpvOpDecorationGroup: return (struct type_args){ 0, -1 };
case SpvOpVectorExtractDynamic: return (struct type_args){ 1, 0 };
case SpvOpVectorInsertDynamic: return (struct type_args){ 1, 0 };
case SpvOpVectorShuffle: return (struct type_args){ 1, 0 };
case SpvOpCompositeConstruct: return (struct type_args){ 1, 0 };
case SpvOpCompositeExtract: return (struct type_args){ 1, 0 };
case SpvOpCompositeInsert: return (struct type_args){ 1, 0 };
case SpvOpCopyObject: return (struct type_args){ 1, 0 };
case SpvOpTranspose: return (struct type_args){ 1, 0 };
case SpvOpSampledImage: return (struct type_args){ 1, 0 };
case SpvOpImageSampleImplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSampleExplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSampleDrefImplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSampleDrefExplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSampleProjImplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSampleProjExplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSampleProjDrefImplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSampleProjDrefExplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageFetch: return (struct type_args){ 1, 0 };
case SpvOpImageGather: return (struct type_args){ 1, 0 };
case SpvOpImageDrefGather: return (struct type_args){ 1, 0 };
case SpvOpImageRead: return (struct type_args){ 1, 0 };
case SpvOpImage: return (struct type_args){ 1, 0 };
case SpvOpImageQueryFormat: return (struct type_args){ 1, 0 };
case SpvOpImageQueryOrder: return (struct type_args){ 1, 0 };
case SpvOpImageQuerySizeLod: return (struct type_args){ 1, 0 };
case SpvOpImageQuerySize: return (struct type_args){ 1, 0 };
case SpvOpImageQueryLod: return (struct type_args){ 1, 0 };
case SpvOpImageQueryLevels: return (struct type_args){ 1, 0 };
case SpvOpImageQuerySamples: return (struct type_args){ 1, 0 };
case SpvOpConvertFToU: return (struct type_args){ 1, 0 };
case SpvOpConvertFToS: return (struct type_args){ 1, 0 };
case SpvOpConvertSToF: return (struct type_args){ 1, 0 };
case SpvOpConvertUToF: return (struct type_args){ 1, 0 };
case SpvOpUConvert: return (struct type_args){ 1, 0 };
case SpvOpSConvert: return (struct type_args){ 1, 0 };
case SpvOpFConvert: return (struct type_args){ 1, 0 };
case SpvOpQuantizeToF16: return (struct type_args){ 1, 0 };
case SpvOpConvertPtrToU: return (struct type_args){ 1, 0 };
case SpvOpSatConvertSToU: return (struct type_args){ 1, 0 };
case SpvOpSatConvertUToS: return (struct type_args){ 1, 0 };
case SpvOpConvertUToPtr: return (struct type_args){ 1, 0 };
case SpvOpPtrCastToGeneric: return (struct type_args){ 1, 0 };
case SpvOpGenericCastToPtr: return (struct type_args){ 1, 0 };
case SpvOpGenericCastToPtrExplicit: return (struct type_args){ 1, 0 };
case SpvOpBitcast: return (struct type_args){ 1, 0 };
case SpvOpSNegate: return (struct type_args){ 1, 0 };
case SpvOpFNegate: return (struct type_args){ 1, 0 };
case SpvOpIAdd: return (struct type_args){ 1, 0 };
case SpvOpFAdd: return (struct type_args){ 1, 0 };
case SpvOpISub: return (struct type_args){ 1, 0 };
case SpvOpFSub: return (struct type_args){ 1, 0 };
case SpvOpIMul: return (struct type_args){ 1, 0 };
case SpvOpFMul: return (struct type_args){ 1, 0 };
case SpvOpUDiv: return (struct type_args){ 1, 0 };
case SpvOpSDiv: return (struct type_args){ 1, 0 };
case SpvOpFDiv: return (struct type_args){ 1, 0 };
case SpvOpUMod: return (struct type_args){ 1, 0 };
case SpvOpSRem: return (struct type_args){ 1, 0 };
case SpvOpSMod: return (struct type_args){ 1, 0 };
case SpvOpFRem: return (struct type_args){ 1, 0 };
case SpvOpFMod: return (struct type_args){ 1, 0 };
case SpvOpVectorTimesScalar: return (struct type_args){ 1, 0 };
case SpvOpMatrixTimesScalar: return (struct type_args){ 1, 0 };
case SpvOpVectorTimesMatrix: return (struct type_args){ 1, 0 };
case SpvOpMatrixTimesVector: return (struct type_args){ 1, 0 };
case SpvOpMatrixTimesMatrix: return (struct type_args){ 1, 0 };
case SpvOpOuterProduct: return (struct type_args){ 1, 0 };
case SpvOpDot: return (struct type_args){ 1, 0 };
case SpvOpIAddCarry: return (struct type_args){ 1, 0 };
case SpvOpISubBorrow: return (struct type_args){ 1, 0 };
case SpvOpUMulExtended: return (struct type_args){ 1, 0 };
case SpvOpSMulExtended: return (struct type_args){ 1, 0 };
case SpvOpAny: return (struct type_args){ 1, 0 };
case SpvOpAll: return (struct type_args){ 1, 0 };
case SpvOpIsNan: return (struct type_args){ 1, 0 };
case SpvOpIsInf: return (struct type_args){ 1, 0 };
case SpvOpIsFinite: return (struct type_args){ 1, 0 };
case SpvOpIsNormal: return (struct type_args){ 1, 0 };
case SpvOpSignBitSet: return (struct type_args){ 1, 0 };
case SpvOpLessOrGreater: return (struct type_args){ 1, 0 };
case SpvOpOrdered: return (struct type_args){ 1, 0 };
case SpvOpUnordered: return (struct type_args){ 1, 0 };
case SpvOpLogicalEqual: return (struct type_args){ 1, 0 };
case SpvOpLogicalNotEqual: return (struct type_args){ 1, 0 };
case SpvOpLogicalOr: return (struct type_args){ 1, 0 };
case SpvOpLogicalAnd: return (struct type_args){ 1, 0 };
case SpvOpLogicalNot: return (struct type_args){ 1, 0 };
case SpvOpSelect: return (struct type_args){ 1, 0 };
case SpvOpIEqual: return (struct type_args){ 1, 0 };
case SpvOpINotEqual: return (struct type_args){ 1, 0 };
case SpvOpUGreaterThan: return (struct type_args){ 1, 0 };
case SpvOpSGreaterThan: return (struct type_args){ 1, 0 };
case SpvOpUGreaterThanEqual: return (struct type_args){ 1, 0 };
case SpvOpSGreaterThanEqual: return (struct type_args){ 1, 0 };
case SpvOpULessThan: return (struct type_args){ 1, 0 };
case SpvOpSLessThan: return (struct type_args){ 1, 0 };
case SpvOpULessThanEqual: return (struct type_args){ 1, 0 };
case SpvOpSLessThanEqual: return (struct type_args){ 1, 0 };
case SpvOpFOrdEqual: return (struct type_args){ 1, 0 };
case SpvOpFUnordEqual: return (struct type_args){ 1, 0 };
case SpvOpFOrdNotEqual: return (struct type_args){ 1, 0 };
case SpvOpFUnordNotEqual: return (struct type_args){ 1, 0 };
case SpvOpFOrdLessThan: return (struct type_args){ 1, 0 };
case SpvOpFUnordLessThan: return (struct type_args){ 1, 0 };
case SpvOpFOrdGreaterThan: return (struct type_args){ 1, 0 };
case SpvOpFUnordGreaterThan: return (struct type_args){ 1, 0 };
case SpvOpFOrdLessThanEqual: return (struct type_args){ 1, 0 };
case SpvOpFUnordLessThanEqual: return (struct type_args){ 1, 0 };
case SpvOpFOrdGreaterThanEqual: return (struct type_args){ 1, 0 };
case SpvOpFUnordGreaterThanEqual: return (struct type_args){ 1, 0 };
case SpvOpShiftRightLogical: return (struct type_args){ 1, 0 };
case SpvOpShiftRightArithmetic: return (struct type_args){ 1, 0 };
case SpvOpShiftLeftLogical: return (struct type_args){ 1, 0 };
case SpvOpBitwiseOr: return (struct type_args){ 1, 0 };
case SpvOpBitwiseXor: return (struct type_args){ 1, 0 };
case SpvOpBitwiseAnd: return (struct type_args){ 1, 0 };
case SpvOpNot: return (struct type_args){ 1, 0 };
case SpvOpBitFieldInsert: return (struct type_args){ 1, 0 };
case SpvOpBitFieldSExtract: return (struct type_args){ 1, 0 };
case SpvOpBitFieldUExtract: return (struct type_args){ 1, 0 };
case SpvOpBitReverse: return (struct type_args){ 1, 0 };
case SpvOpBitCount: return (struct type_args){ 1, 0 };
case SpvOpDPdx: return (struct type_args){ 1, 0 };
case SpvOpDPdy: return (struct type_args){ 1, 0 };
case SpvOpFwidth: return (struct type_args){ 1, 0 };
case SpvOpDPdxFine: return (struct type_args){ 1, 0 };
case SpvOpDPdyFine: return (struct type_args){ 1, 0 };
case SpvOpFwidthFine: return (struct type_args){ 1, 0 };
case SpvOpDPdxCoarse: return (struct type_args){ 1, 0 };
case SpvOpDPdyCoarse: return (struct type_args){ 1, 0 };
case SpvOpFwidthCoarse: return (struct type_args){ 1, 0 };
case SpvOpAtomicLoad: return (struct type_args){ 1, 0 };
case SpvOpAtomicExchange: return (struct type_args){ 1, 0 };
case SpvOpAtomicCompareExchange: return (struct type_args){ 1, 0 };
case SpvOpAtomicCompareExchangeWeak: return (struct type_args){ 1, 0 };
case SpvOpAtomicIIncrement: return (struct type_args){ 1, 0 };
case SpvOpAtomicIDecrement: return (struct type_args){ 1, 0 };
case SpvOpAtomicIAdd: return (struct type_args){ 1, 0 };
case SpvOpAtomicISub: return (struct type_args){ 1, 0 };
case SpvOpAtomicSMin: return (struct type_args){ 1, 0 };
case SpvOpAtomicUMin: return (struct type_args){ 1, 0 };
case SpvOpAtomicSMax: return (struct type_args){ 1, 0 };
case SpvOpAtomicUMax: return (struct type_args){ 1, 0 };
case SpvOpAtomicAnd: return (struct type_args){ 1, 0 };
case SpvOpAtomicOr: return (struct type_args){ 1, 0 };
case SpvOpAtomicXor: return (struct type_args){ 1, 0 };
case SpvOpPhi: return (struct type_args){ 1, 0 };
case SpvOpLabel: return (struct type_args){ 0, -1 };
case SpvOpGroupAsyncCopy: return (struct type_args){ 1, 0 };
case SpvOpGroupAll: return (struct type_args){ 1, 0 };
case SpvOpGroupAny: return (struct type_args){ 1, 0 };
case SpvOpGroupBroadcast: return (struct type_args){ 1, 0 };
case SpvOpGroupIAdd: return (struct type_args){ 1, 0 };
case SpvOpGroupFAdd: return (struct type_args){ 1, 0 };
case SpvOpGroupFMin: return (struct type_args){ 1, 0 };
case SpvOpGroupUMin: return (struct type_args){ 1, 0 };
case SpvOpGroupSMin: return (struct type_args){ 1, 0 };
case SpvOpGroupFMax: return (struct type_args){ 1, 0 };
case SpvOpGroupUMax: return (struct type_args){ 1, 0 };
case SpvOpGroupSMax: return (struct type_args){ 1, 0 };
case SpvOpReadPipe: return (struct type_args){ 1, 0 };
case SpvOpWritePipe: return (struct type_args){ 1, 0 };
case SpvOpReservedReadPipe: return (struct type_args){ 1, 0 };
case SpvOpReservedWritePipe: return (struct type_args){ 1, 0 };
case SpvOpReserveReadPipePackets: return (struct type_args){ 1, 0 };
case SpvOpReserveWritePipePackets: return (struct type_args){ 1, 0 };
case SpvOpIsValidReserveId: return (struct type_args){ 1, 0 };
case SpvOpGetNumPipePackets: return (struct type_args){ 1, 0 };
case SpvOpGetMaxPipePackets: return (struct type_args){ 1, 0 };
case SpvOpGroupReserveReadPipePackets: return (struct type_args){ 1, 0 };
case SpvOpGroupReserveWritePipePackets: return (struct type_args){ 1, 0 };
case SpvOpEnqueueMarker: return (struct type_args){ 1, 0 };
case SpvOpEnqueueKernel: return (struct type_args){ 1, 0 };
case SpvOpGetKernelNDrangeSubGroupCount: return (struct type_args){ 1, 0 };
case SpvOpGetKernelNDrangeMaxSubGroupSize: return (struct type_args){ 1, 0 };
case SpvOpGetKernelWorkGroupSize: return (struct type_args){ 1, 0 };
case SpvOpGetKernelPreferredWorkGroupSizeMultiple: return (struct type_args){ 1, 0 };
case SpvOpCreateUserEvent: return (struct type_args){ 1, 0 };
case SpvOpIsValidEvent: return (struct type_args){ 1, 0 };
case SpvOpGetDefaultQueue: return (struct type_args){ 1, 0 };
case SpvOpBuildNDRange: return (struct type_args){ 1, 0 };
case SpvOpImageSparseSampleImplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSparseSampleExplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSparseSampleDrefImplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSparseSampleDrefExplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSparseSampleProjImplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSparseSampleProjExplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSparseSampleProjDrefImplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSparseSampleProjDrefExplicitLod: return (struct type_args){ 1, 0 };
case SpvOpImageSparseFetch: return (struct type_args){ 1, 0 };
case SpvOpImageSparseGather: return (struct type_args){ 1, 0 };
case SpvOpImageSparseDrefGather: return (struct type_args){ 1, 0 };
case SpvOpImageSparseTexelsResident: return (struct type_args){ 1, 0 };
case SpvOpAtomicFlagTestAndSet: return (struct type_args){ 1, 0 };
case SpvOpImageSparseRead: return (struct type_args){ 1, 0 };
case SpvOpSizeOf: return (struct type_args){ 1, 0 };
case SpvOpTypePipeStorage: return (struct type_args){ 0, -1 };
case SpvOpConstantPipeStorage: return (struct type_args){ 1, 0 };
case SpvOpCreatePipeFromPipeStorage: return (struct type_args){ 1, 0 };
case SpvOpGetKernelLocalSizeForSubgroupCount: return (struct type_args){ 1, 0 };
case SpvOpGetKernelMaxNumSubgroups: return (struct type_args){ 1, 0 };
case SpvOpTypeNamedBarrier: return (struct type_args){ 0, -1 };
case SpvOpNamedBarrierInitialize: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformElect: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformAll: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformAny: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformAllEqual: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBroadcast: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBroadcastFirst: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBallot: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformInverseBallot: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBallotBitExtract: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBallotBitCount: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBallotFindLSB: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBallotFindMSB: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformShuffle: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformShuffleXor: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformShuffleUp: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformShuffleDown: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformIAdd: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformFAdd: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformIMul: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformFMul: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformSMin: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformUMin: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformFMin: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformSMax: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformUMax: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformFMax: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBitwiseAnd: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBitwiseOr: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformBitwiseXor: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformLogicalAnd: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformLogicalOr: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformLogicalXor: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformQuadBroadcast: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformQuadSwap: return (struct type_args){ 1, 0 };
case SpvOpCopyLogical: return (struct type_args){ 1, 0 };
case SpvOpPtrEqual: return (struct type_args){ 1, 0 };
case SpvOpPtrNotEqual: return (struct type_args){ 1, 0 };
case SpvOpPtrDiff: return (struct type_args){ 1, 0 };
case SpvOpSubgroupBallotKHR: return (struct type_args){ 1, 0 };
case SpvOpSubgroupFirstInvocationKHR: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAllKHR: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAnyKHR: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAllEqualKHR: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformRotateKHR: return (struct type_args){ 1, 0 };
case SpvOpSubgroupReadInvocationKHR: return (struct type_args){ 1, 0 };
case SpvOpConvertUToAccelerationStructureKHR: return (struct type_args){ 1, 0 };
case SpvOpSDot: return (struct type_args){ 1, 0 };
case SpvOpUDot: return (struct type_args){ 1, 0 };
case SpvOpSUDot: return (struct type_args){ 1, 0 };
case SpvOpSDotAccSat: return (struct type_args){ 1, 0 };
case SpvOpUDotAccSat: return (struct type_args){ 1, 0 };
case SpvOpSUDotAccSat: return (struct type_args){ 1, 0 };
case SpvOpTypeRayQueryKHR: return (struct type_args){ 0, -1 };
case SpvOpRayQueryProceedKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionTypeKHR: return (struct type_args){ 1, 0 };
case SpvOpGroupIAddNonUniformAMD: return (struct type_args){ 1, 0 };
case SpvOpGroupFAddNonUniformAMD: return (struct type_args){ 1, 0 };
case SpvOpGroupFMinNonUniformAMD: return (struct type_args){ 1, 0 };
case SpvOpGroupUMinNonUniformAMD: return (struct type_args){ 1, 0 };
case SpvOpGroupSMinNonUniformAMD: return (struct type_args){ 1, 0 };
case SpvOpGroupFMaxNonUniformAMD: return (struct type_args){ 1, 0 };
case SpvOpGroupUMaxNonUniformAMD: return (struct type_args){ 1, 0 };
case SpvOpGroupSMaxNonUniformAMD: return (struct type_args){ 1, 0 };
case SpvOpFragmentMaskFetchAMD: return (struct type_args){ 1, 0 };
case SpvOpFragmentFetchAMD: return (struct type_args){ 1, 0 };
case SpvOpReadClockKHR: return (struct type_args){ 1, 0 };
case SpvOpImageSampleFootprintNV: return (struct type_args){ 1, 0 };
case SpvOpGroupNonUniformPartitionNV: return (struct type_args){ 1, 0 };
case SpvOpReportIntersectionNV: return (struct type_args){ 1, 0 };
case SpvOpTypeAccelerationStructureNV: return (struct type_args){ 0, -1 };
case SpvOpTypeCooperativeMatrixNV: return (struct type_args){ 0, -1 };
case SpvOpCooperativeMatrixLoadNV: return (struct type_args){ 1, 0 };
case SpvOpCooperativeMatrixMulAddNV: return (struct type_args){ 1, 0 };
case SpvOpCooperativeMatrixLengthNV: return (struct type_args){ 1, 0 };
case SpvOpIsHelperInvocationEXT: return (struct type_args){ 1, 0 };
case SpvOpConvertUToImageNV: return (struct type_args){ 1, 0 };
case SpvOpConvertUToSamplerNV: return (struct type_args){ 1, 0 };
case SpvOpConvertImageToUNV: return (struct type_args){ 1, 0 };
case SpvOpConvertSamplerToUNV: return (struct type_args){ 1, 0 };
case SpvOpConvertUToSampledImageNV: return (struct type_args){ 1, 0 };
case SpvOpConvertSampledImageToUNV: return (struct type_args){ 1, 0 };
case SpvOpSubgroupShuffleINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupShuffleDownINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupShuffleUpINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupShuffleXorINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupBlockReadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupImageBlockReadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupImageMediaBlockReadINTEL: return (struct type_args){ 1, 0 };
case SpvOpUCountLeadingZerosINTEL: return (struct type_args){ 1, 0 };
case SpvOpUCountTrailingZerosINTEL: return (struct type_args){ 1, 0 };
case SpvOpAbsISubINTEL: return (struct type_args){ 1, 0 };
case SpvOpAbsUSubINTEL: return (struct type_args){ 1, 0 };
case SpvOpIAddSatINTEL: return (struct type_args){ 1, 0 };
case SpvOpUAddSatINTEL: return (struct type_args){ 1, 0 };
case SpvOpIAverageINTEL: return (struct type_args){ 1, 0 };
case SpvOpUAverageINTEL: return (struct type_args){ 1, 0 };
case SpvOpIAverageRoundedINTEL: return (struct type_args){ 1, 0 };
case SpvOpUAverageRoundedINTEL: return (struct type_args){ 1, 0 };
case SpvOpISubSatINTEL: return (struct type_args){ 1, 0 };
case SpvOpUSubSatINTEL: return (struct type_args){ 1, 0 };
case SpvOpIMul32x16INTEL: return (struct type_args){ 1, 0 };
case SpvOpUMul32x16INTEL: return (struct type_args){ 1, 0 };
case SpvOpConstantFunctionPointerINTEL: return (struct type_args){ 1, 0 };
case SpvOpFunctionPointerCallINTEL: return (struct type_args){ 1, 0 };
case SpvOpAsmTargetINTEL: return (struct type_args){ 1, 0 };
case SpvOpAsmINTEL: return (struct type_args){ 1, 0 };
case SpvOpAsmCallINTEL: return (struct type_args){ 1, 0 };
case SpvOpAtomicFMinEXT: return (struct type_args){ 1, 0 };
case SpvOpAtomicFMaxEXT: return (struct type_args){ 1, 0 };
case SpvOpExpectKHR: return (struct type_args){ 1, 0 };
case SpvOpVmeImageINTEL: return (struct type_args){ 1, 0 };
case SpvOpTypeVmeImageINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcImePayloadINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcRefPayloadINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcSicPayloadINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcMcePayloadINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcMceResultINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcImeResultINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcImeSingleReferenceStreaminINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcImeDualReferenceStreaminINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcRefResultINTEL: return (struct type_args){ 0, -1 };
case SpvOpTypeAvcSicResultINTEL: return (struct type_args){ 0, -1 };
case SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceConvertToImePayloadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceConvertToImeResultINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceConvertToRefPayloadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceConvertToRefResultINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceConvertToSicPayloadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceConvertToSicResultINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetMotionVectorsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetInterDistortionsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetInterMajorShapeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetInterMinorShapeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetInterDirectionsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeInitializeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeSetSingleReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeSetDualReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeRefWindowSizeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeAdjustRefOffsetINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeConvertToMcePayloadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeSetWeightedSadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeConvertToMceResultINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetBorderReachedINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcFmeInitializeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcBmeInitializeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcRefConvertToMcePayloadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcRefConvertToMceResultINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicInitializeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicConfigureSkcINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicConfigureIpeLumaINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicConvertToMcePayloadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicEvaluateIpeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicConvertToMceResultINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicGetIpeChromaModeINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: return (struct type_args){ 1, 0 };
case SpvOpSubgroupAvcSicGetInterRawSadsINTEL: return (struct type_args){ 1, 0 };
case SpvOpVariableLengthArrayINTEL: return (struct type_args){ 1, 0 };
case SpvOpSaveMemoryINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatSinCosPiINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatCastINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatCastFromIntINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatCastToIntINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatAddINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatSubINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatMulINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatDivINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatGTINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatGEINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatLTINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatLEINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatEQINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatRecipINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatRSqrtINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatCbrtINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatHypotINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatSqrtINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatLogINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatLog2INTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatLog10INTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatLog1pINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatExpINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatExp2INTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatExp10INTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatExpm1INTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatSinINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatCosINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatSinCosINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatSinPiINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatCosPiINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatASinINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatASinPiINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatACosINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatACosPiINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatATanINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatATanPiINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatATan2INTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatPowINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatPowRINTEL: return (struct type_args){ 1, 0 };
case SpvOpArbitraryFloatPowNINTEL: return (struct type_args){ 1, 0 };
case SpvOpAliasDomainDeclINTEL: return (struct type_args){ 0, -1 };
case SpvOpAliasScopeDeclINTEL: return (struct type_args){ 0, -1 };
case SpvOpAliasScopeListDeclINTEL: return (struct type_args){ 0, -1 };
case SpvOpFixedSqrtINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedRecipINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedRsqrtINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedSinINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedCosINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedSinCosINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedSinPiINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedCosPiINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedSinCosPiINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedLogINTEL: return (struct type_args){ 1, 0 };
case SpvOpFixedExpINTEL: return (struct type_args){ 1, 0 };
case SpvOpPtrCastToCrossWorkgroupINTEL: return (struct type_args){ 1, 0 };
case SpvOpCrossWorkgroupCastToPtrINTEL: return (struct type_args){ 1, 0 };
case SpvOpReadPipeBlockingINTEL: return (struct type_args){ 1, 0 };
case SpvOpWritePipeBlockingINTEL: return (struct type_args){ 1, 0 };
case SpvOpFPGARegINTEL: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetRayTMinKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetRayFlagsKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionTKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionInstanceIdKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionGeometryIndexKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionBarycentricsKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionFrontFaceKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionObjectRayOriginKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetWorldRayDirectionKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetWorldRayOriginKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionObjectToWorldKHR: return (struct type_args){ 1, 0 };
case SpvOpRayQueryGetIntersectionWorldToObjectKHR: return (struct type_args){ 1, 0 };
case SpvOpAtomicFAddEXT: return (struct type_args){ 1, 0 };
case SpvOpTypeBufferSurfaceINTEL: return (struct type_args){ 0, -1 };
case SpvOpGroupIMulKHR: return (struct type_args){ 1, 0 };
case SpvOpGroupFMulKHR: return (struct type_args){ 1, 0 };
case SpvOpGroupBitwiseAndKHR: return (struct type_args){ 1, 0 };
case SpvOpGroupBitwiseOrKHR: return (struct type_args){ 1, 0 };
case SpvOpGroupBitwiseXorKHR: return (struct type_args){ 1, 0 };
case SpvOpGroupLogicalAndKHR: return (struct type_args){ 1, 0 };
case SpvOpGroupLogicalOrKHR: return (struct type_args){ 1, 0 };
case SpvOpGroupLogicalXorKHR: return (struct type_args){ 1, 0 };
default: return (struct type_args){ -1, -1 };
}
}
bool
vtn_set_instruction_result_type(struct vtn_builder *b, SpvOp opcode,
const uint32_t *w, unsigned count)
{
struct type_args args = result_type_args_for_opcode(opcode);
if (args.res_idx >= 0 && args.res_type_idx >= 0) {
struct vtn_value *val = vtn_untyped_value(b, w[1 + args.res_idx]);
val->type = vtn_value(b, w[1 + args.res_type_idx],
vtn_value_type_type)->type;
}
return true;
}

View file

@ -0,0 +1,52 @@
/* DO NOT EDIT - This file is generated automatically by vtn_generator_ids.py script */
/*
* Copyright (C) 2020 Valve Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*
*/
enum vtn_generator {
vtn_generator_llvm_spirv_translator = 6,
vtn_generator_spirv_tools_assembler = 7,
vtn_generator_glslang_reference_front_end = 8,
vtn_generator_shaderc_over_glslang = 13,
vtn_generator_spiregg = 14,
vtn_generator_rspirv = 15,
vtn_generator_mesair_spirv_translator = 16,
vtn_generator_spirv_tools_linker = 17,
vtn_generator_vkd3d_shader_compiler = 18,
vtn_generator_clay_shader_compiler = 19,
vtn_generator_whlsl_shader_translator = 20,
vtn_generator_clspv = 21,
vtn_generator_mlir_spirv_serializer = 22,
vtn_generator_tint_compiler = 23,
vtn_generator_angle_shader_compiler = 24,
vtn_generator_messiah_shader_compiler = 25,
vtn_generator_xenia_emulator_microcode_translator = 26,
vtn_generator_rust_gpu_compiler_backend = 27,
vtn_generator_naga = 28,
vtn_generator_msp_shader_compiler = 29,
vtn_generator_spvgentwo_spirv_ir_tools = 30,
vtn_generator_skia_sksl = 31,
vtn_generator_spirv_beehive_toolkit = 32,
vtn_generator_max = 0xffff,
};