1/* 2 * Copyright (C) 2020 Collabora, Ltd. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice (including the next 12 * paragraph) shall be included in all copies or substantial portions of the 13 * Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 * SOFTWARE. 22 */ 23 24/* Autogenerated file, do not edit */ 25 26 27#ifndef _BI_OPCODES_H_ 28#define _BI_OPCODES_H_ 29 30#include "bifrost.h" 31 32enum bi_adj { 33 BI_ADJ_NONE = 0, 34 BI_ADJ_SMALL = 1, 35 BI_ADJ_LOW = 2, 36}; 37 38enum bi_atom_opc { 39 BI_ATOM_OPC_AADD = 1, 40 BI_ATOM_OPC_ASMIN = 2, 41 BI_ATOM_OPC_ASMAX = 3, 42 BI_ATOM_OPC_AUMIN = 4, 43 BI_ATOM_OPC_AUMAX = 5, 44 BI_ATOM_OPC_AAND = 6, 45 BI_ATOM_OPC_AOR = 7, 46 BI_ATOM_OPC_AXOR = 8, 47 BI_ATOM_OPC_AADDU = 9, 48 BI_ATOM_OPC_AADDS = 10, 49 BI_ATOM_OPC_AINC = 11, 50 BI_ATOM_OPC_ADEC = 12, 51 BI_ATOM_OPC_AUMAX1 = 13, 52 BI_ATOM_OPC_ASMAX1 = 14, 53 BI_ATOM_OPC_AOR1 = 15, 54}; 55 56enum bi_clamp { 57 BI_CLAMP_NONE = 0, 58 BI_CLAMP_CLAMP_0_INF = 1, 59 BI_CLAMP_CLAMP_M1_1 = 2, 60 BI_CLAMP_CLAMP_0_1 = 3, 61}; 62 63enum bi_cmpf { 64 BI_CMPF_EQ = 0, 65 BI_CMPF_GT = 1, 66 BI_CMPF_GE = 2, 67 BI_CMPF_NE = 3, 68 BI_CMPF_LT = 4, 69 BI_CMPF_LE = 5, 70 BI_CMPF_GTLT = 7, 71 BI_CMPF_TOTAL = 8, 72}; 73 74enum bi_extend { 75 BI_EXTEND_NONE = 0, 76 BI_EXTEND_SEXT = 1, 77 BI_EXTEND_ZEXT = 2, 78}; 79 80enum bi_func { 81 BI_FUNC_POW = 0, 82 BI_FUNC_POWR = 1, 83 BI_FUNC_POWN = 2, 84 BI_FUNC_ROOTN = 3, 85}; 86 87enum bi_function { 88 BI_FUNCTION_NONE = 1, 89 BI_FUNCTION_AND = 2, 90 BI_FUNCTION_OR = 3, 91}; 92 93enum bi_inactive_result { 94 BI_INACTIVE_RESULT_ZERO = 0, 95 BI_INACTIVE_RESULT_UMAX = 1, 96 BI_INACTIVE_RESULT_I1 = 2, 97 BI_INACTIVE_RESULT_V2I1 = 3, 98 BI_INACTIVE_RESULT_SMIN = 4, 99 BI_INACTIVE_RESULT_SMAX = 5, 100 BI_INACTIVE_RESULT_V2SMIN = 6, 101 BI_INACTIVE_RESULT_V2SMAX = 7, 102 BI_INACTIVE_RESULT_V4SMIN = 8, 103 BI_INACTIVE_RESULT_V4SMAX = 9, 104 BI_INACTIVE_RESULT_F1 = 10, 105 BI_INACTIVE_RESULT_V2F1 = 11, 106 BI_INACTIVE_RESULT_INFN = 12, 107 BI_INACTIVE_RESULT_INF = 13, 108 BI_INACTIVE_RESULT_V2INFN = 14, 109 BI_INACTIVE_RESULT_V2INF = 15, 110}; 111 112enum bi_lane { 113 BI_LANE_B0 = 0, 114 BI_LANE_B1 = 1, 115 BI_LANE_B2 = 2, 116 BI_LANE_B3 = 3, 117 BI_LANE_H0 = 4, 118 BI_LANE_H1 = 5, 119 BI_LANE_NONE = 6, 120}; 121 122enum bi_lane_dest { 123 BI_LANE_DEST_H0 = 0, 124 BI_LANE_DEST_H1 = 1, 125 BI_LANE_DEST_W0 = 2, 126 BI_LANE_DEST_D0 = 3, 127 BI_LANE_DEST_NONE = 4, 128 BI_LANE_DEST_B0 = 5, 129 BI_LANE_DEST_B1 = 6, 130 BI_LANE_DEST_B2 = 7, 131 BI_LANE_DEST_B3 = 8, 132}; 133 134enum bi_lane_op { 135 BI_LANE_OP_NONE = 0, 136 BI_LANE_OP_XOR = 1, 137 BI_LANE_OP_ACCUMULATE = 2, 138 BI_LANE_OP_SHIFT = 3, 139}; 140 141enum bi_lanes { 142 BI_LANES_B00 = 0, 143 BI_LANES_B11 = 1, 144 BI_LANES_B22 = 2, 145 BI_LANES_B33 = 3, 146 BI_LANES_B01 = 4, 147 BI_LANES_B23 = 5, 148 BI_LANES_B02 = 6, 149 BI_LANES_B0123 = 8, 150 BI_LANES_B0000 = 9, 151 BI_LANES_B1111 = 10, 152 BI_LANES_B2222 = 11, 153 BI_LANES_B3333 = 12, 154 BI_LANES_NONE = 13, 155 BI_LANES_H0 = 14, 156 BI_LANES_H1 = 15, 157 BI_LANES_B0 = 16, 158 BI_LANES_B1 = 17, 159 BI_LANES_B2 = 18, 160 BI_LANES_B3 = 19, 161 BI_LANES_H01 = 20, 162 BI_LANES_H10 = 21, 163 BI_LANES_H00 = 22, 164 BI_LANES_H11 = 23, 165 BI_LANES_B0101 = 24, 166 BI_LANES_B2323 = 25, 167}; 168 169enum bi_mode { 170 BI_MODE_RED = 0, 171 BI_MODE_BASE2 = 1, 172 BI_MODE_NATURAL = 2, 173}; 174 175enum bi_mux { 176 BI_MUX_NEG = 0, 177 BI_MUX_INT_ZERO = 1, 178 BI_MUX_FP_ZERO = 2, 179 BI_MUX_BIT = 3, 180}; 181 182enum bi_precision { 183 BI_PRECISION_NONE = 0, 184 BI_PRECISION_HIGH = 1, 185 BI_PRECISION_LOW = 2, 186}; 187 188enum bi_register_format { 189 BI_REGISTER_FORMAT_F16 = 0, 190 BI_REGISTER_FORMAT_F32 = 1, 191 BI_REGISTER_FORMAT_S32 = 2, 192 BI_REGISTER_FORMAT_U32 = 3, 193 BI_REGISTER_FORMAT_S16 = 4, 194 BI_REGISTER_FORMAT_U16 = 5, 195 BI_REGISTER_FORMAT_F64 = 6, 196 BI_REGISTER_FORMAT_I64 = 7, 197 BI_REGISTER_FORMAT_AUTO = 8, 198}; 199 200enum bi_replicate { 201 BI_REPLICATE_B0123 = 0, 202 BI_REPLICATE_B0000 = 2, 203 BI_REPLICATE_B1111 = 3, 204 BI_REPLICATE_B2222 = 4, 205 BI_REPLICATE_B3333 = 5, 206}; 207 208enum bi_result_type { 209 BI_RESULT_TYPE_I1 = 0, 210 BI_RESULT_TYPE_F1 = 1, 211 BI_RESULT_TYPE_M1 = 2, 212}; 213 214enum bi_round { 215 BI_ROUND_NONE = 0, 216 BI_ROUND_RTP = 1, 217 BI_ROUND_RTN = 2, 218 BI_ROUND_RTZ = 3, 219 BI_ROUND_RTNA = 4, 220 BI_ROUND_RTO = 6, 221 BI_ROUND_INF = 7, 222 BI_ROUND_INF0 = 8, 223}; 224 225enum bi_sample { 226 BI_SAMPLE_CENTER = 0, 227 BI_SAMPLE_CENTROID = 1, 228 BI_SAMPLE_SAMPLE = 2, 229 BI_SAMPLE_EXPLICIT = 3, 230 BI_SAMPLE_NONE = 4, 231}; 232 233enum bi_seg { 234 BI_SEG_NONE = 0, 235 BI_SEG_WLS = 1, 236 BI_SEG_STREAM = 3, 237 BI_SEG_UBO = 4, 238 BI_SEG_TL = 5, 239}; 240 241enum bi_sem { 242 BI_SEM_NAN_SUPPRESS = 0, 243 BI_SEM_NAN_PROPAGATE = 1, 244 BI_SEM_C = 2, 245 BI_SEM_INVERSE_C = 3, 246}; 247 248enum bi_source { 249 BI_SOURCE_SYSTEM_TIMESTAMP = 1, 250 BI_SOURCE_CYCLE_COUNTER = 2, 251}; 252 253enum bi_special { 254 BI_SPECIAL_NONE = 0, 255 BI_SPECIAL_N = 1, 256 BI_SPECIAL_LEFT = 2, 257 BI_SPECIAL_SCALE16 = 3, 258}; 259 260enum bi_stack_mode { 261 BI_STACK_MODE_RETURN = 0, 262 BI_STACK_MODE_CALL = 1, 263 BI_STACK_MODE_NONE = 2, 264 BI_STACK_MODE_REPLACE = 3, 265}; 266 267enum bi_subgroup { 268 BI_SUBGROUP_SUBGROUP2 = 0, 269 BI_SUBGROUP_SUBGROUP4 = 1, 270 BI_SUBGROUP_SUBGROUP8 = 2, 271}; 272 273enum bi_swz { 274 BI_SWZ_H00 = 0, 275 BI_SWZ_H10 = 1, 276 BI_SWZ_H01 = 2, 277 BI_SWZ_H11 = 3, 278 BI_SWZ_B0000 = 5, 279 BI_SWZ_B1111 = 6, 280 BI_SWZ_B2222 = 7, 281 BI_SWZ_B3333 = 8, 282 BI_SWZ_B0011 = 9, 283 BI_SWZ_B2233 = 10, 284 BI_SWZ_B1032 = 11, 285 BI_SWZ_B3210 = 12, 286 BI_SWZ_B00 = 13, 287 BI_SWZ_B10 = 14, 288 BI_SWZ_B20 = 15, 289 BI_SWZ_B30 = 16, 290 BI_SWZ_B01 = 17, 291 BI_SWZ_B11 = 18, 292 BI_SWZ_B21 = 19, 293 BI_SWZ_B31 = 20, 294 BI_SWZ_B02 = 21, 295 BI_SWZ_B12 = 22, 296 BI_SWZ_B22 = 23, 297 BI_SWZ_B32 = 24, 298 BI_SWZ_B03 = 25, 299 BI_SWZ_B13 = 26, 300 BI_SWZ_B23 = 27, 301 BI_SWZ_B33 = 28, 302}; 303 304enum bi_table { 305 BI_TABLE_NONE = 0, 306 BI_TABLE_ATTRIBUTE_2 = 1, 307 BI_TABLE_ATTRIBUTE_1 = 2, 308 BI_TABLE_FLAT = 3, 309}; 310 311enum bi_update { 312 BI_UPDATE_STORE = 0, 313 BI_UPDATE_RETRIEVE = 1, 314 BI_UPDATE_CONDITIONAL = 2, 315 BI_UPDATE_CLOBBER = 3, 316}; 317 318enum bi_varying_name { 319 BI_VARYING_NAME_POINT = 0, 320 BI_VARYING_NAME_FRAG_W = 2, 321 BI_VARYING_NAME_FRAG_Z = 3, 322}; 323 324enum bi_vecsize { 325 BI_VECSIZE_NONE = 0, 326 BI_VECSIZE_V2 = 1, 327 BI_VECSIZE_V3 = 2, 328 BI_VECSIZE_V4 = 3, 329}; 330 331enum bi_widen { 332 BI_WIDEN_NONE = 1, 333 BI_WIDEN_H0 = 2, 334 BI_WIDEN_H1 = 3, 335 BI_WIDEN_B0 = 4, 336 BI_WIDEN_B1 = 5, 337 BI_WIDEN_B2 = 6, 338 BI_WIDEN_B3 = 7, 339}; 340 341enum bi_opcode { 342 BI_OPCODE_ACMPSTORE_I32, 343 BI_OPCODE_ACMPSTORE_I64, 344 BI_OPCODE_ACMPXCHG_I32, 345 BI_OPCODE_ACMPXCHG_I64, 346 BI_OPCODE_ARSHIFT_I32, 347 BI_OPCODE_ARSHIFT_V2I16, 348 BI_OPCODE_ARSHIFT_V4I8, 349 BI_OPCODE_ARSHIFT_DOUBLE_I32, 350 BI_OPCODE_ATEST, 351 BI_OPCODE_ATOM_C_I32, 352 BI_OPCODE_ATOM_C_I64, 353 BI_OPCODE_ATOM_C1_I32, 354 BI_OPCODE_ATOM_C1_I64, 355 BI_OPCODE_ATOM_C1_RETURN_I32, 356 BI_OPCODE_ATOM_C1_RETURN_I64, 357 BI_OPCODE_ATOM_CX, 358 BI_OPCODE_ATOM_C_RETURN_I32, 359 BI_OPCODE_ATOM_C_RETURN_I64, 360 BI_OPCODE_ATOM_POST_I32, 361 BI_OPCODE_ATOM_POST_I64, 362 BI_OPCODE_ATOM_PRE_I64, 363 BI_OPCODE_AXCHG_I32, 364 BI_OPCODE_AXCHG_I64, 365 BI_OPCODE_BARRIER, 366 BI_OPCODE_BITREV_I32, 367 BI_OPCODE_BLEND, 368 BI_OPCODE_BRANCH_F16, 369 BI_OPCODE_BRANCH_F32, 370 BI_OPCODE_BRANCH_I16, 371 BI_OPCODE_BRANCH_I32, 372 BI_OPCODE_BRANCH_S16, 373 BI_OPCODE_BRANCH_S32, 374 BI_OPCODE_BRANCH_U16, 375 BI_OPCODE_BRANCH_U32, 376 BI_OPCODE_BRANCHC_I16, 377 BI_OPCODE_BRANCHC_I32, 378 BI_OPCODE_BRANCHZ_F16, 379 BI_OPCODE_BRANCHZ_F32, 380 BI_OPCODE_BRANCHZ_I16, 381 BI_OPCODE_BRANCHZ_I32, 382 BI_OPCODE_BRANCHZ_S16, 383 BI_OPCODE_BRANCHZ_S32, 384 BI_OPCODE_BRANCHZ_U16, 385 BI_OPCODE_BRANCHZ_U32, 386 BI_OPCODE_BRANCH_DIVERG, 387 BI_OPCODE_BRANCH_LOWBITS_F32, 388 BI_OPCODE_BRANCH_NO_DIVERG, 389 BI_OPCODE_CLPER_I32, 390 BI_OPCODE_CLPER_V6_I32, 391 BI_OPCODE_CLZ_U32, 392 BI_OPCODE_CLZ_V2U16, 393 BI_OPCODE_CLZ_V4U8, 394 BI_OPCODE_CSEL_F32, 395 BI_OPCODE_CSEL_I32, 396 BI_OPCODE_CSEL_S32, 397 BI_OPCODE_CSEL_U32, 398 BI_OPCODE_CSEL_V2F16, 399 BI_OPCODE_CSEL_V2I16, 400 BI_OPCODE_CSEL_V2S16, 401 BI_OPCODE_CSEL_V2U16, 402 BI_OPCODE_CUBEFACE, 403 BI_OPCODE_CUBEFACE1, 404 BI_OPCODE_CUBEFACE2, 405 BI_OPCODE_CUBE_SSEL, 406 BI_OPCODE_CUBE_TSEL, 407 BI_OPCODE_DISCARD_B32, 408 BI_OPCODE_DISCARD_F32, 409 BI_OPCODE_DTSEL_IMM, 410 BI_OPCODE_F16_TO_F32, 411 BI_OPCODE_F16_TO_S32, 412 BI_OPCODE_F16_TO_U32, 413 BI_OPCODE_F32_TO_S32, 414 BI_OPCODE_F32_TO_U32, 415 BI_OPCODE_FABSNEG_F32, 416 BI_OPCODE_FABSNEG_V2F16, 417 BI_OPCODE_FADD_F32, 418 BI_OPCODE_FADD_V2F16, 419 BI_OPCODE_FADD_IMM_F32, 420 BI_OPCODE_FADD_IMM_V2F16, 421 BI_OPCODE_FADD_LSCALE_F32, 422 BI_OPCODE_FADD_RSCALE_F32, 423 BI_OPCODE_FCLAMP_F32, 424 BI_OPCODE_FCLAMP_V2F16, 425 BI_OPCODE_FCMP_F32, 426 BI_OPCODE_FCMP_V2F16, 427 BI_OPCODE_FCOS_TABLE_U6, 428 BI_OPCODE_FEXP_F32, 429 BI_OPCODE_FEXP_TABLE_U4, 430 BI_OPCODE_FLOGD_F32, 431 BI_OPCODE_FLOG_TABLE_F32, 432 BI_OPCODE_FLSHIFT_DOUBLE_I32, 433 BI_OPCODE_FMA_F32, 434 BI_OPCODE_FMA_V2F16, 435 BI_OPCODE_FMAX_F32, 436 BI_OPCODE_FMAX_V2F16, 437 BI_OPCODE_FMA_RSCALE_F32, 438 BI_OPCODE_FMA_RSCALE_V2F16, 439 BI_OPCODE_FMIN_F32, 440 BI_OPCODE_FMIN_V2F16, 441 BI_OPCODE_FMUL_CSLICE, 442 BI_OPCODE_FMUL_SLICE_F32, 443 BI_OPCODE_FPCLASS_F16, 444 BI_OPCODE_FPCLASS_F32, 445 BI_OPCODE_FPOW_SC_APPLY, 446 BI_OPCODE_FPOW_SC_DET_F16, 447 BI_OPCODE_FPOW_SC_DET_F32, 448 BI_OPCODE_FRCP_F16, 449 BI_OPCODE_FRCP_F32, 450 BI_OPCODE_FRCP_APPROX_F32, 451 BI_OPCODE_FREXPE_F32, 452 BI_OPCODE_FREXPE_V2F16, 453 BI_OPCODE_FREXPM_F32, 454 BI_OPCODE_FREXPM_V2F16, 455 BI_OPCODE_FROUND_F32, 456 BI_OPCODE_FROUND_V2F16, 457 BI_OPCODE_FRSCALE_F32, 458 BI_OPCODE_FRSCALE_V2F16, 459 BI_OPCODE_FRSHIFT_DOUBLE_I32, 460 BI_OPCODE_FRSQ_F16, 461 BI_OPCODE_FRSQ_F32, 462 BI_OPCODE_FRSQ_APPROX_F32, 463 BI_OPCODE_FSINCOS_OFFSET_U6, 464 BI_OPCODE_FSIN_TABLE_U6, 465 BI_OPCODE_HADD_S32, 466 BI_OPCODE_HADD_U32, 467 BI_OPCODE_HADD_V2S16, 468 BI_OPCODE_HADD_V2U16, 469 BI_OPCODE_HADD_V4S8, 470 BI_OPCODE_HADD_V4U8, 471 BI_OPCODE_IABS_S32, 472 BI_OPCODE_IABS_V2S16, 473 BI_OPCODE_IABS_V4S8, 474 BI_OPCODE_IADD_S32, 475 BI_OPCODE_IADD_U32, 476 BI_OPCODE_IADD_V2S16, 477 BI_OPCODE_IADD_V2U16, 478 BI_OPCODE_IADD_V4S8, 479 BI_OPCODE_IADD_V4U8, 480 BI_OPCODE_IADDC_I32, 481 BI_OPCODE_IADD_IMM_I32, 482 BI_OPCODE_IADD_IMM_V2I16, 483 BI_OPCODE_IADD_IMM_V4I8, 484 BI_OPCODE_ICMP_I32, 485 BI_OPCODE_ICMP_S32, 486 BI_OPCODE_ICMP_U32, 487 BI_OPCODE_ICMP_V2I16, 488 BI_OPCODE_ICMP_V2S16, 489 BI_OPCODE_ICMP_V2U16, 490 BI_OPCODE_ICMP_V4I8, 491 BI_OPCODE_ICMP_V4S8, 492 BI_OPCODE_ICMP_V4U8, 493 BI_OPCODE_ICMPF_I32, 494 BI_OPCODE_ICMPI_I32, 495 BI_OPCODE_ICMPI_S32, 496 BI_OPCODE_ICMPI_U32, 497 BI_OPCODE_ICMPM_I32, 498 BI_OPCODE_IDP_V4I8, 499 BI_OPCODE_ILOGB_F32, 500 BI_OPCODE_ILOGB_V2F16, 501 BI_OPCODE_IMOV_FMA, 502 BI_OPCODE_IMUL_I32, 503 BI_OPCODE_IMUL_V2I16, 504 BI_OPCODE_IMUL_V4I8, 505 BI_OPCODE_IMULD, 506 BI_OPCODE_ISUB_S32, 507 BI_OPCODE_ISUB_U32, 508 BI_OPCODE_ISUB_V2S16, 509 BI_OPCODE_ISUB_V2U16, 510 BI_OPCODE_ISUB_V4S8, 511 BI_OPCODE_ISUB_V4U8, 512 BI_OPCODE_ISUBB_I32, 513 BI_OPCODE_JUMP, 514 BI_OPCODE_JUMP_EX, 515 BI_OPCODE_LDEXP_F32, 516 BI_OPCODE_LDEXP_V2F16, 517 BI_OPCODE_LD_ATTR, 518 BI_OPCODE_LD_ATTR_IMM, 519 BI_OPCODE_LD_ATTR_TEX, 520 BI_OPCODE_LD_CVT, 521 BI_OPCODE_LD_GCLK_U64, 522 BI_OPCODE_LD_TILE, 523 BI_OPCODE_LD_VAR, 524 BI_OPCODE_LD_VAR_FLAT, 525 BI_OPCODE_LD_VAR_FLAT_IMM, 526 BI_OPCODE_LD_VAR_IMM, 527 BI_OPCODE_LD_VAR_SPECIAL, 528 BI_OPCODE_LEA_ATTR, 529 BI_OPCODE_LEA_ATTR_IMM, 530 BI_OPCODE_LEA_ATTR_TEX, 531 BI_OPCODE_LEA_TEX, 532 BI_OPCODE_LEA_TEX_IMM, 533 BI_OPCODE_LOAD_I128, 534 BI_OPCODE_LOAD_I16, 535 BI_OPCODE_LOAD_I24, 536 BI_OPCODE_LOAD_I32, 537 BI_OPCODE_LOAD_I48, 538 BI_OPCODE_LOAD_I64, 539 BI_OPCODE_LOAD_I8, 540 BI_OPCODE_LOAD_I96, 541 BI_OPCODE_LOGB_F32, 542 BI_OPCODE_LOGB_V2F16, 543 BI_OPCODE_LROT_DOUBLE_I32, 544 BI_OPCODE_LSHIFT_AND_I32, 545 BI_OPCODE_LSHIFT_AND_V2I16, 546 BI_OPCODE_LSHIFT_AND_V4I8, 547 BI_OPCODE_LSHIFT_DOUBLE_I32, 548 BI_OPCODE_LSHIFT_OR_I32, 549 BI_OPCODE_LSHIFT_OR_V2I16, 550 BI_OPCODE_LSHIFT_OR_V4I8, 551 BI_OPCODE_LSHIFT_XOR_I32, 552 BI_OPCODE_LSHIFT_XOR_V2I16, 553 BI_OPCODE_LSHIFT_XOR_V4I8, 554 BI_OPCODE_MKVEC_V2I16, 555 BI_OPCODE_MKVEC_V4I8, 556 BI_OPCODE_MOV_I32, 557 BI_OPCODE_MUX_I32, 558 BI_OPCODE_MUX_V2I16, 559 BI_OPCODE_MUX_V4I8, 560 BI_OPCODE_NOP, 561 BI_OPCODE_PATOM_C_I32, 562 BI_OPCODE_PATOM_C1_I32, 563 BI_OPCODE_POPCOUNT_I32, 564 BI_OPCODE_QUIET_F32, 565 BI_OPCODE_QUIET_V2F16, 566 BI_OPCODE_RROT_DOUBLE_I32, 567 BI_OPCODE_RSHIFT_AND_I32, 568 BI_OPCODE_RSHIFT_AND_V2I16, 569 BI_OPCODE_RSHIFT_AND_V4I8, 570 BI_OPCODE_RSHIFT_DOUBLE_I32, 571 BI_OPCODE_RSHIFT_OR_I32, 572 BI_OPCODE_RSHIFT_OR_V2I16, 573 BI_OPCODE_RSHIFT_OR_V4I8, 574 BI_OPCODE_RSHIFT_XOR_I32, 575 BI_OPCODE_RSHIFT_XOR_V2I16, 576 BI_OPCODE_RSHIFT_XOR_V4I8, 577 BI_OPCODE_S16_TO_F32, 578 BI_OPCODE_S16_TO_S32, 579 BI_OPCODE_S32_TO_F32, 580 BI_OPCODE_S8_TO_F32, 581 BI_OPCODE_S8_TO_S32, 582 BI_OPCODE_SEG_ADD, 583 BI_OPCODE_SEG_ADD_I64, 584 BI_OPCODE_SHADDXH_I32, 585 BI_OPCODE_SHADDXL_I64, 586 BI_OPCODE_SHADDXL_S32, 587 BI_OPCODE_SHADDXL_U32, 588 BI_OPCODE_SHIFT_DOUBLE_I32, 589 BI_OPCODE_STORE_I128, 590 BI_OPCODE_STORE_I16, 591 BI_OPCODE_STORE_I24, 592 BI_OPCODE_STORE_I32, 593 BI_OPCODE_STORE_I48, 594 BI_OPCODE_STORE_I64, 595 BI_OPCODE_STORE_I8, 596 BI_OPCODE_STORE_I96, 597 BI_OPCODE_ST_CVT, 598 BI_OPCODE_ST_TILE, 599 BI_OPCODE_SWZ_V2I16, 600 BI_OPCODE_SWZ_V4I8, 601 BI_OPCODE_TEXC, 602 BI_OPCODE_TEXS_2D_F16, 603 BI_OPCODE_TEXS_2D_F32, 604 BI_OPCODE_TEXS_CUBE_F16, 605 BI_OPCODE_TEXS_CUBE_F32, 606 BI_OPCODE_U16_TO_F32, 607 BI_OPCODE_U16_TO_U32, 608 BI_OPCODE_U32_TO_F32, 609 BI_OPCODE_U8_TO_F32, 610 BI_OPCODE_U8_TO_U32, 611 BI_OPCODE_V2F16_TO_V2S16, 612 BI_OPCODE_V2F16_TO_V2U16, 613 BI_OPCODE_V2F32_TO_V2F16, 614 BI_OPCODE_V2S16_TO_V2F16, 615 BI_OPCODE_V2S8_TO_V2F16, 616 BI_OPCODE_V2S8_TO_V2S16, 617 BI_OPCODE_V2U16_TO_V2F16, 618 BI_OPCODE_V2U8_TO_V2F16, 619 BI_OPCODE_V2U8_TO_V2U16, 620 BI_OPCODE_VAR_TEX_F16, 621 BI_OPCODE_VAR_TEX_F32, 622 BI_OPCODE_VN_ASST1_F16, 623 BI_OPCODE_VN_ASST1_F32, 624 BI_OPCODE_VN_ASST2_F32, 625 BI_OPCODE_VN_ASST2_V2F16, 626 BI_OPCODE_WMASK, 627 BI_OPCODE_ZS_EMIT, 628 BI_NUM_OPCODES 629}; 630 631/* Number of staging registers accessed, note this fits into 3-bits */ 632 633enum bi_sr_count { 634 /* fixed counts */ 635 BI_SR_COUNT_0 = 0, 636 BI_SR_COUNT_1 = 1, 637 BI_SR_COUNT_2 = 2, 638 BI_SR_COUNT_3 = 3, 639 BI_SR_COUNT_4 = 4, 640 641 /* derived from register_format and vecsize */ 642 BI_SR_COUNT_FORMAT = 5, 643 644 /* equal to vecsize alone */ 645 BI_SR_COUNT_VECSIZE = 6, 646 647 /* specified directly as the sr_count immediate */ 648 BI_SR_COUNT_SR_COUNT = 7 649}; 650 651enum bi_size { 652 BI_SIZE_8 = 0, 653 BI_SIZE_16, 654 BI_SIZE_24, 655 BI_SIZE_32, 656 BI_SIZE_48, 657 BI_SIZE_64, 658 BI_SIZE_96, 659 BI_SIZE_128, 660}; 661 662/* Description of an opcode in the IR */ 663struct bi_op_props { 664 const char *name; 665 666 enum bifrost_message_type message : 4; 667 enum bi_size size : 3; 668 enum bi_sr_count sr_count : 3; 669 bool sr_read : 1; 670 bool sr_write : 1; 671 bool last : 1; 672 bool branch : 1; 673 bool table : 1; 674 bool fma : 1; 675 bool add : 1; 676 677 /* Supported propagable modifiers */ 678 bool clamp : 1; 679 bool not_result : 1; 680 unsigned abs : 3; 681 unsigned neg : 3; 682 bool not : 1; 683}; 684 685/* Generated in bi_opcodes.c.py */ 686extern struct bi_op_props bi_opcode_props[BI_NUM_OPCODES]; 687 688#endif 689 690