Lines Matching refs:bc

146 			pipe_buffer_create(ctx->screen, 0, PIPE_USAGE_IMMUTABLE, shader->shader.bc.ndw * 4);
154 for (i = 0; i < shader->shader.bc.ndw; ++i) {
155 ptr[i] = util_cpu_to_le32(shader->shader.bc.bytecode[i]);
158 memcpy(ptr, shader->shader.bc.bytecode, shader->shader.bc.ndw * sizeof(*ptr));
187 shader->shader.bc.isa = rctx->isa;
277 if (!shader->shader.bc.bytecode) {
278 r = r600_bytecode_build(&shader->shader.bc);
288 r600_bytecode_disasm(&shader->shader.bc);
291 r = r600_sb_bytecode_process(rctx, &shader->shader.bc, &shader->shader,
307 r = r600_sb_bytecode_process(rctx, &shader->gs_copy_shader->shader.bc,
374 shader->shader.bc.ndw,
375 shader->shader.bc.ngpr,
376 shader->shader.bc.nalu_groups,
378 shader->shader.bc.ncf,
379 shader->shader.bc.nstack);
391 if (list_is_linked(&shader->shader.bc.cf))
392 r600_bytecode_clear(&shader->shader.bc);
428 struct r600_bytecode *bc;
488 if (ctx->bc->family == CHIP_HEMLOCK ||
489 ctx->bc->family == CHIP_CYPRESS ||
490 ctx->bc->family == CHIP_JUNIPER)
628 r = r600_bytecode_add_alu(ctx->bc, &alu);
655 r = r600_bytecode_add_alu(ctx->bc, &alu);
815 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
831 if (ctx->bc->gfx_level == CAYMAN && op == ALU_OP2_MULLO_INT) {
849 r = r600_bytecode_add_alu(ctx->bc, &alu);
872 r = r600_bytecode_add_alu(ctx->bc, &alu);
911 r = r600_bytecode_add_alu(ctx->bc, &alu);
941 return index > 0 ? ctx->bc->index_reg[index - 1] : ctx->bc->ar_reg;
972 r = r600_bytecode_add_alu(ctx->bc, &alu);
984 return r600_bytecode_wait_acks(ctx->bc);
1114 if (ctx->bc->gfx_level >= EVERGREEN) {
1252 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
1267 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
1281 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
1358 if (ctx->bc->gfx_level >= EVERGREEN) {
1460 r = r600_bytecode_add_alu(ctx->bc, &alu);
1481 r = r600_bytecode_add_vtx(ctx->bc, &vtx);
1502 r = r600_bytecode_add_alu(ctx->bc, &alu);
1520 if ((r = r600_bytecode_add_vtx_tc(ctx->bc, &vtx)))
1522 ctx->bc->cf_last->vpm = 1;
1539 r = r600_bytecode_add_alu(ctx->bc, &alu);
1550 r = r600_bytecode_add_alu_type(ctx->bc, &alu, CF_OP_ALU_VALID_PIXEL_MODE);
1575 r = r600_bytecode_add_alu(ctx->bc, &alu);
1600 r = r600_bytecode_add_vtx(ctx->bc, &vtx);
1635 if (ctx->bc->gfx_level < R700) {
1654 cf.index_gpr = ctx->bc->ar_reg;
1662 r = r600_bytecode_add_output(ctx->bc, &cf);
1667 r600_bytecode_wait_acks(ctx->bc);
1686 vtx.src_gpr = ctx->bc->ar_reg;
1693 r = r600_bytecode_add_vtx(ctx->bc, &vtx);
1835 alu.src[0].sel = ctx->bc->ar_reg;
1846 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
1851 ar_reg = ctx->bc->ar_reg;
1871 if ((r = r600_bytecode_add_vtx(ctx->bc, &vtx)))
1904 ctx->bc->ar_reg, 0,
1927 r = r600_bytecode_add_alu(ctx->bc, &alu);
1938 r = r600_bytecode_add_alu(ctx->bc, &alu);
1982 if (ctx->bc->gfx_level >= EVERGREEN) {
1988 if ((r = r600_bytecode_add_vtx(ctx->bc, &vtx)))
2150 if ((ctx->bc->cf_last->ndw>>1) >= 0x60)
2151 ctx->bc->force_add_cf = 1;
2179 r = r600_bytecode_add_alu(ctx->bc, &alu);
2197 r = r600_bytecode_add_alu(ctx->bc, &alu);
2357 r = r600_bytecode_add_alu(ctx->bc, &alu);
2395 r = r600_bytecode_add_alu(ctx->bc, &alu);
2469 r = r600_bytecode_add_alu(ctx->bc, &alu);
2498 if (ctx->bc->gfx_level >= EVERGREEN) {
2533 r = r600_bytecode_add_output(ctx->bc, &output);
2560 r600_bytecode_add_alu(ctx->bc, &alu);
2568 r600_bytecode_add_alu(ctx->bc, &alu);
2598 ctx.bc = &ctx.shader->bc;
2599 ctx.type = ctx.bc->type = PIPE_SHADER_VERTEX;
2601 r600_bytecode_init(ctx.bc, rctx->b.gfx_level, rctx->b.family,
2604 ctx.bc->isa = rctx->isa;
2615 r600_bytecode_add_alu(ctx.bc, &alu);
2625 r600_bytecode_add_alu(ctx.bc, &alu);
2652 r600_bytecode_add_vtx(ctx.bc, &vtx);
2672 r600_bytecode_add_cfinst(ctx.bc, CF_OP_POP);
2673 cf_pop = ctx.bc->cf_last;
2690 r600_bytecode_add_alu_type(ctx.bc, &alu, CF_OP_ALU_PUSH_BEFORE);
2692 r600_bytecode_add_cfinst(ctx.bc, CF_OP_JUMP);
2693 cf_jump = ctx.bc->cf_last;
2700 /* bc adds nops - copy it */
2701 if (ctx.bc->gfx_level == R600) {
2705 r600_bytecode_add_alu(ctx.bc, &alu);
2707 r600_bytecode_add_cfinst(ctx.bc, CF_OP_NOP);
2759 r600_bytecode_add_output(ctx.bc, &output);
2760 last_exp_param = ctx.bc->cf_last;
2777 r600_bytecode_add_output(ctx.bc, &output);
2778 last_exp_param = ctx.bc->cf_last;
2800 r600_bytecode_add_output(ctx.bc, &output);
2801 last_exp_param = ctx.bc->cf_last;
2815 r600_bytecode_add_output(ctx.bc, &output);
2817 last_exp_param = ctx.bc->cf_last;
2819 last_exp_pos = ctx.bc->cf_last;
2835 r600_bytecode_add_output(ctx.bc, &output);
2836 last_exp_pos = ctx.bc->cf_last;
2852 r600_bytecode_add_output(ctx.bc, &output);
2853 last_exp_param = ctx.bc->cf_last;
2859 r600_bytecode_add_cfinst(ctx.bc, CF_OP_POP);
2860 cf_pop = ctx.bc->cf_last;
2867 if (ctx.bc->gfx_level == CAYMAN)
2868 cm_bytecode_add_cf_end(ctx.bc);
2870 r600_bytecode_add_cfinst(ctx.bc, CF_OP_NOP);
2871 ctx.bc->cf_last->end_of_program = 1;
2877 ctx.bc->nstack = 1;
2879 return r600_bytecode_build(ctx.bc);
2896 r = r600_bytecode_add_alu(ctx->bc, &alu);
2967 r600_bytecode_add_output(ctx->bc, &output);
3011 r = r600_bytecode_add_vtx(ctx->bc, &vtx);
3039 r = r600_bytecode_add_vtx(ctx->bc, &vtx);
3105 r = r600_bytecode_add_alu(ctx->bc, &alu);
3171 r = r600_bytecode_add_alu(ctx->bc, &alu);
3190 r = r600_bytecode_add_alu(ctx->bc, &alu);
3244 r600_bytecode_add_alu_type(ctx->bc, &alu, CF_OP_ALU_PUSH_BEFORE);
3246 r600_bytecode_add_cfinst(ctx->bc, CF_OP_JUMP);
3247 cf_jump = ctx->bc->cf_last;
3351 r = r600_bytecode_add_gds(ctx->bc, &gds);
3357 r600_bytecode_add_cfinst(ctx->bc, CF_OP_POP);
3358 cf_pop = ctx->bc->cf_last;
3391 r = r600_bytecode_add_alu(ctx->bc, &alu);
3402 r = r600_bytecode_add_alu(ctx->bc, &alu);
3417 r = r600_bytecode_add_alu(ctx->bc, &alu);
3454 ctx.bc = &shader->bc;
3457 r600_bytecode_init(ctx.bc, rscreen->b.gfx_level, rscreen->b.family,
3482 ctx.bc->type = shader->processor_type;
3583 r600_bytecode_add_cfinst(ctx.bc, CF_OP_CALL_FS);
3586 if (ctx.bc->gfx_level >= EVERGREEN)
3650 ctx.bc->ar_reg = ++regno;
3651 ctx.bc->index_reg[0] = ++regno;
3652 ctx.bc->index_reg[1] = ++regno;
3795 if (ctx.bc->gfx_level >= EVERGREEN) {
3804 if (ctx.bc->gfx_level == CAYMAN)
3845 if ((r = r600_bytecode_add_alu(ctx.bc, &alu)))
3857 if ((r = r600_bytecode_add_alu(ctx.bc, &alu)))
3862 if (ctx.bc->gfx_level == CAYMAN) {
3874 if ((r = r600_bytecode_add_alu(ctx.bc, &alu)))
3888 if ((r = r600_bytecode_add_alu(ctx.bc, &alu)))
3898 if (ctx.bc->gfx_level == R600)
3899 r600_bytecode_add_cfinst(ctx.bc, CF_OP_CUT_VERTEX);
3909 r = r600_bytecode_add_alu(ctx.bc, &alu);
3977 if (ctx.bc->gfx_level == CAYMAN)
3979 else if (ctx.bc->gfx_level >= EVERGREEN)
3984 ctx.bc->precise |= ctx.parse.FullToken.FullInstruction.Instruction.Precise;
4049 r = r600_bytecode_add_alu(ctx.bc, &alu);
4336 r = r600_bytecode_add_output(ctx.bc, &output[i]);
4343 if (ctx.bc->gfx_level == CAYMAN)
4344 cm_bytecode_add_cf_end(ctx.bc);
4348 if (ctx.bc->cf_last)
4349 last = r600_isa_cf(ctx.bc->cf_last->op);
4352 if (!last || last->flags & CF_ALU || ctx.bc->cf_last->op == CF_OP_LOOP_END || ctx.bc->cf_last->op == CF_OP_POP)
4353 r600_bytecode_add_cfinst(ctx.bc, CF_OP_NOP);
4355 ctx.bc->cf_last->end_of_program = 1;
4360 if (ctx.bc->ngpr > 124) {
4361 R600_ERR("GPR limit exceeded - shader requires %d registers\n", ctx.bc->ngpr);
4447 * ctx->bc->n_pending_outputs is cleared after each instruction group */
4448 if (ctx->bc->n_pending_outputs == 0) {
4453 struct r600_bytecode_output *tmpl = &ctx->bc->pending_outputs[ctx->bc->n_pending_outputs-1];
4456 tmpl->index_gpr == ctx->bc->ar_reg &&
4458 reg = ctx->bc->pending_outputs[0].gpr;
4477 cf.type = r600_bytecode_write_export_ack_type(ctx->bc, tgsi_dst->Register.Indirect);
4487 cf.index_gpr = ctx->bc->ar_reg;
4493 r = r600_bytecode_add_pending_output(ctx->bc, &cf);
4497 r600_bytecode_add_ack(ctx->bc);
4616 r = r600_bytecode_add_alu(ctx->bc, &alu);
4643 r = r600_bytecode_add_alu(ctx->bc, &alu);
4700 r = r600_bytecode_add_alu(ctx->bc, &alu);
4754 r = r600_bytecode_add_alu(ctx->bc, &alu);
4772 r = r600_bytecode_add_alu(ctx->bc, &alu);
4818 r = r600_bytecode_add_alu(ctx->bc, &alu);
4849 r = r600_bytecode_add_alu(ctx->bc, &alu);
4878 r = r600_bytecode_add_alu(ctx->bc, &alu);
4896 r = r600_bytecode_add_alu(ctx->bc, &alu);
4911 r = r600_bytecode_add_alu(ctx->bc, &alu);
4944 r = r600_bytecode_add_alu(ctx->bc, &alu);
4957 r = r600_bytecode_add_alu(ctx->bc, &alu);
4975 if (ctx->bc->gfx_level == CAYMAN)
4980 r = r600_bytecode_add_alu(ctx->bc, &alu);
5006 r = r600_bytecode_add_alu(ctx->bc, &alu);
5023 r = r600_bytecode_add_alu(ctx->bc, &alu);
5059 r = r600_bytecode_add_alu(ctx->bc, &alu);
5067 static int cayman_emit_unary_double_raw(struct r600_bytecode *bc,
5092 if (bc->gfx_level != CAYMAN || i == last_slot - 1)
5094 r = r600_bytecode_add_alu(bc, &alu);
5118 ctx->bc, ctx->inst_info->op, t1,
5136 r = r600_bytecode_add_alu(ctx->bc, &alu);
5166 r = r600_bytecode_add_alu(ctx->bc, &alu);
5196 r = r600_bytecode_add_alu(ctx->bc, &alu);
5213 r = r600_bytecode_add_alu(ctx->bc, &alu);
5248 r = r600_bytecode_add_alu(ctx->bc, &alu);
5264 r = r600_bytecode_add_alu(ctx->bc, &alu);
5290 r = cayman_emit_unary_double_raw(ctx->bc, ALU_OP2_RECIP_64, t1, &ctx->src[1], false);
5308 r = r600_bytecode_add_alu(ctx->bc, &alu);
5322 r = r600_bytecode_add_alu(ctx->bc, &alu);
5355 r = r600_bytecode_add_alu(ctx->bc, &alu);
5369 r = r600_bytecode_add_alu(ctx->bc, &alu);
5389 if (ctx->bc->gfx_level == R600) {
5399 r = r600_bytecode_add_alu(ctx->bc, &alu);
5429 r = r600_bytecode_add_alu(ctx->bc, &alu);
5456 r = r600_bytecode_add_alu(ctx->bc, &alu);
5472 r = r600_bytecode_add_alu(ctx->bc, &alu);
5502 r = r600_bytecode_add_alu(ctx->bc, &alu);
5508 ctx->bc->force_add_cf = 1;
5531 r = r600_bytecode_add_alu(ctx->bc, &alu);
5541 if (ctx->bc->gfx_level == CAYMAN) {
5556 r = r600_bytecode_add_alu(ctx->bc, &alu);
5570 r = r600_bytecode_add_alu(ctx->bc, &alu);
5590 r = r600_bytecode_add_alu(ctx->bc, &alu);
5594 if (ctx->bc->gfx_level == CAYMAN) {
5607 r = r600_bytecode_add_alu(ctx->bc, &alu);
5619 r = r600_bytecode_add_alu(ctx->bc, &alu);
5632 r = r600_bytecode_add_alu(ctx->bc, &alu);
5644 r = r600_bytecode_add_alu(ctx->bc, &alu);
5656 r = r600_bytecode_add_alu(ctx->bc, &alu);
5680 r = r600_bytecode_add_alu(ctx->bc, &alu);
5702 r = r600_bytecode_add_alu(ctx->bc, &alu);
5723 r = r600_bytecode_add_alu(ctx->bc, &alu);
5746 r = r600_bytecode_add_alu(ctx->bc, &alu);
5759 r = r600_bytecode_add_alu(ctx->bc, &alu);
5773 r = r600_bytecode_add_alu(ctx->bc, &alu);
5792 r = r600_bytecode_add_alu(ctx->bc, &alu);
5803 r = r600_bytecode_add_alu(ctx->bc, &alu);
5813 r = r600_bytecode_add_alu(ctx->bc, &alu);
5819 static int emit_mul_int_op(struct r600_bytecode *bc,
5825 if (bc->gfx_level == CAYMAN) {
5831 r = r600_bytecode_add_alu(bc, &alu);
5837 r = r600_bytecode_add_alu(bc, &alu);
5928 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
5944 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
5962 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
5981 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
5999 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6005 if (ctx->bc->gfx_level == CAYMAN) {
6022 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6039 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6055 r = r600_bytecode_add_alu(ctx->bc, &alu);
6070 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6089 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6110 if ((r = emit_mul_int_op(ctx->bc, &alu)))
6126 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6147 if ((r = emit_mul_int_op(ctx->bc, &alu)))
6167 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6184 if ((r = emit_mul_int_op(ctx->bc, &alu)))
6201 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6218 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6238 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6259 if ((r = emit_mul_int_op(ctx->bc, &alu)))
6280 if ((r = emit_mul_int_op(ctx->bc, &alu)))
6302 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6323 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6345 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6369 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6390 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6408 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6424 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6443 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6464 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6494 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6516 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6540 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6558 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6583 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6602 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
6653 r = r600_bytecode_add_alu(ctx->bc, &alu);
6672 r = r600_bytecode_add_alu(ctx->bc, &alu);
6705 r = r600_bytecode_add_alu(ctx->bc, &alu);
6729 r = r600_bytecode_add_alu(ctx->bc, &alu);
6763 r = r600_bytecode_add_alu(ctx->bc, &alu);
6790 r = r600_bytecode_add_alu(ctx->bc, &alu);
6824 r = r600_bytecode_add_alu(ctx->bc, &alu);
6850 r = r600_bytecode_add_alu(ctx->bc, &alu);
6881 r = r600_bytecode_add_alu(ctx->bc, &alu);
6901 r = r600_bytecode_add_alu(ctx->bc, &alu);
6923 r = r600_bytecode_add_alu(ctx->bc, &alu);
6947 r = r600_bytecode_add_alu(ctx->bc, &alu);
6968 r = r600_bytecode_add_alu(ctx->bc, &alu);
7004 r = r600_bytecode_add_alu(ctx->bc, &alu);
7028 r = r600_bytecode_add_alu(ctx->bc, &alu);
7053 r = r600_bytecode_add_alu(ctx->bc, &alu);
7116 r = r600_bytecode_add_tex(ctx->bc, &tex);
7140 r = r600_bytecode_add_alu(ctx->bc, &alu);
7164 r = r600_bytecode_add_alu(ctx->bc, &alu);
7198 r = r600_bytecode_add_alu(ctx->bc, &alu);
7216 r = r600_bytecode_add_alu(ctx->bc, &alu);
7244 r = r600_bytecode_add_alu(ctx->bc, &alu);
7281 r = r600_bytecode_add_alu(ctx->bc, &alu);
7333 r = r600_bytecode_add_alu(ctx->bc, &alu);
7385 r = r600_bytecode_add_alu(ctx->bc, &alu);
7430 r = r600_bytecode_add_alu(ctx->bc, &alu);
7451 if ((r = r600_bytecode_add_vtx(ctx->bc, &vtx)))
7454 if (ctx->bc->gfx_level >= EVERGREEN)
7479 r = r600_bytecode_add_alu(ctx->bc, &alu);
7500 r = r600_bytecode_add_alu(ctx->bc, &alu);
7514 if (ctx->bc->gfx_level < EVERGREEN) {
7525 r = r600_bytecode_add_alu(ctx->bc, &alu);
7545 if ((r = r600_bytecode_add_vtx_tc(ctx->bc, &vtx)))
7561 bool read_compressed_msaa = ctx->bc->has_compressed_msaa_texturing &&
7607 if (ctx->bc->gfx_level < EVERGREEN)
7612 if (ctx->bc->gfx_level < EVERGREEN)
7621 if (ctx->bc->gfx_level == CAYMAN) {
7634 r = r600_bytecode_add_alu(ctx->bc, &alu);
7649 r = r600_bytecode_add_alu(ctx->bc, &alu);
7663 r = r600_bytecode_add_alu(ctx->bc, &alu);
7675 r = r600_bytecode_add_alu(ctx->bc, &alu);
7703 r = r600_bytecode_add_alu(ctx->bc, &alu);
7709 if (ctx->bc->gfx_level == CAYMAN) {
7722 r = r600_bytecode_add_alu(ctx->bc, &alu);
7736 r = r600_bytecode_add_alu(ctx->bc, &alu);
7762 r = r600_bytecode_add_alu(ctx->bc, &alu);
7784 r = r600_bytecode_add_alu(ctx->bc, &alu);
7802 r = r600_bytecode_add_alu(ctx->bc, &alu);
7809 if (ctx->bc->gfx_level >= EVERGREEN) {
7819 r = r600_bytecode_add_alu(ctx->bc, &alu);
7834 r = r600_bytecode_add_alu(ctx->bc, &alu);
7850 r = r600_bytecode_add_alu(ctx->bc, &alu);
7869 r = r600_bytecode_add_alu(ctx->bc, &alu);
7872 } else if (ctx->bc->gfx_level < EVERGREEN) {
7894 r = r600_bytecode_add_alu(ctx->bc, &alu);
7898 r = r600_bytecode_add_tex(ctx->bc, &tex);
7921 r = r600_bytecode_add_alu(ctx->bc, &alu);
7958 r = r600_bytecode_add_alu(ctx->bc, &alu);
8018 r = r600_bytecode_add_alu(ctx->bc, &alu);
8040 r = r600_bytecode_add_alu(ctx->bc, &alu);
8061 r = r600_bytecode_add_tex(ctx->bc, &tex);
8066 if (ctx->bc->gfx_level == CAYMAN) {
8077 r = r600_bytecode_add_alu(ctx->bc, &alu);
8093 r = r600_bytecode_add_alu(ctx->bc, &alu);
8108 r = r600_bytecode_add_alu(ctx->bc, &alu);
8121 r = r600_bytecode_add_alu(ctx->bc, &alu);
8143 r = r600_bytecode_add_alu(ctx->bc, &alu);
8163 r = r600_bytecode_add_alu(ctx->bc, &alu);
8192 r = r600_bytecode_add_alu(ctx->bc, &alu);
8213 r = r600_bytecode_add_alu(ctx->bc, &alu);
8230 r = r600_bytecode_add_alu(ctx->bc, &alu);
8295 r = r600_bytecode_add_tex(ctx->bc, &tex);
8309 r = emit_mul_int_op(ctx->bc, &alu);
8324 r = r600_bytecode_add_alu(ctx->bc, &alu);
8339 r = r600_bytecode_add_alu(ctx->bc, &alu);
8353 r = r600_bytecode_add_alu(ctx->bc, &alu);
8369 if (ctx->bc->gfx_level >= EVERGREEN) {
8381 r = r600_bytecode_add_alu(ctx->bc, &alu);
8484 if (ctx->bc->gfx_level == CAYMAN) {
8595 (ctx->bc->gfx_level >= EVERGREEN))
8614 r = r600_bytecode_add_alu(ctx->bc, &alu);
8641 r = r600_bytecode_add_tex(ctx->bc, &grad_offs[i]);
8646 r = r600_bytecode_add_tex(ctx->bc, &tex);
8680 bool is_cm = (ctx->bc->gfx_level == CAYMAN);
8697 r = r600_bytecode_add_alu(ctx->bc, &alu);
8729 bool is_cm = (ctx->bc->gfx_level == CAYMAN);
8750 r = r600_bytecode_add_gds(ctx->bc, &gds);
8754 ctx->bc->cf_last->vpm = 1;
8808 r = r600_bytecode_add_alu(ctx->bc, &alu);
8839 r = r600_bytecode_add_alu(ctx->bc, &alu);
8876 ctx->bc->cf_last->barrier = 1;
8907 r = r600_bytecode_add_vtx_tc(ctx->bc, &vtx);
8910 cf = ctx->bc->cf_last;
8934 egcm_load_index_reg(ctx->bc, 1, false);
8936 r600_bytecode_add_cfinst(ctx->bc, CF_OP_MEM_RAT);
8937 cf = ctx->bc->cf_last;
8952 r600_bytecode_add_ack(ctx->bc);
8953 r600_bytecode_wait_acks(ctx->bc);
8977 r = r600_bytecode_add_vtx_tc(ctx->bc, &vtx);
8980 cf = ctx->bc->cf_last;
8998 r = r600_bytecode_add_alu(ctx->bc, &alu);
9037 egcm_load_index_reg(ctx->bc, 1, false);
9048 r = r600_bytecode_add_alu(ctx->bc, &alu);
9075 r = r600_bytecode_add_alu(ctx->bc, &alu);
9079 r600_bytecode_add_cfinst(ctx->bc, CF_OP_MEM_RAT);
9080 cf = ctx->bc->cf_last;
9098 cf->output.type = r600_bytecode_write_export_ack_type(ctx->bc, true);
9099 r600_bytecode_add_ack(ctx->bc);
9133 r = r600_bytecode_add_alu(ctx->bc, &alu);
9141 egcm_load_index_reg(ctx->bc, 1, false);
9143 r600_bytecode_add_cfinst(ctx->bc, CF_OP_MEM_RAT);
9144 cf = ctx->bc->cf_last;
9149 cf->output.type = r600_bytecode_write_export_ack_type(ctx->bc, true);
9159 r600_bytecode_add_ack(ctx->bc);
9179 r = r600_bytecode_add_alu(ctx->bc, &alu);
9210 r = r600_bytecode_add_alu(ctx->bc, &alu);
9226 r = r600_bytecode_add_alu(ctx->bc, &alu);
9284 r = r600_bytecode_add_alu(ctx->bc, &alu);
9291 if (ctx->bc->gfx_level == CAYMAN)
9298 r = r600_bytecode_add_alu(ctx->bc, &alu);
9309 r = r600_bytecode_add_alu(ctx->bc, &alu);
9315 egcm_load_index_reg(ctx->bc, 1, false);
9316 r600_bytecode_add_cfinst(ctx->bc, CF_OP_MEM_RAT);
9317 cf = ctx->bc->cf_last;
9332 r600_bytecode_add_ack(ctx->bc);
9333 r600_bytecode_wait_acks(ctx->bc);
9366 r = r600_bytecode_add_vtx_tc(ctx->bc, &vtx);
9369 cf = ctx->bc->cf_last;
9412 bool is_cm = (ctx->bc->gfx_level == CAYMAN);
9434 r = r600_bytecode_add_alu(ctx->bc, &alu);
9445 r = r600_bytecode_add_alu(ctx->bc, &alu);
9463 r = r600_bytecode_add_alu(ctx->bc, &alu);
9474 r = r600_bytecode_add_alu(ctx->bc, &alu);
9499 r = r600_bytecode_add_gds(ctx->bc, &gds);
9502 ctx->bc->cf_last->vpm = 1;
9551 r = r600_bytecode_add_alu(ctx->bc, &alu);
9564 r = r600_bytecode_add_alu(ctx->bc, &alu);
9595 if (ctx->bc->gfx_level < EVERGREEN)
9612 egcm_load_index_reg(ctx->bc, 1, false);
9630 r = r600_bytecode_add_alu(ctx->bc, &alu);
9651 r = r600_bytecode_add_tex(ctx->bc, &tex);
9683 r = r600_bytecode_add_alu(ctx->bc, &alu);
9707 r = r600_bytecode_add_alu(ctx->bc, &alu);
9728 r = r600_bytecode_add_alu(ctx->bc, &alu);
9759 r = r600_bytecode_add_alu(ctx->bc, &alu);
9807 r = r600_bytecode_add_alu(ctx->bc, &alu);
9836 r = r600_bytecode_add_alu(ctx->bc, &alu);
9861 r = r600_bytecode_add_alu(ctx->bc, &alu);
9865 if (ctx->bc->gfx_level == CAYMAN) {
9875 r = r600_bytecode_add_alu(ctx->bc, &alu);
9888 r = r600_bytecode_add_alu(ctx->bc, &alu);
9912 r = r600_bytecode_add_alu(ctx->bc, &alu);
9919 if (ctx->bc->gfx_level == CAYMAN) {
9932 r = r600_bytecode_add_alu(ctx->bc, &alu);
9947 r = r600_bytecode_add_alu(ctx->bc, &alu);
9965 r = r600_bytecode_add_alu(ctx->bc, &alu);
9981 if (ctx->bc->gfx_level == CAYMAN) {
9995 r = r600_bytecode_add_alu(ctx->bc, &alu);
10011 r = r600_bytecode_add_alu(ctx->bc, &alu);
10025 r = r600_bytecode_add_alu(ctx->bc, &alu);
10033 if (ctx->bc->gfx_level == CAYMAN) {
10048 r = r600_bytecode_add_alu(ctx->bc, &alu);
10064 r = r600_bytecode_add_alu(ctx->bc, &alu);
10080 r = r600_bytecode_add_alu(ctx->bc, &alu);
10084 if (ctx->bc->gfx_level == CAYMAN) {
10098 r = r600_bytecode_add_alu(ctx->bc, &alu);
10113 r = r600_bytecode_add_alu(ctx->bc, &alu);
10118 if (ctx->bc->gfx_level == CAYMAN) {
10132 r = r600_bytecode_add_alu(ctx->bc, &alu);
10147 r = r600_bytecode_add_alu(ctx->bc, &alu);
10167 r = r600_bytecode_add_alu(ctx->bc, &alu);
10174 if (ctx->bc->gfx_level == CAYMAN) {
10189 r = r600_bytecode_add_alu(ctx->bc, &alu);
10205 r = r600_bytecode_add_alu(ctx->bc, &alu);
10224 r = r600_bytecode_add_alu(ctx->bc, &alu);
10266 r = r600_bytecode_add_alu(ctx->bc, &alu);
10272 ctx->bc->index_loaded[inst->Dst[0].Register.Index - 1] = 0;
10274 ctx->bc->ar_loaded = 0;
10289 alu.dst.sel = ctx->bc->ar_reg;
10296 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
10303 alu.src[0].sel = ctx->bc->ar_reg;
10304 alu.dst.sel = ctx->bc->ar_reg;
10311 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
10318 alu.dst.sel = ctx->bc->ar_reg;
10326 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
10334 alu.dst.sel = ctx->bc->ar_reg;
10341 if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
10351 ctx->bc->ar_loaded = 0;
10380 r = r600_bytecode_add_alu(ctx->bc, &alu);
10408 r = r600_bytecode_add_alu_type(ctx->bc, &alu, alu_type);
10416 unsigned force_pop = ctx->bc->force_add_cf;
10420 if (ctx->bc->cf_last) {
10421 if (ctx->bc->cf_last->op == CF_OP_ALU)
10423 else if (ctx->bc->cf_last->op == CF_OP_ALU_POP_AFTER)
10428 ctx->bc->cf_last->op = CF_OP_ALU_POP_AFTER;
10429 ctx->bc->force_add_cf = 1;
10431 ctx->bc->cf_last->op = CF_OP_ALU_POP2_AFTER;
10432 ctx->bc->force_add_cf = 1;
10439 r600_bytecode_add_cfinst(ctx->bc, CF_OP_POP);
10440 ctx->bc->cf_last->pop_count = pops;
10441 ctx->bc->cf_last->cf_addr = ctx->bc->cf_last->id + 2;
10450 struct r600_stack_info *stack = &ctx->bc->stack;
10459 switch (ctx->bc->gfx_level) {
10517 --ctx->bc->stack.push;
10518 assert(ctx->bc->stack.push >= 0);
10521 --ctx->bc->stack.push_wqm;
10522 assert(ctx->bc->stack.push_wqm >= 0);
10525 --ctx->bc->stack.loop;
10526 assert(ctx->bc->stack.loop >= 0);
10538 ++ctx->bc->stack.push;
10541 ++ctx->bc->stack.push_wqm;
10544 ++ctx->bc->stack.loop;
10555 struct r600_cf_stack_entry *sp = &ctx->bc->fc_stack[fc_sp];
10559 sp->mid[sp->num_mid] = ctx->bc->cf_last;
10565 assert(ctx->bc->fc_sp < ARRAY_SIZE(ctx->bc->fc_stack));
10566 ctx->bc->fc_stack[ctx->bc->fc_sp].type = type;
10567 ctx->bc->fc_stack[ctx->bc->fc_sp].start = ctx->bc->cf_last;
10568 ctx->bc->fc_sp++;
10573 struct r600_cf_stack_entry *sp = &ctx->bc->fc_stack[ctx->bc->fc_sp - 1];
10579 ctx->bc->fc_sp--;
10585 r600_bytecode_add_cfinst(ctx->bc, CF_OP_RETURN));
10592 r600_bytecode_add_cfinst(ctx->bc, CF_OP_JUMP));
10593 ctx->bc->cf_last->pop_count = pops;
10621 r600_bytecode_add_cfinst(ctx->bc, ctx->inst_info->op);
10622 ctx->bc->cf_last->pop_count = 1;
10637 if (ctx->bc->gfx_level == CAYMAN && ctx->bc->stack.loop > 1)
10640 if (ctx->bc->gfx_level == EVERGREEN && ctx_needs_stack_workaround_8xx(ctx)) {
10641 unsigned dmod1 = (elems - 1) % ctx->bc->stack.entry_size;
10642 unsigned dmod2 = (elems) % ctx->bc->stack.entry_size;
10653 r600_bytecode_add_cfinst(ctx->bc, CF_OP_PUSH);
10654 ctx->bc->cf_last->cf_addr = ctx->bc->cf_last->id + 2;
10660 r600_bytecode_add_cfinst(ctx->bc, CF_OP_JUMP);
10684 r600_bytecode_add_cfinst(ctx->bc, CF_OP_ELSE);
10685 ctx->bc->cf_last->pop_count = 1;
10687 fc_set_mid(ctx, ctx->bc->fc_sp - 1);
10688 ctx->bc->fc_stack[ctx->bc->fc_sp - 1].start->cf_addr = ctx->bc->cf_last->id;
10696 if (ctx->bc->fc_stack[ctx->bc->fc_sp - 1].type != FC_IF) {
10702 if (ctx->bc->cf_last->eg_alu_extended)
10705 if (ctx->bc->fc_stack[ctx->bc->fc_sp - 1].mid == NULL) {
10706 ctx->bc->fc_stack[ctx->bc->fc_sp - 1].start->cf_addr = ctx->bc->cf_last->id + offset;
10707 ctx->bc->fc_stack[ctx->bc->fc_sp - 1].start->pop_count = 1;
10709 ctx->bc->fc_stack[ctx->bc->fc_sp - 1].mid[0]->cf_addr = ctx->bc->cf_last->id + offset;
10721 r600_bytecode_add_cfinst(ctx->bc, CF_OP_LOOP_START_DX10);
10734 r600_bytecode_add_cfinst(ctx->bc, CF_OP_LOOP_END);
10736 if (ctx->bc->fc_stack[ctx->bc->fc_sp - 1].type != FC_LOOP) {
10746 ctx->bc->cf_last->cf_addr = ctx->bc->fc_stack[ctx->bc->fc_sp - 1].start->id + 2;
10748 ctx->bc->fc_stack[ctx->bc->fc_sp - 1].start->cf_addr = ctx->bc->cf_last->id + 2;
10750 for (i = 0; i < ctx->bc->fc_stack[ctx->bc->fc_sp - 1].num_mid; i++) {
10751 ctx->bc->fc_stack[ctx->bc->fc_sp - 1].mid[i]->cf_addr = ctx->bc->cf_last->id;
10763 for (fscp = ctx->bc->fc_sp; fscp > 0; fscp--)
10765 if (FC_LOOP == ctx->bc->fc_stack[fscp - 1].type)
10774 r600_bytecode_add_cfinst(ctx->bc, ctx->inst_info->op);
10790 r = r600_bytecode_add_cfinst(ctx->bc, ctx->inst_info->op);
10792 ctx->bc->cf_last->count = stream; // Count field for CUT/EMIT_VERTEX indicates which stream
10823 r = emit_mul_int_op(ctx->bc, &alu);
10845 r = r600_bytecode_add_alu(ctx->bc, &alu);
10866 r = r600_bytecode_add_alu(ctx->bc, &alu);
10872 r = r600_bytecode_add_alu(ctx->bc, &alu);
10892 r = r600_bytecode_add_alu(ctx->bc, &alu);
10915 r = r600_bytecode_add_alu(ctx->bc, &alu);
10929 r = r600_bytecode_add_alu(ctx->bc, &alu);
10943 r = r600_bytecode_add_alu(ctx->bc, &alu);
10980 r = r600_bytecode_add_alu(ctx->bc, &alu);
11002 r = r600_bytecode_add_alu(ctx->bc, &alu);
11020 r = r600_bytecode_add_alu(ctx->bc, &alu);
11028 r = r600_bytecode_add_alu(ctx->bc, &alu);
11058 r = r600_bytecode_add_alu(ctx->bc, &alu);
11072 r = r600_bytecode_add_alu(ctx->bc, &alu);
11087 r = r600_bytecode_add_alu(ctx->bc, &alu);
11101 r = r600_bytecode_add_alu(ctx->bc, &alu);
11127 r = r600_bytecode_add_alu(ctx->bc, &alu);
11139 r = r600_bytecode_add_alu(ctx->bc, &alu);
11152 r = r600_bytecode_add_alu(ctx->bc, &alu);
11164 r = r600_bytecode_add_alu(ctx->bc, &alu);
11173 r = r600_bytecode_add_alu(ctx->bc, &alu);
11197 r = r600_bytecode_add_alu(ctx->bc, &alu);
11209 r = r600_bytecode_add_alu(ctx->bc, &alu);
11222 r = r600_bytecode_add_alu(ctx->bc, &alu);
11234 r = r600_bytecode_add_alu(ctx->bc, &alu);
11243 r = r600_bytecode_add_alu(ctx->bc, &alu);
11268 r = emit_mul_int_op(ctx->bc, &alu);
11280 r = emit_mul_int_op(ctx->bc, &alu);
11292 r = emit_mul_int_op(ctx->bc, &alu);
11304 r = emit_mul_int_op(ctx->bc, &alu);
11319 r = r600_bytecode_add_alu(ctx->bc, &alu);
11334 r = r600_bytecode_add_alu(ctx->bc, &alu);
11344 r = r600_bytecode_add_alu(ctx->bc, &alu);
11355 r = r600_bytecode_add_alu(ctx->bc, &alu);
11722 r = r600_bytecode_add_alu(ctx->bc, &alu);
11732 r = r600_bytecode_add_alu(ctx->bc, &alu);
11752 r = r600_bytecode_add_alu(ctx->bc, &alu);
11764 r = r600_bytecode_add_alu(ctx->bc, &alu);
11776 r = r600_bytecode_add_alu(ctx->bc, &alu);