r600_asm.h revision f75f21a24ae2dd83507f3d4d8007f0fcfe6db802
1de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse/* 2de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * Copyright 2010 Jerome Glisse <glisse@freedesktop.org> 3de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * 4de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * Permission is hereby granted, free of charge, to any person obtaining a 5de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * copy of this software and associated documentation files (the "Software"), 6de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * to deal in the Software without restriction, including without limitation 7de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * on the rights to use, copy, modify, merge, publish, distribute, sub 8de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * license, and/or sell copies of the Software, and to permit persons to whom 9de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * the Software is furnished to do so, subject to the following conditions: 10de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * 11de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * The above copyright notice and this permission notice (including the next 12de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * paragraph) shall be included in all copies or substantial portions of the 13de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * Software. 14de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * 15de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 18de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 19de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 20de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 21de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse * USE OR OTHER DEALINGS IN THE SOFTWARE. 22de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse */ 23de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse#ifndef R600_ASM_H 24de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse#define R600_ASM_H 25de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 26555c8d500a4a09445a892316610a428d408318edMarek Olšák#include "r600_pipe.h" 27022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin#include "r600_isa.h" 28fa86fc564aea4e40c89f6fc889e6a5bf817634b3Jerome Glisse 294a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_alu_src { 30de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned sel; 31de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned chan; 32de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned neg; 33de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned abs; 3447d5a19df1e7760c4f5f0e340bfc56355c2e428bDave Airlie unsigned rel; 35d649bf51ec787021f7872e2a4c09fb2188c0891bVadim Girlin unsigned kc_bank; 367b1c0cbc90d456384b0950ad21faa3c61a6b43ffGlenn Kennard unsigned kc_rel; 37a77e813de32643ae2dfffd7ad12abed596172cabHenri Verbeet uint32_t value; 38de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 39de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 404a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_alu_dst { 41de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned sel; 42de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned chan; 43de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned clamp; 44de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned write; 4547d5a19df1e7760c4f5f0e340bfc56355c2e428bDave Airlie unsigned rel; 46de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 47de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 484a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_alu { 49de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head list; 504a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu_src src[3]; 514a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu_dst dst; 52022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin unsigned op; 53de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned last; 54de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned is_op3; 55da676eab93e7dad30b574b4eb4cffd4df952e819Vincent Lejeune unsigned execute_mask; 56da676eab93e7dad30b574b4eb4cffd4df952e819Vincent Lejeune unsigned update_pred; 57da676eab93e7dad30b574b4eb4cffd4df952e819Vincent Lejeune unsigned pred_sel; 58e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse unsigned bank_swizzle; 59e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse unsigned bank_swizzle_force; 60c60cb25bfb15fc83e78d9f2c74646dcc5ad07792Christian König unsigned omod; 61c96b9834032952492efbd2d1f5511fe225704918Dave Airlie unsigned index_mode; 62de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 63de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 644a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_tex { 6533241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse struct list_head list; 66022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin unsigned op; 6796ed6c90eff58ce030c39c2b4db6daf512586b34Marek Olšák unsigned inst_mod; 6833241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned resource_id; 6933241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned src_gpr; 7033241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned src_rel; 7133241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned dst_gpr; 7233241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned dst_rel; 7333241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned dst_sel_x; 7433241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned dst_sel_y; 7533241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned dst_sel_z; 7633241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned dst_sel_w; 7733241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned lod_bias; 7833241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned coord_type_x; 7933241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned coord_type_y; 8033241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned coord_type_z; 8133241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned coord_type_w; 82fa5078c255b5b57514ae854ecd6264379641c924Dave Airlie int offset_x; 83fa5078c255b5b57514ae854ecd6264379641c924Dave Airlie int offset_y; 84fa5078c255b5b57514ae854ecd6264379641c924Dave Airlie int offset_z; 8533241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned sampler_id; 8633241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned src_sel_x; 8733241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned src_sel_y; 8833241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned src_sel_z; 8933241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned src_sel_w; 907b1c0cbc90d456384b0950ad21faa3c61a6b43ffGlenn Kennard /* indexed samplers/resources only on evergreen/cayman */ 917b1c0cbc90d456384b0950ad21faa3c61a6b43ffGlenn Kennard unsigned sampler_index_mode; 927b1c0cbc90d456384b0950ad21faa3c61a6b43ffGlenn Kennard unsigned resource_index_mode; 9333241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse}; 9433241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse 954a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_vtx { 96de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head list; 97022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin unsigned op; 98de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned fetch_type; 99de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned buffer_id; 100de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned src_gpr; 101de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned src_sel_x; 102de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned mega_fetch_count; 103de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_gpr; 104de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_sel_x; 105de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_sel_y; 106de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_sel_z; 107de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_sel_w; 108e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned use_const_fields; 109e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned data_format; 110e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned num_format_all; 111e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned format_comp_all; 112e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned srf_mode_all; 11396bbc627f369c0100b950f81531b1fe9ef586c34Christian König unsigned offset; 114843dfe3206c4f397c7911b748373dde5540392a4Cédric Cano unsigned endian; 1157b1c0cbc90d456384b0950ad21faa3c61a6b43ffGlenn Kennard unsigned buffer_index_mode; 116de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 117de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 1184a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_output { 119de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned array_base; 120543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák unsigned array_size; 121543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák unsigned comp_mask; 122de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned type; 1234f7c21899ad449be2bc1157ce1d2d99296a34499Marek Olšák 124022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin unsigned op; 1254f7c21899ad449be2bc1157ce1d2d99296a34499Marek Olšák 126de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned elem_size; 127de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned gpr; 128de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned swizzle_x; 129de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned swizzle_y; 130de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned swizzle_z; 131de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned swizzle_w; 1328ca3b140eb53fd8063337a5a2a54a35987d597bcChristian König unsigned burst_count; 133ae29a098eaaa9f061cc82a28b8e258e44f03902bDave Airlie unsigned index_gpr; 134de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 135de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 1364a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_kcache { 1378273921b7a41251f3f5a87df995913cb291902caHenri Verbeet unsigned bank; 1388273921b7a41251f3f5a87df995913cb291902caHenri Verbeet unsigned mode; 1398273921b7a41251f3f5a87df995913cb291902caHenri Verbeet unsigned addr; 1407b1c0cbc90d456384b0950ad21faa3c61a6b43ffGlenn Kennard unsigned index_mode; 1418273921b7a41251f3f5a87df995913cb291902caHenri Verbeet}; 1428273921b7a41251f3f5a87df995913cb291902caHenri Verbeet 1434a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_cf { 144de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head list; 1454f7c21899ad449be2bc1157ce1d2d99296a34499Marek Olšák 146022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin unsigned op; 147de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned addr; 148de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned ndw; 149de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned id; 150e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse unsigned cond; 151e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse unsigned pop_count; 152d503bbbf3082b5b301019721466d6fd2b41da03aDave Airlie unsigned count; 153e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse unsigned cf_addr; /* control flow addr */ 154d649bf51ec787021f7872e2a4c09fb2188c0891bVadim Girlin struct r600_bytecode_kcache kcache[4]; 155c5edfcc410bdf3dbe4f37418de8f0009746c9578Dave Airlie unsigned r6xx_uses_waterfall; 156d649bf51ec787021f7872e2a4c09fb2188c0891bVadim Girlin unsigned eg_alu_extended; 157552aae7e47e93ada58649a92ae9e7da37afb05c3Vadim Girlin unsigned barrier; 158552aae7e47e93ada58649a92ae9e7da37afb05c3Vadim Girlin unsigned end_of_program; 159de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head alu; 16033241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse struct list_head tex; 161de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head vtx; 1624a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_output output; 1634a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu *curr_bs_head; 1644a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu *prev_bs_head; 1654a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu *prev2_bs_head; 16694a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard unsigned isa[2]; 167de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 168de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 1697ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_NONE 0 1707ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_IF 1 1717ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_LOOP 2 1727ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_REP 3 1737ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_PUSH_VPM 4 1747ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_PUSH_WQM 5 175a03d456f5a41926e39194de70b2d50776e64b8a2Dave Airlie 176a03d456f5a41926e39194de70b2d50776e64b8a2Dave Airliestruct r600_cf_stack_entry { 177e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse int type; 1784a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_cf *start; 1794a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_cf **mid; /* used to store the else point */ 180e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse int num_mid; 18109547e1bcee7df3444dd8682770d1b31da1a5822Dave Airlie}; 18209547e1bcee7df3444dd8682770d1b31da1a5822Dave Airlie 18309547e1bcee7df3444dd8682770d1b31da1a5822Dave Airlie#define SQ_MAX_CALL_DEPTH 0x00000020 1847ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse 185c96b9834032952492efbd2d1f5511fe225704918Dave Airlie#define AR_HANDLE_NORMAL 0 186c96b9834032952492efbd2d1f5511fe225704918Dave Airlie#define AR_HANDLE_RV6XX 1 /* except RV670 */ 187c96b9834032952492efbd2d1f5511fe225704918Dave Airlie 1889be624b3ef32ae6311010cf05531e12051b647dcVadim Girlinstruct r600_stack_info { 1899be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin /* current level of non-WQM PUSH operations 1909be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin * (PUSH, PUSH_ELSE, ALU_PUSH_BEFORE) */ 1919be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin int push; 1929be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin /* current level of WQM PUSH operations 1939be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin * (PUSH, PUSH_ELSE, PUSH_WQM) */ 1949be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin int push_wqm; 1959be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin /* current loop level */ 1969be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin int loop; 1979be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin 1989be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin /* required depth */ 1999be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin int max_entries; 2009be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin /* subentries per entry */ 2019be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin int entry_size; 2029be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin}; 203c96b9834032952492efbd2d1f5511fe225704918Dave Airlie 2044a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode { 20589dc31a28d8e5607989ec11cfd29310c1c97f6acHenri Verbeet enum chip_class chip_class; 206476aaf8b8ee77d84c295e1429035e92ecf3a7349Christoph Bumiller enum radeon_family family; 2075a3fac4d2667b5d46058564151142fec158f5f82Marek Olšák bool has_compressed_msaa_texturing; 208f609b2ab0342d77a8beca9efb5fbc5b66ff98295Jerome Glisse int type; 209de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head cf; 2104a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_cf *cf_last; 211de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned ndw; 212de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned ncf; 213de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned ngpr; 214e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse unsigned nstack; 2152840bec56f79347b95dec5458b20d4a46d1aa445Tom Stellard unsigned nlds_dw; 216de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned nresource; 2177e42b7e5d2aebcda0e6bf081b6661411731e6df2Jerome Glisse unsigned force_add_cf; 21878293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t *bytecode; 21978293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t fc_sp; 220e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse struct r600_cf_stack_entry fc_stack[32]; 2219be624b3ef32ae6311010cf05531e12051b647dcVadim Girlin struct r600_stack_info stack; 2228e366dc365d01213b71b87ace47d30938db74845Vadim Girlin unsigned ar_loaded; 2238e366dc365d01213b71b87ace47d30938db74845Vadim Girlin unsigned ar_reg; 22433dc412b8901ec6b693644a40b1cd62a2cde2e99Tom Stellard unsigned ar_chan; 225c96b9834032952492efbd2d1f5511fe225704918Dave Airlie unsigned ar_handling; 226c96b9834032952492efbd2d1f5511fe225704918Dave Airlie unsigned r6xx_nop_after_rel_dst; 2277b1c0cbc90d456384b0950ad21faa3c61a6b43ffGlenn Kennard bool index_loaded[2]; 2287b1c0cbc90d456384b0950ad21faa3c61a6b43ffGlenn Kennard unsigned index_reg[2]; /* indexing register CF_INDEX_[01] */ 229ad1df471d083630106da8c39ec076f49e779e965Vadim Girlin unsigned debug_id; 230022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin struct r600_isa* isa; 231de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 232de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 2336abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse/* eg_asm.c */ 2344a47662beaa2092447939db7880531fb706afeddMarek Olšákint eg_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode_cf *cf); 2357b1c0cbc90d456384b0950ad21faa3c61a6b43ffGlenn Kennardint egcm_load_index_reg(struct r600_bytecode *bc, unsigned id, bool inside_alu_clause); 2366abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse 2376abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse/* r600_asm.c */ 23896ed6c90eff58ce030c39c2b4db6daf512586b34Marek Olšákvoid r600_bytecode_init(struct r600_bytecode *bc, 23996ed6c90eff58ce030c39c2b4db6daf512586b34Marek Olšák enum chip_class chip_class, 24096ed6c90eff58ce030c39c2b4db6daf512586b34Marek Olšák enum radeon_family family, 2415a3fac4d2667b5d46058564151142fec158f5f82Marek Olšák bool has_compressed_msaa_texturing); 2424a47662beaa2092447939db7880531fb706afeddMarek Olšákvoid r600_bytecode_clear(struct r600_bytecode *bc); 243022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinint r600_bytecode_add_alu(struct r600_bytecode *bc, 244022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin const struct r600_bytecode_alu *alu); 245022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinint r600_bytecode_add_vtx(struct r600_bytecode *bc, 246022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin const struct r600_bytecode_vtx *vtx); 247022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinint r600_bytecode_add_tex(struct r600_bytecode *bc, 248022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin const struct r600_bytecode_tex *tex); 249022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinint r600_bytecode_add_output(struct r600_bytecode *bc, 250022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin const struct r600_bytecode_output *output); 2514a47662beaa2092447939db7880531fb706afeddMarek Olšákint r600_bytecode_build(struct r600_bytecode *bc); 252af38695f5105a2f766f3df393c3e42067c3706f2Vincent Lejeuneint r600_bytecode_add_cf(struct r600_bytecode *bc); 253022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinint r600_bytecode_add_cfinst(struct r600_bytecode *bc, 254022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin unsigned op); 255022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinint r600_bytecode_add_alu_type(struct r600_bytecode *bc, 256022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin const struct r600_bytecode_alu *alu, unsigned type); 257022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinvoid r600_bytecode_special_constants(uint32_t value, 258f75f21a24ae2dd83507f3d4d8007f0fcfe6db802Ivan Kalvachev unsigned *sel, unsigned *neg, unsigned abs); 259e42111ecbaca8b6dab3c8a7a8cbc295bb6b404ebVadim Girlinvoid r600_bytecode_disasm(struct r600_bytecode *bc); 260022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinvoid r600_bytecode_alu_read(struct r600_bytecode *bc, 261022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin struct r600_bytecode_alu *alu, uint32_t word0, uint32_t word1); 2624a47662beaa2092447939db7880531fb706afeddMarek Olšák 2634a47662beaa2092447939db7880531fb706afeddMarek Olšákint cm_bytecode_add_cf_end(struct r600_bytecode *bc); 2647779f6d1dffde2c0501e44adc342e52803de08d4Dave Airlie 265a50edc8ed84c4c48c0dc8e1a079e8d5e8f1c3a0eMarek Olšákvoid *r600_create_vertex_fetch_shader(struct pipe_context *ctx, 266a50edc8ed84c4c48c0dc8e1a079e8d5e8f1c3a0eMarek Olšák unsigned count, 267a50edc8ed84c4c48c0dc8e1a079e8d5e8f1c3a0eMarek Olšák const struct pipe_vertex_element *elements); 268e0b6df4fcce0964ea7930efeb40cb487b4c53337Jerome Glisse 2696abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse/* r700_asm.c */ 270022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinvoid r700_bytecode_cf_vtx_build(uint32_t *bytecode, 271022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin const struct r600_bytecode_cf *cf); 272022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinint r700_bytecode_alu_build(struct r600_bytecode *bc, 273022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin struct r600_bytecode_alu *alu, unsigned id); 274022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinvoid r700_bytecode_alu_read(struct r600_bytecode *bc, 275022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin struct r600_bytecode_alu *alu, uint32_t word0, uint32_t word1); 276022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinvoid r600_bytecode_export_read(struct r600_bytecode *bc, 277022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin struct r600_bytecode_output *output, uint32_t word0, uint32_t word1); 278022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlinvoid eg_bytecode_export_read(struct r600_bytecode *bc, 279022122ee63b8a00afc23eaa347df934a79fb1d4cVadim Girlin struct r600_bytecode_output *output, uint32_t word0, uint32_t word1); 2806abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse 281d23aa650015ec017649f5a4ce8cb12d8c314bd3aDave Airlievoid r600_vertex_data_type(enum pipe_format pformat, unsigned *format, 282d23aa650015ec017649f5a4ce8cb12d8c314bd3aDave Airlie unsigned *num_format, unsigned *format_comp, unsigned *endian); 2833be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie 2843be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airliestatic inline int fp64_switch(int i) 2853be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie{ 2863be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie switch (i) { 2873be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie case 0: 2883be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie return 1; 2893be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie case 1: 2903be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie return 0; 2913be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie case 2: 2923be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie return 3; 2933be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie case 3: 2943be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie return 2; 2953be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie } 2963be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie return 0; 2973be5ee1574e0a3494c0550f4b7ae09117855d749Dave Airlie} 298de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse#endif 299