1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright 2010 Jerome Glisse <glisse@freedesktop.org> 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and associated documentation files (the "Software"), 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * to deal in the Software without restriction, including without limitation 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * on the rights to use, copy, modify, merge, publish, distribute, sub 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * license, and/or sell copies of the Software, and to permit persons to whom 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the Software is furnished to do so, subject to the following conditions: 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice (including the next 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * paragraph) shall be included in all copies or substantial portions of the 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Software. 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * USE OR OTHER DEALINGS IN THE SOFTWARE. 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef R600_ASM_H 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R600_ASM_H 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "r600.h" 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_vertex_element; 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_context; 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_bytecode_alu_src { 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned sel; 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned chan; 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned neg; 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned abs; 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned rel; 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned kc_bank; 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t value; 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_bytecode_alu_dst { 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned sel; 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned chan; 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned clamp; 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned write; 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned rel; 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_bytecode_alu { 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct list_head list; 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_alu_src src[3]; 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_alu_dst dst; 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned inst; 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned last; 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned is_op3; 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned execute_mask; 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned update_pred; 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned pred_sel; 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned bank_swizzle; 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned bank_swizzle_force; 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned omod; 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned index_mode; 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_bytecode_tex { 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct list_head list; 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned inst; 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned resource_id; 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned src_gpr; 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned src_rel; 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_gpr; 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_rel; 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_sel_x; 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_sel_y; 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_sel_z; 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_sel_w; 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned lod_bias; 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned coord_type_x; 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned coord_type_y; 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned coord_type_z; 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned coord_type_w; 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned offset_x; 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned offset_y; 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned offset_z; 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned sampler_id; 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned src_sel_x; 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned src_sel_y; 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned src_sel_z; 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned src_sel_w; 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_bytecode_vtx { 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct list_head list; 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned inst; 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned fetch_type; 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned buffer_id; 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned src_gpr; 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned src_sel_x; 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned mega_fetch_count; 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_gpr; 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_sel_x; 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_sel_y; 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_sel_z; 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dst_sel_w; 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned use_const_fields; 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned data_format; 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned num_format_all; 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned format_comp_all; 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned srf_mode_all; 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned offset; 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned endian; 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_bytecode_output { 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned array_base; 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned array_size; 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned comp_mask; 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned type; 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned end_of_program; 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* CF_INST. This is already bit-shifted and only needs to be or'd for bytecode. */ 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned inst; 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned elem_size; 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned gpr; 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned swizzle_x; 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned swizzle_y; 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned swizzle_z; 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned swizzle_w; 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned burst_count; 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned barrier; 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_bytecode_kcache { 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned bank; 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned mode; 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned addr; 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* A value of CF_NATIVE in r600_bytecode_cf::inst means that this instruction 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * has already been encoded, and the encoding has been stored in 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * r600_bytecode::isa. This is used by the LLVM backend to emit CF instructions 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * e.g. RAT_WRITE_* that can't be properly represented by struct 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * r600_bytecode_cf. 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CF_NATIVE ~0 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_bytecode_cf { 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct list_head list; 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* CF_INST. This is already bit-shifted and only needs to be or'd for bytecode. */ 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned inst; 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned addr; 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ndw; 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned id; 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned cond; 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned pop_count; 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned cf_addr; /* control flow addr */ 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_kcache kcache[4]; 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned r6xx_uses_waterfall; 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned eg_alu_extended; 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct list_head alu; 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct list_head tex; 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct list_head vtx; 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_output output; 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_alu *curr_bs_head; 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_alu *prev_bs_head; 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_alu *prev2_bs_head; 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned isa[2]; 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FC_NONE 0 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FC_IF 1 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FC_LOOP 2 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FC_REP 3 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FC_PUSH_VPM 4 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define FC_PUSH_WQM 5 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_cf_stack_entry { 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int type; 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_cf *start; 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_cf **mid; /* used to store the else point */ 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int num_mid; 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SQ_MAX_CALL_DEPTH 0x00000020 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_cf_callstack { 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned fc_sp_before_entry; 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int sub_desc_index; 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int current; 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int max; 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define AR_HANDLE_NORMAL 0 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define AR_HANDLE_RV6XX 1 /* except RV670 */ 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct r600_bytecode { 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org enum chip_class chip_class; 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int type; 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct list_head cf; 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_bytecode_cf *cf_last; 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ndw; 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ncf; 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ngpr; 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned nstack; 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned nresource; 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned force_add_cf; 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t *bytecode; 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t fc_sp; 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_cf_stack_entry fc_stack[32]; 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned call_sp; 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct r600_cf_callstack callstack[SQ_MAX_CALL_DEPTH]; 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ar_loaded; 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ar_reg; 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ar_handling; 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned r6xx_nop_after_rel_dst; 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* eg_asm.c */ 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint eg_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode_cf *cf); 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* r600_asm.c */ 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid r600_bytecode_init(struct r600_bytecode *bc, enum chip_class chip_class, enum radeon_family family); 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid r600_bytecode_clear(struct r600_bytecode *bc); 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint r600_bytecode_add_alu(struct r600_bytecode *bc, const struct r600_bytecode_alu *alu); 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint r600_bytecode_add_vtx(struct r600_bytecode *bc, const struct r600_bytecode_vtx *vtx); 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint r600_bytecode_add_tex(struct r600_bytecode *bc, const struct r600_bytecode_tex *tex); 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint r600_bytecode_add_output(struct r600_bytecode *bc, const struct r600_bytecode_output *output); 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint r600_bytecode_build(struct r600_bytecode *bc); 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint r600_bytecode_add_cfinst(struct r600_bytecode *bc, int inst); 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint r600_bytecode_add_alu_type(struct r600_bytecode *bc, const struct r600_bytecode_alu *alu, int type); 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid r600_bytecode_special_constants(uint32_t value, unsigned *sel, unsigned *neg); 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid r600_bytecode_dump(struct r600_bytecode *bc); 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint cm_bytecode_add_cf_end(struct r600_bytecode *bc); 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint r600_vertex_elements_build_fetch_shader(struct r600_context *rctx, struct r600_vertex_element *ve); 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* r700_asm.c */ 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid r700_bytecode_cf_vtx_build(uint32_t *bytecode, const struct r600_bytecode_cf *cf); 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint r700_bytecode_alu_build(struct r600_bytecode *bc, struct r600_bytecode_alu *alu, unsigned id); 244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 246