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 26330b6c85c961b32f704ce8ec7dbf8cb7fc0b80a8Marek Olšák#include "r600.h" 27330b6c85c961b32f704ce8ec7dbf8cb7fc0b80a8Marek Olšák 28fa86fc564aea4e40c89f6fc889e6a5bf817634b3Jerome Glissestruct r600_vertex_element; 29e4340c1908a6a3b09e1a15d5195f6da7d00494d0Marek Olšákstruct r600_context; 30fa86fc564aea4e40c89f6fc889e6a5bf817634b3Jerome Glisse 314a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_alu_src { 32de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned sel; 33de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned chan; 34de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned neg; 35de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned abs; 3647d5a19df1e7760c4f5f0e340bfc56355c2e428bDave Airlie unsigned rel; 37d649bf51ec787021f7872e2a4c09fb2188c0891bVadim Girlin unsigned kc_bank; 38a77e813de32643ae2dfffd7ad12abed596172cabHenri Verbeet uint32_t value; 39de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 40de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 414a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_alu_dst { 42de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned sel; 43de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned chan; 44de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned clamp; 45de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned write; 4647d5a19df1e7760c4f5f0e340bfc56355c2e428bDave Airlie unsigned rel; 47de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 48de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 494a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_alu { 50de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head list; 514a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu_src src[3]; 524a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu_dst dst; 53de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned inst; 54de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned last; 55de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned is_op3; 56da676eab93e7dad30b574b4eb4cffd4df952e819Vincent Lejeune unsigned execute_mask; 57da676eab93e7dad30b574b4eb4cffd4df952e819Vincent Lejeune unsigned update_pred; 58da676eab93e7dad30b574b4eb4cffd4df952e819Vincent Lejeune unsigned pred_sel; 59e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe unsigned bank_swizzle; 60e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe unsigned bank_swizzle_force; 61c60cb25bfb15fc83e78d9f2c74646dcc5ad07792Christian König unsigned omod; 62c96b9834032952492efbd2d1f5511fe225704918Dave Airlie unsigned index_mode; 63de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 64de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 654a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_tex { 6633241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse struct list_head list; 6733241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned inst; 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; 8233241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned offset_x; 8333241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned offset_y; 8433241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse unsigned 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; 9033241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse}; 9133241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse 924a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_vtx { 93de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head list; 94de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned inst; 95de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned fetch_type; 96de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned buffer_id; 97de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned src_gpr; 98de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned src_sel_x; 99de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned mega_fetch_count; 100de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_gpr; 101de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_sel_x; 102de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_sel_y; 103de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_sel_z; 104de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned dst_sel_w; 105e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned use_const_fields; 106e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned data_format; 107e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned num_format_all; 108e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned format_comp_all; 109e973221538d5edfad62abedf5b37a4fb774d71fcDave Airlie unsigned srf_mode_all; 11096bbc627f369c0100b950f81531b1fe9ef586c34Christian König unsigned offset; 111843dfe3206c4f397c7911b748373dde5540392a4Cédric Cano unsigned endian; 112de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 113de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 1144a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_output { 115de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned array_base; 116543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák unsigned array_size; 117543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák unsigned comp_mask; 118de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned type; 119de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned end_of_program; 1204f7c21899ad449be2bc1157ce1d2d99296a34499Marek Olšák 1214f7c21899ad449be2bc1157ce1d2d99296a34499Marek Olšák /* CF_INST. This is already bit-shifted and only needs to be or'd for bytecode. */ 122de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned inst; 1234f7c21899ad449be2bc1157ce1d2d99296a34499Marek Olšák 124de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned elem_size; 125de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned gpr; 126de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned swizzle_x; 127de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned swizzle_y; 128de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned swizzle_z; 129de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned swizzle_w; 1308ca3b140eb53fd8063337a5a2a54a35987d597bcChristian König unsigned burst_count; 131de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned barrier; 132de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 133de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 1344a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_kcache { 1358273921b7a41251f3f5a87df995913cb291902caHenri Verbeet unsigned bank; 1368273921b7a41251f3f5a87df995913cb291902caHenri Verbeet unsigned mode; 1378273921b7a41251f3f5a87df995913cb291902caHenri Verbeet unsigned addr; 1388273921b7a41251f3f5a87df995913cb291902caHenri Verbeet}; 1398273921b7a41251f3f5a87df995913cb291902caHenri Verbeet 14094a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard/* A value of CF_NATIVE in r600_bytecode_cf::inst means that this instruction 14194a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard * has already been encoded, and the encoding has been stored in 14294a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard * r600_bytecode::isa. This is used by the LLVM backend to emit CF instructions 14394a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard * e.g. RAT_WRITE_* that can't be properly represented by struct 14494a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard * r600_bytecode_cf. 14594a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard */ 14694a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard#define CF_NATIVE ~0 14794a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard 1484a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode_cf { 149de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head list; 1504f7c21899ad449be2bc1157ce1d2d99296a34499Marek Olšák 1514f7c21899ad449be2bc1157ce1d2d99296a34499Marek Olšák /* CF_INST. This is already bit-shifted and only needs to be or'd for bytecode. */ 152de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned inst; 1534f7c21899ad449be2bc1157ce1d2d99296a34499Marek Olšák 154de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned addr; 155de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned ndw; 156de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned id; 157e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe unsigned cond; 158e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe unsigned pop_count; 159e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe unsigned cf_addr; /* control flow addr */ 160d649bf51ec787021f7872e2a4c09fb2188c0891bVadim Girlin struct r600_bytecode_kcache kcache[4]; 161c5edfcc410bdf3dbe4f37418de8f0009746c9578Dave Airlie unsigned r6xx_uses_waterfall; 162d649bf51ec787021f7872e2a4c09fb2188c0891bVadim Girlin unsigned eg_alu_extended; 163de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head alu; 16433241134e6e3d5bf19141eceff90fd854b23386aJerome Glisse struct list_head tex; 165de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head vtx; 1664a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_output output; 1674a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu *curr_bs_head; 1684a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu *prev_bs_head; 1694a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_alu *prev2_bs_head; 17094a6a363792e8cb57a9f15778a3f3440d5b754abTom Stellard unsigned isa[2]; 171de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 172de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 1737ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_NONE 0 1747ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_IF 1 1757ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_LOOP 2 1767ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_REP 3 1777ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_PUSH_VPM 4 1787ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse#define FC_PUSH_WQM 5 179a03d456f5a41926e39194de70b2d50776e64b8a2Dave Airlie 180a03d456f5a41926e39194de70b2d50776e64b8a2Dave Airliestruct r600_cf_stack_entry { 181e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe int type; 1824a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_cf *start; 1834a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_cf **mid; /* used to store the else point */ 184e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe int num_mid; 18509547e1bcee7df3444dd8682770d1b31da1a5822Dave Airlie}; 18609547e1bcee7df3444dd8682770d1b31da1a5822Dave Airlie 18709547e1bcee7df3444dd8682770d1b31da1a5822Dave Airlie#define SQ_MAX_CALL_DEPTH 0x00000020 18809547e1bcee7df3444dd8682770d1b31da1a5822Dave Airliestruct r600_cf_callstack { 189e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe unsigned fc_sp_before_entry; 190e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe int sub_desc_index; 191e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe int current; 192e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe int max; 193a03d456f5a41926e39194de70b2d50776e64b8a2Dave Airlie}; 1947ffd4e976fd11b8c083c2927effd25a2f79ac841Jerome Glisse 195c96b9834032952492efbd2d1f5511fe225704918Dave Airlie#define AR_HANDLE_NORMAL 0 196c96b9834032952492efbd2d1f5511fe225704918Dave Airlie#define AR_HANDLE_RV6XX 1 /* except RV670 */ 197c96b9834032952492efbd2d1f5511fe225704918Dave Airlie 198c96b9834032952492efbd2d1f5511fe225704918Dave Airlie 1994a47662beaa2092447939db7880531fb706afeddMarek Olšákstruct r600_bytecode { 20089dc31a28d8e5607989ec11cfd29310c1c97f6acHenri Verbeet enum chip_class chip_class; 201f609b2ab0342d77a8beca9efb5fbc5b66ff98295Jerome Glisse int type; 202de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse struct list_head cf; 2034a47662beaa2092447939db7880531fb706afeddMarek Olšák struct r600_bytecode_cf *cf_last; 204de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned ndw; 205de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned ncf; 206de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned ngpr; 207e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe unsigned nstack; 208de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse unsigned nresource; 2097e42b7e5d2aebcda0e6bf081b6661411731e6df2Jerome Glisse unsigned force_add_cf; 21078293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t *bytecode; 21178293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t fc_sp; 212e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe struct r600_cf_stack_entry fc_stack[32]; 213e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe unsigned call_sp; 214e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe struct r600_cf_callstack callstack[SQ_MAX_CALL_DEPTH]; 2158e366dc365d01213b71b87ace47d30938db74845Vadim Girlin unsigned ar_loaded; 2168e366dc365d01213b71b87ace47d30938db74845Vadim Girlin unsigned ar_reg; 217c96b9834032952492efbd2d1f5511fe225704918Dave Airlie unsigned ar_handling; 218c96b9834032952492efbd2d1f5511fe225704918Dave Airlie unsigned r6xx_nop_after_rel_dst; 219de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse}; 220de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse 2216abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse/* eg_asm.c */ 2224a47662beaa2092447939db7880531fb706afeddMarek Olšákint eg_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode_cf *cf); 2236abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse 2246abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse/* r600_asm.c */ 225c96b9834032952492efbd2d1f5511fe225704918Dave Airlievoid r600_bytecode_init(struct r600_bytecode *bc, enum chip_class chip_class, enum radeon_family family); 2264a47662beaa2092447939db7880531fb706afeddMarek Olšákvoid r600_bytecode_clear(struct r600_bytecode *bc); 2274a47662beaa2092447939db7880531fb706afeddMarek Olšákint r600_bytecode_add_alu(struct r600_bytecode *bc, const struct r600_bytecode_alu *alu); 2284a47662beaa2092447939db7880531fb706afeddMarek Olšákint r600_bytecode_add_vtx(struct r600_bytecode *bc, const struct r600_bytecode_vtx *vtx); 2294a47662beaa2092447939db7880531fb706afeddMarek Olšákint r600_bytecode_add_tex(struct r600_bytecode *bc, const struct r600_bytecode_tex *tex); 2304a47662beaa2092447939db7880531fb706afeddMarek Olšákint r600_bytecode_add_output(struct r600_bytecode *bc, const struct r600_bytecode_output *output); 2314a47662beaa2092447939db7880531fb706afeddMarek Olšákint r600_bytecode_build(struct r600_bytecode *bc); 2324a47662beaa2092447939db7880531fb706afeddMarek Olšákint r600_bytecode_add_cfinst(struct r600_bytecode *bc, int inst); 2334a47662beaa2092447939db7880531fb706afeddMarek Olšákint r600_bytecode_add_alu_type(struct r600_bytecode *bc, const struct r600_bytecode_alu *alu, int type); 23478293b99b23268e6698f1267aaf40647c17d95a5Marek Olšákvoid r600_bytecode_special_constants(uint32_t value, unsigned *sel, unsigned *neg); 2354a47662beaa2092447939db7880531fb706afeddMarek Olšákvoid r600_bytecode_dump(struct r600_bytecode *bc); 2364a47662beaa2092447939db7880531fb706afeddMarek Olšák 2374a47662beaa2092447939db7880531fb706afeddMarek Olšákint cm_bytecode_add_cf_end(struct r600_bytecode *bc); 2387779f6d1dffde2c0501e44adc342e52803de08d4Dave Airlie 239e4340c1908a6a3b09e1a15d5195f6da7d00494d0Marek Olšákint r600_vertex_elements_build_fetch_shader(struct r600_context *rctx, struct r600_vertex_element *ve); 240e0b6df4fcce0964ea7930efeb40cb487b4c53337John Doe 2416abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse/* r700_asm.c */ 2424a47662beaa2092447939db7880531fb706afeddMarek Olšákvoid r700_bytecode_cf_vtx_build(uint32_t *bytecode, const struct r600_bytecode_cf *cf); 2434a47662beaa2092447939db7880531fb706afeddMarek Olšákint r700_bytecode_alu_build(struct r600_bytecode *bc, struct r600_bytecode_alu *alu, unsigned id); 2446abd7771c6ab2c733b20835e211060dd18fd847dJerome Glisse 245de553d906b4a205d811a9e1651f14212ec284e29Jerome Glisse#endif 246