Lines Matching refs:cf
31 int eg_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode_cf *cf)
33 unsigned id = cf->id;
35 if (cf->op == CF_NATIVE) {
36 bc->bytecode[id++] = cf->isa[0];
37 bc->bytecode[id++] = cf->isa[1];
39 const struct cf_op_info *cfop = r600_isa_cf(cf->op);
40 unsigned opcode = r600_isa_cf_opcode(bc->isa->hw_class, cf->op);
44 if (cf->eg_alu_extended) {
46 S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE0(cf->kcache[0].index_mode) |
47 S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE1(cf->kcache[1].index_mode) |
48 S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE2(cf->kcache[2].index_mode) |
49 S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE3(cf->kcache[3].index_mode) |
50 S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK2(cf->kcache[2].bank) |
51 S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK3(cf->kcache[3].bank) |
52 S_SQ_CF_ALU_WORD0_EXT_KCACHE_MODE2(cf->kcache[2].mode);
56 S_SQ_CF_ALU_WORD1_EXT_KCACHE_MODE3(cf->kcache[3].mode) |
57 S_SQ_CF_ALU_WORD1_EXT_KCACHE_ADDR2(cf->kcache[2].addr) |
58 S_SQ_CF_ALU_WORD1_EXT_KCACHE_ADDR3(cf->kcache[3].addr) |
61 bc->bytecode[id++] = S_SQ_CF_ALU_WORD0_ADDR(cf->addr >> 1) |
62 S_SQ_CF_ALU_WORD0_KCACHE_MODE0(cf->kcache[0].mode) |
63 S_SQ_CF_ALU_WORD0_KCACHE_BANK0(cf->kcache[0].bank) |
64 S_SQ_CF_ALU_WORD0_KCACHE_BANK1(cf->kcache[1].bank);
66 S_SQ_CF_ALU_WORD1_KCACHE_MODE1(cf->kcache[1].mode) |
67 S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(cf->kcache[0].addr) |
68 S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(cf->kcache[1].addr) |
70 S_SQ_CF_ALU_WORD1_COUNT((cf->ndw / 2) - 1);
73 bc->bytecode[id++] = S_SQ_CF_WORD0_ADDR(cf->addr >> 1);
76 S_SQ_CF_WORD1_VALID_PIXEL_MODE(cf->vpm) |
77 S_SQ_CF_WORD1_COUNT((cf->ndw / 4) - 1);
79 bc->bytecode[id] |= S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(cf->end_of_program);
83 bc->bytecode[id++] = S_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR(cf->output.gpr) |
84 S_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(cf->output.elem_size) |
85 S_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE(cf->output.array_base) |
86 S_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(cf->output.type) |
87 S_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(cf->output.index_gpr);
89 S_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(cf->output.burst_count - 1) |
90 S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X(cf->output.swizzle_x) |
91 S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y(cf->output.swizzle_y) |
92 S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z(cf->output.swizzle_z) |
93 S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W(cf->output.swizzle_w) |
94 S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(cf->barrier) |
95 S_SQ_CF_ALLOC_EXPORT_WORD1_MARK(cf->mark) |
99 bc->bytecode[id] |= S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(cf->end_of_program);
102 bc->bytecode[id++] = S_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_ID(cf->rat.id) |
103 S_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INST(cf->rat.inst) |
104 S_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INDEX_MODE(cf->rat.index_mode) |
105 S_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR(cf->output.gpr) |
106 S_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(cf->output.elem_size) |
107 S_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(cf->output.type) |
108 S_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(cf->output.index_gpr);
109 bc->bytecode[id] = S_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(cf->output.burst_count - 1) |
110 S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(cf->barrier) |
111 S_SQ_CF_ALLOC_EXPORT_WORD1_MARK(cf->mark) |
112 S_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE(cf->vpm) |
114 S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(cf->output.comp_mask) |
115 S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(cf->output.array_size);
117 bc->bytecode[id] |= S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(cf->end_of_program);
122 bc->bytecode[id++] = S_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR(cf->output.gpr) |
123 S_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(cf->output.elem_size) |
124 S_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE(cf->output.array_base) |
125 S_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(cf->output.type) |
126 S_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(cf->output.index_gpr);
127 bc->bytecode[id] = S_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(cf->output.burst_count - 1) |
128 S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(cf->barrier) |
129 S_SQ_CF_ALLOC_EXPORT_WORD1_MARK(cf->mark) |
131 S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(cf->output.comp_mask) |
132 S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(cf->output.array_size);
134 bc->bytecode[id] |= S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(cf->end_of_program);
138 bc->bytecode[id++] = S_SQ_CF_WORD0_ADDR(cf->cf_addr >> 1);
141 S_SQ_CF_WORD1_COND(cf->cond) |
142 S_SQ_CF_WORD1_POP_COUNT(cf->pop_count) |
143 S_SQ_CF_WORD1_COUNT(cf->count);
145 bc->bytecode[id] |= S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(cf->end_of_program);