1bf215546Sopenharmony_ci/* Copyright (c) 2018-2019 Alyssa Rosenzweig (alyssa@rosenzweig.io) 2bf215546Sopenharmony_ci * Copyright (C) 2019-2020 Collabora, Ltd. 3bf215546Sopenharmony_ci * 4bf215546Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a copy 5bf215546Sopenharmony_ci * of this software and associated documentation files (the "Software"), to deal 6bf215546Sopenharmony_ci * in the Software without restriction, including without limitation the rights 7bf215546Sopenharmony_ci * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8bf215546Sopenharmony_ci * copies of the Software, and to permit persons to whom the Software is 9bf215546Sopenharmony_ci * furnished to do so, subject to the following conditions: 10bf215546Sopenharmony_ci * 11bf215546Sopenharmony_ci * The above copyright notice and this permission notice shall be included in 12bf215546Sopenharmony_ci * all copies or substantial portions of the Software. 13bf215546Sopenharmony_ci * 14bf215546Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15bf215546Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16bf215546Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17bf215546Sopenharmony_ci * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18bf215546Sopenharmony_ci * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19bf215546Sopenharmony_ci * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20bf215546Sopenharmony_ci * THE SOFTWARE. 21bf215546Sopenharmony_ci */ 22bf215546Sopenharmony_ci 23bf215546Sopenharmony_ci#include "midgard.h" 24bf215546Sopenharmony_ci 25bf215546Sopenharmony_ci/* Include the definitions of the macros and such */ 26bf215546Sopenharmony_ci 27bf215546Sopenharmony_ci#define MIDGARD_OPS_TABLE 28bf215546Sopenharmony_ci#include "helpers.h" 29bf215546Sopenharmony_ci#undef MIDGARD_OPS_TABLE 30bf215546Sopenharmony_ci 31bf215546Sopenharmony_ci#include "midgard_ops.h" 32bf215546Sopenharmony_ci 33bf215546Sopenharmony_ci/* Table of mapping opcodes to accompanying properties. This is used for both 34bf215546Sopenharmony_ci * the disassembler and the compiler. It is placed in a .c file like this to 35bf215546Sopenharmony_ci * avoid duplications in the binary */ 36bf215546Sopenharmony_ci 37bf215546Sopenharmony_cistruct mir_op_props alu_opcode_props[256] = { 38bf215546Sopenharmony_ci [midgard_alu_op_fadd] = {"FADD", UNITS_ADD | OP_COMMUTES}, 39bf215546Sopenharmony_ci [midgard_alu_op_fadd_rtz] = {"FADD.rtz", UNITS_ADD | OP_COMMUTES}, 40bf215546Sopenharmony_ci [midgard_alu_op_fadd_rtn] = {"FADD.rtn", UNITS_ADD | OP_COMMUTES}, 41bf215546Sopenharmony_ci [midgard_alu_op_fadd_rtp] = {"FADD.rtp", UNITS_ADD | OP_COMMUTES}, 42bf215546Sopenharmony_ci [midgard_alu_op_fmul] = {"FMUL", UNITS_MUL | UNIT_VLUT | OP_COMMUTES}, 43bf215546Sopenharmony_ci [midgard_alu_op_fmul_rtz] = {"FMUL.rtz", UNITS_MUL | UNIT_VLUT | OP_COMMUTES}, 44bf215546Sopenharmony_ci [midgard_alu_op_fmul_rtn] = {"FMUL.rtn", UNITS_MUL | UNIT_VLUT | OP_COMMUTES}, 45bf215546Sopenharmony_ci [midgard_alu_op_fmul_rtp] = {"FMUL.rtp", UNITS_MUL | UNIT_VLUT | OP_COMMUTES}, 46bf215546Sopenharmony_ci [midgard_alu_op_fmin] = {"FMIN", UNITS_MOST | OP_COMMUTES}, 47bf215546Sopenharmony_ci [midgard_alu_op_fmin_nan] = {"FMIN.nan", UNITS_MOST | OP_COMMUTES}, 48bf215546Sopenharmony_ci [midgard_alu_op_fabsmin] = {"FABSMIN", UNITS_MOST | OP_COMMUTES}, 49bf215546Sopenharmony_ci [midgard_alu_op_fabsmin_nan] = {"FABSMIN.nan", UNITS_MOST | OP_COMMUTES}, 50bf215546Sopenharmony_ci [midgard_alu_op_fmax] = {"FMAX", UNITS_MOST | OP_COMMUTES}, 51bf215546Sopenharmony_ci [midgard_alu_op_fmax_nan] = {"FMAX.nan", UNITS_MOST | OP_COMMUTES}, 52bf215546Sopenharmony_ci [midgard_alu_op_fabsmax] = {"FABSMAX", UNITS_MOST | OP_COMMUTES}, 53bf215546Sopenharmony_ci [midgard_alu_op_fabsmax_nan] = {"FABSMAX.nan", UNITS_MOST | OP_COMMUTES}, 54bf215546Sopenharmony_ci [midgard_alu_op_imin] = {"MIN", UNITS_MOST | OP_COMMUTES}, 55bf215546Sopenharmony_ci [midgard_alu_op_imax] = {"MAX", UNITS_MOST | OP_COMMUTES}, 56bf215546Sopenharmony_ci [midgard_alu_op_umin] = {"MIN", UNITS_MOST | OP_COMMUTES}, 57bf215546Sopenharmony_ci [midgard_alu_op_umax] = {"MAX", UNITS_MOST | OP_COMMUTES}, 58bf215546Sopenharmony_ci [midgard_alu_op_iavg] = {"AVG.rtz", UNITS_ADD | OP_COMMUTES}, 59bf215546Sopenharmony_ci [midgard_alu_op_uavg] = {"AVG.rtz", UNITS_ADD | OP_COMMUTES}, 60bf215546Sopenharmony_ci [midgard_alu_op_iravg] = {"AVG.round", UNITS_ADD | OP_COMMUTES}, 61bf215546Sopenharmony_ci [midgard_alu_op_uravg] = {"AVG.round", UNITS_ADD | OP_COMMUTES}, 62bf215546Sopenharmony_ci 63bf215546Sopenharmony_ci [midgard_alu_op_fmov] = {"FMOV", UNITS_ALL | QUIRK_FLIPPED_R24}, 64bf215546Sopenharmony_ci [midgard_alu_op_fmov_rtz] = {"FMOV.rtz", UNITS_ALL | QUIRK_FLIPPED_R24}, 65bf215546Sopenharmony_ci [midgard_alu_op_fmov_rtn] = {"FMOV.rtn", UNITS_ALL | QUIRK_FLIPPED_R24}, 66bf215546Sopenharmony_ci [midgard_alu_op_fmov_rtp] = {"FMOV.rtp", UNITS_ALL | QUIRK_FLIPPED_R24}, 67bf215546Sopenharmony_ci [midgard_alu_op_froundaway] = {"FROUNDAWAY", UNITS_ADD}, 68bf215546Sopenharmony_ci [midgard_alu_op_froundeven] = {"FROUNDEVEN", UNITS_ADD}, 69bf215546Sopenharmony_ci [midgard_alu_op_ftrunc] = {"FTRUNC", UNITS_ADD}, 70bf215546Sopenharmony_ci [midgard_alu_op_ffloor] = {"FFLOOR", UNITS_ADD}, 71bf215546Sopenharmony_ci [midgard_alu_op_fceil] = {"FCEIL", UNITS_ADD}, 72bf215546Sopenharmony_ci 73bf215546Sopenharmony_ci /* Multiplies the X/Y components of the first arg and adds the second 74bf215546Sopenharmony_ci * arg. Like other LUTs, it must be scalarized. */ 75bf215546Sopenharmony_ci [midgard_alu_op_ffma] = {"FMA", UNIT_VLUT}, 76bf215546Sopenharmony_ci [midgard_alu_op_ffma_rtz] = {"FMA.rtz", UNIT_VLUT}, 77bf215546Sopenharmony_ci [midgard_alu_op_ffma_rtn] = {"FMA.rtn", UNIT_VLUT}, 78bf215546Sopenharmony_ci [midgard_alu_op_ffma_rtp] = {"FMA.rtp", UNIT_VLUT}, 79bf215546Sopenharmony_ci 80bf215546Sopenharmony_ci /* Though they output a scalar, they need to run on a vector unit 81bf215546Sopenharmony_ci * since they process vectors */ 82bf215546Sopenharmony_ci [midgard_alu_op_fdot3] = {"FDOT3", UNIT_VMUL | OP_CHANNEL_COUNT(3) | OP_COMMUTES}, 83bf215546Sopenharmony_ci [midgard_alu_op_fdot3r] = {"FDOT3R", UNIT_VMUL | OP_CHANNEL_COUNT(3) | OP_COMMUTES}, 84bf215546Sopenharmony_ci [midgard_alu_op_fdot4] = {"FDOT4", UNIT_VMUL | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 85bf215546Sopenharmony_ci 86bf215546Sopenharmony_ci /* Incredibly, iadd can run on vmul, etc */ 87bf215546Sopenharmony_ci [midgard_alu_op_iadd] = {"ADD", UNITS_MOST | OP_COMMUTES}, 88bf215546Sopenharmony_ci [midgard_alu_op_ishladd] = {"ADD", UNITS_MUL}, 89bf215546Sopenharmony_ci [midgard_alu_op_iaddsat] = {"ADDSAT", UNITS_ADD | OP_COMMUTES}, 90bf215546Sopenharmony_ci [midgard_alu_op_uaddsat] = {"ADDSAT", UNITS_ADD | OP_COMMUTES}, 91bf215546Sopenharmony_ci [midgard_alu_op_uabsdiff] = {"ABSDIFF", UNITS_ADD}, 92bf215546Sopenharmony_ci [midgard_alu_op_iabsdiff] = {"ABSDIFF", UNITS_ADD}, 93bf215546Sopenharmony_ci [midgard_alu_op_ichoose] = {"CHOOSE", UNITS_ADD}, 94bf215546Sopenharmony_ci [midgard_alu_op_isub] = {"SUB", UNITS_MOST}, 95bf215546Sopenharmony_ci [midgard_alu_op_ishlsub] = {"SUB", UNITS_MUL}, 96bf215546Sopenharmony_ci [midgard_alu_op_isubsat] = {"SUBSAT", UNITS_ADD}, 97bf215546Sopenharmony_ci [midgard_alu_op_usubsat] = {"SUBSAT", UNITS_ADD}, 98bf215546Sopenharmony_ci [midgard_alu_op_imul] = {"MUL", UNITS_MUL | OP_COMMUTES}, 99bf215546Sopenharmony_ci [midgard_alu_op_iwmul] = {"WMUL.s", UNIT_VMUL | OP_COMMUTES}, 100bf215546Sopenharmony_ci [midgard_alu_op_uwmul] = {"WMUL.u", UNIT_VMUL | OP_COMMUTES}, 101bf215546Sopenharmony_ci [midgard_alu_op_iuwmul] = {"WMUL.su", UNIT_VMUL | OP_COMMUTES}, 102bf215546Sopenharmony_ci [midgard_alu_op_imov] = {"MOV", UNITS_ALL | QUIRK_FLIPPED_R24}, 103bf215546Sopenharmony_ci 104bf215546Sopenharmony_ci /* For vector comparisons, use ball etc */ 105bf215546Sopenharmony_ci [midgard_alu_op_feq] = {"FCMP.eq", UNITS_MOST | OP_TYPE_CONVERT | OP_COMMUTES}, 106bf215546Sopenharmony_ci [midgard_alu_op_fne] = {"FCMP.ne", UNITS_MOST | OP_TYPE_CONVERT | OP_COMMUTES}, 107bf215546Sopenharmony_ci [midgard_alu_op_fle] = {"FCMP.le", UNITS_MOST | OP_TYPE_CONVERT}, 108bf215546Sopenharmony_ci [midgard_alu_op_flt] = {"FCMP.lt", UNITS_MOST | OP_TYPE_CONVERT}, 109bf215546Sopenharmony_ci [midgard_alu_op_ieq] = {"CMP.eq", UNITS_MOST | OP_COMMUTES}, 110bf215546Sopenharmony_ci [midgard_alu_op_ine] = {"CMP.ne", UNITS_MOST | OP_COMMUTES}, 111bf215546Sopenharmony_ci [midgard_alu_op_ilt] = {"CMP.lt", UNITS_MOST}, 112bf215546Sopenharmony_ci [midgard_alu_op_ile] = {"CMP.le", UNITS_MOST}, 113bf215546Sopenharmony_ci [midgard_alu_op_ult] = {"CMP.lt", UNITS_MOST}, 114bf215546Sopenharmony_ci [midgard_alu_op_ule] = {"CMP.le", UNITS_MOST}, 115bf215546Sopenharmony_ci 116bf215546Sopenharmony_ci /* csel must run in the second pipeline stage (condition written in first) */ 117bf215546Sopenharmony_ci [midgard_alu_op_icsel] = {"CSEL.scalar", UNIT_VADD | UNIT_SMUL}, 118bf215546Sopenharmony_ci [midgard_alu_op_icsel_v] = {"CSEL.vector", UNIT_VADD | UNIT_SMUL}, /* Acts as bitselect() */ 119bf215546Sopenharmony_ci [midgard_alu_op_fcsel_v] = {"FCSEL.vector", UNIT_VADD | UNIT_SMUL}, 120bf215546Sopenharmony_ci [midgard_alu_op_fcsel] = {"FCSEL.scalar", UNIT_VADD | UNIT_SMUL}, 121bf215546Sopenharmony_ci 122bf215546Sopenharmony_ci [midgard_alu_op_frcp] = {"FRCP", UNIT_VLUT}, 123bf215546Sopenharmony_ci [midgard_alu_op_frsqrt] = {"FRSQRT", UNIT_VLUT}, 124bf215546Sopenharmony_ci [midgard_alu_op_fsqrt] = {"FSQRT", UNIT_VLUT}, 125bf215546Sopenharmony_ci [midgard_alu_op_fpow_pt1] = {"FPOW_PT1", UNIT_VLUT}, 126bf215546Sopenharmony_ci [midgard_alu_op_fpown_pt1] = {"FPOWN_PT1", UNIT_VLUT}, 127bf215546Sopenharmony_ci [midgard_alu_op_fpowr_pt1] = {"FPOWR_PT1", UNIT_VLUT}, 128bf215546Sopenharmony_ci [midgard_alu_op_fexp2] = {"FEXP2", UNIT_VLUT}, 129bf215546Sopenharmony_ci [midgard_alu_op_flog2] = {"FLOG2", UNIT_VLUT}, 130bf215546Sopenharmony_ci 131bf215546Sopenharmony_ci [midgard_alu_op_f2i_rte] = {"F2I", UNITS_ADD | OP_TYPE_CONVERT | MIDGARD_ROUNDS}, 132bf215546Sopenharmony_ci [midgard_alu_op_f2i_rtz] = {"F2I.rtz", UNITS_ADD | OP_TYPE_CONVERT}, 133bf215546Sopenharmony_ci [midgard_alu_op_f2i_rtn] = {"F2I.rtn", UNITS_ADD | OP_TYPE_CONVERT}, 134bf215546Sopenharmony_ci [midgard_alu_op_f2i_rtp] = {"F2I.rtp", UNITS_ADD | OP_TYPE_CONVERT}, 135bf215546Sopenharmony_ci [midgard_alu_op_f2u_rte] = {"F2U", UNITS_ADD | OP_TYPE_CONVERT | MIDGARD_ROUNDS}, 136bf215546Sopenharmony_ci [midgard_alu_op_f2u_rtz] = {"F2U.rtz", UNITS_ADD | OP_TYPE_CONVERT}, 137bf215546Sopenharmony_ci [midgard_alu_op_f2u_rtn] = {"F2U.rtn", UNITS_ADD | OP_TYPE_CONVERT}, 138bf215546Sopenharmony_ci [midgard_alu_op_f2u_rtp] = {"F2U.rtp", UNITS_ADD | OP_TYPE_CONVERT}, 139bf215546Sopenharmony_ci [midgard_alu_op_i2f_rte] = {"I2F", UNITS_ADD | OP_TYPE_CONVERT}, 140bf215546Sopenharmony_ci [midgard_alu_op_i2f_rtz] = {"I2F.rtz", UNITS_ADD | OP_TYPE_CONVERT}, 141bf215546Sopenharmony_ci [midgard_alu_op_i2f_rtn] = {"I2F.rtn", UNITS_ADD | OP_TYPE_CONVERT}, 142bf215546Sopenharmony_ci [midgard_alu_op_i2f_rtp] = {"I2F.rtp", UNITS_ADD | OP_TYPE_CONVERT}, 143bf215546Sopenharmony_ci [midgard_alu_op_u2f_rte] = {"U2F", UNITS_ADD | OP_TYPE_CONVERT}, 144bf215546Sopenharmony_ci [midgard_alu_op_u2f_rtz] = {"U2F.rtz", UNITS_ADD | OP_TYPE_CONVERT}, 145bf215546Sopenharmony_ci [midgard_alu_op_u2f_rtn] = {"U2F.rtn", UNITS_ADD | OP_TYPE_CONVERT}, 146bf215546Sopenharmony_ci [midgard_alu_op_u2f_rtp] = {"U2F.rtp", UNITS_ADD | OP_TYPE_CONVERT}, 147bf215546Sopenharmony_ci 148bf215546Sopenharmony_ci [midgard_alu_op_fsinpi] = {"FSINPI", UNIT_VLUT}, 149bf215546Sopenharmony_ci [midgard_alu_op_fcospi] = {"FCOSPI", UNIT_VLUT}, 150bf215546Sopenharmony_ci 151bf215546Sopenharmony_ci [midgard_alu_op_iand] = {"AND", UNITS_MOST | OP_COMMUTES}, 152bf215546Sopenharmony_ci [midgard_alu_op_iandnot] = {"ANDNOT", UNITS_MOST}, 153bf215546Sopenharmony_ci 154bf215546Sopenharmony_ci [midgard_alu_op_ior] = {"OR", UNITS_MOST | OP_COMMUTES}, 155bf215546Sopenharmony_ci [midgard_alu_op_iornot] = {"ORNOT", UNITS_MOST | OP_COMMUTES}, 156bf215546Sopenharmony_ci [midgard_alu_op_inor] = {"NOR", UNITS_MOST | OP_COMMUTES}, 157bf215546Sopenharmony_ci [midgard_alu_op_ixor] = {"XOR", UNITS_MOST | OP_COMMUTES}, 158bf215546Sopenharmony_ci [midgard_alu_op_inxor] = {"NXOR", UNITS_MOST | OP_COMMUTES}, 159bf215546Sopenharmony_ci [midgard_alu_op_iclz] = {"CLZ", UNITS_ADD}, 160bf215546Sopenharmony_ci [midgard_alu_op_ipopcnt] = {"POPCNT", UNIT_VADD}, 161bf215546Sopenharmony_ci [midgard_alu_op_inand] = {"NAND", UNITS_MOST}, 162bf215546Sopenharmony_ci [midgard_alu_op_ishl] = {"SHL", UNITS_ADD}, 163bf215546Sopenharmony_ci [midgard_alu_op_ishlsat] = {"SHL.sat", UNITS_ADD}, 164bf215546Sopenharmony_ci [midgard_alu_op_ushlsat] = {"SHL.sat", UNITS_ADD}, 165bf215546Sopenharmony_ci [midgard_alu_op_iasr] = {"ASR", UNITS_ADD}, 166bf215546Sopenharmony_ci [midgard_alu_op_ilsr] = {"LSR", UNITS_ADD}, 167bf215546Sopenharmony_ci 168bf215546Sopenharmony_ci [midgard_alu_op_fball_eq] = {"FCMP.all.eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT}, 169bf215546Sopenharmony_ci [midgard_alu_op_fball_neq] = {"FCMP.all.ne", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT}, 170bf215546Sopenharmony_ci [midgard_alu_op_fball_lt] = {"FCMP.all.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT}, 171bf215546Sopenharmony_ci [midgard_alu_op_fball_lte] = {"FCMP.all.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT}, 172bf215546Sopenharmony_ci 173bf215546Sopenharmony_ci [midgard_alu_op_fbany_eq] = {"FCMP.any.eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT}, 174bf215546Sopenharmony_ci [midgard_alu_op_fbany_neq] = {"FCMP.any.ne", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT}, 175bf215546Sopenharmony_ci [midgard_alu_op_fbany_lt] = {"FCMP.any.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT}, 176bf215546Sopenharmony_ci [midgard_alu_op_fbany_lte] = {"FCMP.any.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT}, 177bf215546Sopenharmony_ci 178bf215546Sopenharmony_ci [midgard_alu_op_iball_eq] = {"CMP.all.eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 179bf215546Sopenharmony_ci [midgard_alu_op_iball_neq] = {"CMP.all.ne", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 180bf215546Sopenharmony_ci [midgard_alu_op_iball_lt] = {"CMP.all.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 181bf215546Sopenharmony_ci [midgard_alu_op_iball_lte] = {"CMP.all.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 182bf215546Sopenharmony_ci [midgard_alu_op_uball_lt] = {"CMP.all.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 183bf215546Sopenharmony_ci [midgard_alu_op_uball_lte] = {"CMP.all.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 184bf215546Sopenharmony_ci 185bf215546Sopenharmony_ci [midgard_alu_op_ibany_eq] = {"CMP.any.eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 186bf215546Sopenharmony_ci [midgard_alu_op_ibany_neq] = {"CMP.any.ne", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 187bf215546Sopenharmony_ci [midgard_alu_op_ibany_lt] = {"CMP.any.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 188bf215546Sopenharmony_ci [midgard_alu_op_ibany_lte] = {"CMP.any.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 189bf215546Sopenharmony_ci [midgard_alu_op_ubany_lt] = {"CMP.any.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 190bf215546Sopenharmony_ci [midgard_alu_op_ubany_lte] = {"CMP.any.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES}, 191bf215546Sopenharmony_ci 192bf215546Sopenharmony_ci [midgard_alu_op_fatan2_pt1] = {"FATAN2_PT1", UNIT_VLUT}, 193bf215546Sopenharmony_ci [midgard_alu_op_fatan2_pt2] = {"FATAN2_PT2", UNIT_VLUT}, 194bf215546Sopenharmony_ci 195bf215546Sopenharmony_ci /* Haven't seen in a while */ 196bf215546Sopenharmony_ci [midgard_alu_op_freduce] = {"FREDUCE", 0}, 197bf215546Sopenharmony_ci}; 198bf215546Sopenharmony_ci 199bf215546Sopenharmony_ci/* Define shorthands */ 200bf215546Sopenharmony_ci 201bf215546Sopenharmony_ci#define M8 midgard_reg_mode_8 202bf215546Sopenharmony_ci#define M16 midgard_reg_mode_16 203bf215546Sopenharmony_ci#define M32 midgard_reg_mode_32 204bf215546Sopenharmony_ci#define M64 midgard_reg_mode_64 205bf215546Sopenharmony_ci 206bf215546Sopenharmony_cistruct mir_ldst_op_props load_store_opcode_props[256] = { 207bf215546Sopenharmony_ci [midgard_op_unpack_colour_f32] = {"UNPACK.f32", M32}, 208bf215546Sopenharmony_ci [midgard_op_unpack_colour_f16] = {"UNPACK.f16", M32}, 209bf215546Sopenharmony_ci [midgard_op_unpack_colour_u32] = {"UNPACK.u32", M32}, 210bf215546Sopenharmony_ci [midgard_op_unpack_colour_s32] = {"UNPACK.s32", M32}, 211bf215546Sopenharmony_ci [midgard_op_pack_colour_f32] = {"PACK.f32", M32}, 212bf215546Sopenharmony_ci [midgard_op_pack_colour_f16] = {"PACK.f16", M32}, 213bf215546Sopenharmony_ci [midgard_op_pack_colour_u32] = {"PACK.u32", M32}, 214bf215546Sopenharmony_ci [midgard_op_pack_colour_s32] = {"PACK.s32", M32}, 215bf215546Sopenharmony_ci [midgard_op_lea] = {"LEA", M32 | LDST_ADDRESS }, 216bf215546Sopenharmony_ci [midgard_op_lea_image] = {"LEA_IMAGE", M32 | LDST_ATTRIB }, 217bf215546Sopenharmony_ci [midgard_op_ld_cubemap_coords] = {"CUBEMAP", M32}, 218bf215546Sopenharmony_ci [midgard_op_ldst_mov] = {"LDST_MOV", M32}, 219bf215546Sopenharmony_ci [midgard_op_ldst_perspective_div_y] = {"LDST_PERSPECTIVE_DIV_Y", M32}, 220bf215546Sopenharmony_ci [midgard_op_ldst_perspective_div_z] = {"LDST_PERSPECTIVE_DIV_Z", M32}, 221bf215546Sopenharmony_ci [midgard_op_ldst_perspective_div_w] = {"LDST_PERSPECTIVE_DIV_W", M32}, 222bf215546Sopenharmony_ci 223bf215546Sopenharmony_ci [midgard_op_atomic_add] = {"AADD.32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 224bf215546Sopenharmony_ci [midgard_op_atomic_and] = {"AAND.32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 225bf215546Sopenharmony_ci [midgard_op_atomic_or] = {"AOR.32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 226bf215546Sopenharmony_ci [midgard_op_atomic_xor] = {"AXOR.32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 227bf215546Sopenharmony_ci [midgard_op_atomic_imin] = {"AMIN.s32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 228bf215546Sopenharmony_ci [midgard_op_atomic_umin] = {"AMIN.u32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 229bf215546Sopenharmony_ci [midgard_op_atomic_imax] = {"AMAX.s32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 230bf215546Sopenharmony_ci [midgard_op_atomic_umax] = {"AMAX.u32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 231bf215546Sopenharmony_ci [midgard_op_atomic_xchg] = {"XCHG.32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 232bf215546Sopenharmony_ci [midgard_op_atomic_cmpxchg] = {"CMPXCHG.32", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 233bf215546Sopenharmony_ci 234bf215546Sopenharmony_ci [midgard_op_atomic_add64] = {"AADD.64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 235bf215546Sopenharmony_ci [midgard_op_atomic_and64] = {"AAND.64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 236bf215546Sopenharmony_ci [midgard_op_atomic_or64] = {"AOR.64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 237bf215546Sopenharmony_ci [midgard_op_atomic_xor64] = {"AXOR.64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 238bf215546Sopenharmony_ci [midgard_op_atomic_imin64] = {"AMIN.s64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 239bf215546Sopenharmony_ci [midgard_op_atomic_umin64] = {"AMIN.u64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 240bf215546Sopenharmony_ci [midgard_op_atomic_imax64] = {"AMAX.s64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 241bf215546Sopenharmony_ci [midgard_op_atomic_umax64] = {"AMAX.u64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 242bf215546Sopenharmony_ci [midgard_op_atomic_xchg64] = {"XCHG.64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 243bf215546Sopenharmony_ci [midgard_op_atomic_cmpxchg64] = {"CMPXCHG.64", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 244bf215546Sopenharmony_ci 245bf215546Sopenharmony_ci [midgard_op_atomic_add_be] = {"AADD.32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 246bf215546Sopenharmony_ci [midgard_op_atomic_and_be] = {"AAND.32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 247bf215546Sopenharmony_ci [midgard_op_atomic_or_be] = {"AOR.32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 248bf215546Sopenharmony_ci [midgard_op_atomic_xor_be] = {"AXOR.32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 249bf215546Sopenharmony_ci [midgard_op_atomic_imin_be] = {"AMIN.s32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 250bf215546Sopenharmony_ci [midgard_op_atomic_umin_be] = {"AMIN.u32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 251bf215546Sopenharmony_ci [midgard_op_atomic_imax_be] = {"AMAX.s32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 252bf215546Sopenharmony_ci [midgard_op_atomic_umax_be] = {"AMAX.u32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 253bf215546Sopenharmony_ci [midgard_op_atomic_xchg_be] = {"XCHG.32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 254bf215546Sopenharmony_ci [midgard_op_atomic_cmpxchg_be] = {"CMPXCHG.32.be", M32 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 255bf215546Sopenharmony_ci 256bf215546Sopenharmony_ci [midgard_op_atomic_add64] = {"AADD.64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 257bf215546Sopenharmony_ci [midgard_op_atomic_and64] = {"AAND.64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 258bf215546Sopenharmony_ci [midgard_op_atomic_or64] = {"AOR.64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 259bf215546Sopenharmony_ci [midgard_op_atomic_xor64] = {"AXOR.64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 260bf215546Sopenharmony_ci [midgard_op_atomic_imin64] = {"AMIN.s64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 261bf215546Sopenharmony_ci [midgard_op_atomic_umin64] = {"AMIN.u64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 262bf215546Sopenharmony_ci [midgard_op_atomic_imax64] = {"AMAX.s64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 263bf215546Sopenharmony_ci [midgard_op_atomic_umax64] = {"AMAX.u64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 264bf215546Sopenharmony_ci [midgard_op_atomic_xchg64] = {"XCHG.64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 265bf215546Sopenharmony_ci [midgard_op_atomic_cmpxchg64] = {"CMPXCHG.64.be", M64 | LDST_SIDE_FX | LDST_ADDRESS | LDST_ATOMIC}, 266bf215546Sopenharmony_ci 267bf215546Sopenharmony_ci [midgard_op_ld_u8] = {"LD.u8", M32 | LDST_ADDRESS}, 268bf215546Sopenharmony_ci [midgard_op_ld_i8] = {"LD.s8", M32 | LDST_ADDRESS}, 269bf215546Sopenharmony_ci [midgard_op_ld_u16] = {"LD.u16", M32 | LDST_ADDRESS}, 270bf215546Sopenharmony_ci [midgard_op_ld_i16] = {"LD.s16", M32 | LDST_ADDRESS}, 271bf215546Sopenharmony_ci [midgard_op_ld_u16_be] = {"LD.u16.be", M32 | LDST_ADDRESS}, 272bf215546Sopenharmony_ci [midgard_op_ld_i16_be] = {"LD.s16.be", M32 | LDST_ADDRESS}, 273bf215546Sopenharmony_ci [midgard_op_ld_32] = {"LD.32", M32 | LDST_ADDRESS}, 274bf215546Sopenharmony_ci [midgard_op_ld_32_bswap2] = {"LD.32.bswap2", M32 | LDST_ADDRESS}, 275bf215546Sopenharmony_ci [midgard_op_ld_32_bswap4] = {"LD.32.bswap4", M32 | LDST_ADDRESS}, 276bf215546Sopenharmony_ci [midgard_op_ld_64] = {"LD.64", M32 | LDST_ADDRESS}, 277bf215546Sopenharmony_ci [midgard_op_ld_64_bswap2] = {"LD.64.bswap2", M32 | LDST_ADDRESS}, 278bf215546Sopenharmony_ci [midgard_op_ld_64_bswap4] = {"LD.64.bswap4", M32 | LDST_ADDRESS}, 279bf215546Sopenharmony_ci [midgard_op_ld_64_bswap8] = {"LD.64.bswap8", M32 | LDST_ADDRESS}, 280bf215546Sopenharmony_ci [midgard_op_ld_128] = {"LD.128", M32 | LDST_ADDRESS}, 281bf215546Sopenharmony_ci [midgard_op_ld_128_bswap2] = {"LD.128.bswap2", M32 | LDST_ADDRESS}, 282bf215546Sopenharmony_ci [midgard_op_ld_128_bswap4] = {"LD.128.bswap4", M32 | LDST_ADDRESS}, 283bf215546Sopenharmony_ci [midgard_op_ld_128_bswap8] = {"LD.128.bswap8", M32 | LDST_ADDRESS}, 284bf215546Sopenharmony_ci 285bf215546Sopenharmony_ci [midgard_op_ld_attr_32] = {"LD_ATTR.f32", M32 | LDST_ATTRIB}, 286bf215546Sopenharmony_ci [midgard_op_ld_attr_32i] = {"LD_ATTR.s32", M32 | LDST_ATTRIB}, 287bf215546Sopenharmony_ci [midgard_op_ld_attr_32u] = {"LD_ATTR.u32", M32 | LDST_ATTRIB}, 288bf215546Sopenharmony_ci [midgard_op_ld_attr_16] = {"LD_ATTR.f16", M32 | LDST_ATTRIB}, 289bf215546Sopenharmony_ci 290bf215546Sopenharmony_ci [midgard_op_ld_vary_32] = {"LD_VARY.f32", M32 | LDST_ATTRIB}, 291bf215546Sopenharmony_ci [midgard_op_ld_vary_16] = {"LD_VARY.f16", M32 | LDST_ATTRIB}, 292bf215546Sopenharmony_ci [midgard_op_ld_vary_32i] = {"LD_VARY.s32", M32 | LDST_ATTRIB}, 293bf215546Sopenharmony_ci [midgard_op_ld_vary_32u] = {"LD_VARY.u32", M32 | LDST_ATTRIB}, 294bf215546Sopenharmony_ci 295bf215546Sopenharmony_ci [midgard_op_ld_special_32f] = {"LD_SPECIAL.f32", M32 | LDST_SPECIAL_MASK}, 296bf215546Sopenharmony_ci [midgard_op_ld_special_16f] = {"LD_SPECIAL.f16", M16 | LDST_SPECIAL_MASK}, 297bf215546Sopenharmony_ci [midgard_op_ld_special_32u] = {"LD_SPECIAL.u32", M32}, 298bf215546Sopenharmony_ci [midgard_op_ld_special_32i] = {"LD_SPECIAL.s32", M32}, 299bf215546Sopenharmony_ci 300bf215546Sopenharmony_ci [midgard_op_ld_tilebuffer_32f] = {"LD_TILEBUFFER.f32", M32}, 301bf215546Sopenharmony_ci [midgard_op_ld_tilebuffer_16f] = {"LD_TILEBUFFER.f16", M16}, 302bf215546Sopenharmony_ci [midgard_op_ld_tilebuffer_raw] = {"LD_TILEBUFFER.raw", M32}, 303bf215546Sopenharmony_ci 304bf215546Sopenharmony_ci [midgard_op_ld_ubo_u8] = {"LD_UBO.u8", M32}, 305bf215546Sopenharmony_ci [midgard_op_ld_ubo_i8] = {"LD_UBO.s8", M32}, 306bf215546Sopenharmony_ci [midgard_op_ld_ubo_u16] = {"LD_UBO.u16", M16}, 307bf215546Sopenharmony_ci [midgard_op_ld_ubo_i16] = {"LD_UBO.s16", M16}, 308bf215546Sopenharmony_ci [midgard_op_ld_ubo_u16_be] = {"LD_UBO.u16.be", M16}, 309bf215546Sopenharmony_ci [midgard_op_ld_ubo_i16_be] = {"LD_UBO.s16.be", M16}, 310bf215546Sopenharmony_ci [midgard_op_ld_ubo_32] = {"LD_UBO.32", M32}, 311bf215546Sopenharmony_ci [midgard_op_ld_ubo_32_bswap2] = {"LD_UBO.32.bswap2", M32}, 312bf215546Sopenharmony_ci [midgard_op_ld_ubo_32_bswap4] = {"LD_UBO.32.bswap4", M32}, 313bf215546Sopenharmony_ci [midgard_op_ld_ubo_64] = {"LD_UBO.64", M32}, 314bf215546Sopenharmony_ci [midgard_op_ld_ubo_64_bswap2] = {"LD_UBO.64.bswap2", M32}, 315bf215546Sopenharmony_ci [midgard_op_ld_ubo_64_bswap4] = {"LD_UBO.64.bswap4", M32}, 316bf215546Sopenharmony_ci [midgard_op_ld_ubo_64_bswap8] = {"LD_UBO.64.bswap8", M32}, 317bf215546Sopenharmony_ci [midgard_op_ld_ubo_128] = {"LD_UBO.128", M32}, 318bf215546Sopenharmony_ci [midgard_op_ld_ubo_128_bswap2] = {"LD_UBO.128.bswap2", M32}, 319bf215546Sopenharmony_ci [midgard_op_ld_ubo_128_bswap4] = {"LD_UBO.128.bswap4", M32}, 320bf215546Sopenharmony_ci [midgard_op_ld_ubo_128_bswap8] = {"LD_UBO.128.bswap8", M32}, 321bf215546Sopenharmony_ci 322bf215546Sopenharmony_ci [midgard_op_ld_image_32f] = {"LD_IMAGE.f32", M32 | LDST_ATTRIB}, 323bf215546Sopenharmony_ci [midgard_op_ld_image_16f] = {"LD_IMAGE.f16", M16 | LDST_ATTRIB}, 324bf215546Sopenharmony_ci [midgard_op_ld_image_32i] = {"LD_IMAGE.s32", M32 | LDST_ATTRIB}, 325bf215546Sopenharmony_ci [midgard_op_ld_image_32u] = {"LD_IMAGE.u32", M32 | LDST_ATTRIB}, 326bf215546Sopenharmony_ci 327bf215546Sopenharmony_ci [midgard_op_st_u8] = {"ST.u8", M32 | LDST_STORE | LDST_ADDRESS}, 328bf215546Sopenharmony_ci [midgard_op_st_i8] = {"ST.s8", M32 | LDST_STORE | LDST_ADDRESS}, 329bf215546Sopenharmony_ci [midgard_op_st_u16] = {"ST.u16", M32 | LDST_STORE | LDST_ADDRESS}, 330bf215546Sopenharmony_ci [midgard_op_st_i16] = {"ST.s16", M32 | LDST_STORE | LDST_ADDRESS}, 331bf215546Sopenharmony_ci [midgard_op_st_u16_be] = {"ST.u16.be", M32 | LDST_STORE | LDST_ADDRESS}, 332bf215546Sopenharmony_ci [midgard_op_st_i16_be] = {"ST.s16.be", M32 | LDST_STORE | LDST_ADDRESS}, 333bf215546Sopenharmony_ci [midgard_op_st_32] = {"ST.32", M32 | LDST_STORE | LDST_ADDRESS}, 334bf215546Sopenharmony_ci [midgard_op_st_32_bswap2] = {"ST.32.bswap2", M32 | LDST_STORE | LDST_ADDRESS}, 335bf215546Sopenharmony_ci [midgard_op_st_32_bswap4] = {"ST.32.bswap4", M32 | LDST_STORE | LDST_ADDRESS}, 336bf215546Sopenharmony_ci [midgard_op_st_64] = {"ST.64", M32 | LDST_STORE | LDST_ADDRESS}, 337bf215546Sopenharmony_ci [midgard_op_st_64_bswap2] = {"ST.64.bswap2", M32 | LDST_STORE | LDST_ADDRESS}, 338bf215546Sopenharmony_ci [midgard_op_st_64_bswap4] = {"ST.64.bswap4", M32 | LDST_STORE | LDST_ADDRESS}, 339bf215546Sopenharmony_ci [midgard_op_st_64_bswap8] = {"ST.64.bswap8", M32 | LDST_STORE | LDST_ADDRESS}, 340bf215546Sopenharmony_ci [midgard_op_st_128] = {"ST.128", M32 | LDST_STORE | LDST_ADDRESS}, 341bf215546Sopenharmony_ci [midgard_op_st_128_bswap2] = {"ST.128.bswap2", M32 | LDST_STORE | LDST_ADDRESS}, 342bf215546Sopenharmony_ci [midgard_op_st_128_bswap4] = {"ST.128.bswap4", M32 | LDST_STORE | LDST_ADDRESS}, 343bf215546Sopenharmony_ci [midgard_op_st_128_bswap8] = {"ST.128.bswap8", M32 | LDST_STORE | LDST_ADDRESS}, 344bf215546Sopenharmony_ci 345bf215546Sopenharmony_ci [midgard_op_st_vary_32] = {"ST_VARY.f32", M32 | LDST_STORE | LDST_ATTRIB}, 346bf215546Sopenharmony_ci [midgard_op_st_vary_32i] = {"ST_VARY.s32", M32 | LDST_STORE | LDST_ATTRIB}, 347bf215546Sopenharmony_ci [midgard_op_st_vary_32u] = {"ST_VARY.u32", M32 | LDST_STORE | LDST_ATTRIB}, 348bf215546Sopenharmony_ci [midgard_op_st_vary_16] = {"ST_VARY.f16", M16 | LDST_STORE | LDST_ATTRIB}, 349bf215546Sopenharmony_ci 350bf215546Sopenharmony_ci [midgard_op_st_image_32f] = {"ST_IMAGE.f32", M32 | LDST_STORE | LDST_ATTRIB}, 351bf215546Sopenharmony_ci [midgard_op_st_image_16f] = {"ST_IMAGE.f16", M16 | LDST_STORE | LDST_ATTRIB}, 352bf215546Sopenharmony_ci [midgard_op_st_image_32i] = {"ST_IMAGE.u32", M32 | LDST_STORE | LDST_ATTRIB}, 353bf215546Sopenharmony_ci [midgard_op_st_image_32u] = {"ST_IMAGE.s32", M32 | LDST_STORE | LDST_ATTRIB}, 354bf215546Sopenharmony_ci 355bf215546Sopenharmony_ci [midgard_op_st_special_32f] = {"ST_SPECIAL.f32", M32}, 356bf215546Sopenharmony_ci [midgard_op_st_special_16f] = {"ST_SPECIAL.f16", M16}, 357bf215546Sopenharmony_ci [midgard_op_st_special_32u] = {"ST_SPECIAL.u32", M32}, 358bf215546Sopenharmony_ci [midgard_op_st_special_32i] = {"ST_SPECIAL.s32", M32}, 359bf215546Sopenharmony_ci 360bf215546Sopenharmony_ci [midgard_op_st_tilebuffer_32f] = {"ST_TILEBUFFER.f32", M32}, 361bf215546Sopenharmony_ci [midgard_op_st_tilebuffer_16f] = {"ST_TILEBUFFER.f16", M16}, 362bf215546Sopenharmony_ci [midgard_op_st_tilebuffer_raw] = {"ST_TILEBUFFER.raw", M32}, 363bf215546Sopenharmony_ci}; 364bf215546Sopenharmony_ci 365bf215546Sopenharmony_cistruct mir_tex_op_props tex_opcode_props[16] = { 366bf215546Sopenharmony_ci [midgard_tex_op_normal] = {"TEX", M32}, 367bf215546Sopenharmony_ci [midgard_tex_op_gradient] = {"TEX_GRAD", M32}, 368bf215546Sopenharmony_ci [midgard_tex_op_fetch] = {"TEX_FETCH", M32}, 369bf215546Sopenharmony_ci [midgard_tex_op_grad_from_derivative] = {"DER_TO_GRAD", M32}, 370bf215546Sopenharmony_ci [midgard_tex_op_grad_from_coords] = {"COORDS_TO_GRAD", M32}, 371bf215546Sopenharmony_ci [midgard_tex_op_mov] = {"MOV", M32}, 372bf215546Sopenharmony_ci [midgard_tex_op_barrier] = {"BARRIER", M32}, 373bf215546Sopenharmony_ci [midgard_tex_op_derivative] = {"DERIVATIVE", M32} 374bf215546Sopenharmony_ci}; 375bf215546Sopenharmony_ci 376bf215546Sopenharmony_ci#undef M8 377bf215546Sopenharmony_ci#undef M16 378bf215546Sopenharmony_ci#undef M32 379bf215546Sopenharmony_ci#undef M64 380bf215546Sopenharmony_ci 381bf215546Sopenharmony_cistruct mir_tag_props midgard_tag_props[16] = { 382bf215546Sopenharmony_ci [TAG_INVALID] = {"invalid", 0}, 383bf215546Sopenharmony_ci [TAG_BREAK] = {"break", 0}, 384bf215546Sopenharmony_ci [TAG_TEXTURE_4_VTX] = {"tex/vt", 1}, 385bf215546Sopenharmony_ci [TAG_TEXTURE_4] = {"tex", 1}, 386bf215546Sopenharmony_ci [TAG_TEXTURE_4_BARRIER] = {"tex/bar", 1}, 387bf215546Sopenharmony_ci [TAG_LOAD_STORE_4] = {"ldst", 1}, 388bf215546Sopenharmony_ci [TAG_UNKNOWN_1] = {"unk1", 1}, 389bf215546Sopenharmony_ci [TAG_UNKNOWN_2] = {"unk2", 1}, 390bf215546Sopenharmony_ci [TAG_ALU_4] = {"alu/4", 1}, 391bf215546Sopenharmony_ci [TAG_ALU_8] = {"alu/8", 2}, 392bf215546Sopenharmony_ci [TAG_ALU_12] = {"alu/12", 3}, 393bf215546Sopenharmony_ci [TAG_ALU_16] = {"alu/16", 4}, 394bf215546Sopenharmony_ci [TAG_ALU_4_WRITEOUT] = {"aluw/4", 1}, 395bf215546Sopenharmony_ci [TAG_ALU_8_WRITEOUT] = {"aluw/8", 2}, 396bf215546Sopenharmony_ci [TAG_ALU_12_WRITEOUT] = {"aluw/12", 3}, 397bf215546Sopenharmony_ci [TAG_ALU_16_WRITEOUT] = {"aluw/16", 4} 398bf215546Sopenharmony_ci}; 399