mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-25 03:58:19 +02:00
nv50: don't produce MOV immediate to output reg in store opt
This commit is contained in:
parent
d7aac107e6
commit
1d1bb20612
2 changed files with 14 additions and 10 deletions
|
|
@ -539,26 +539,26 @@ emit_mov(struct nv_pc *pc, struct nv_instruction *i)
|
|||
pc->emit[1] |= DREG(i->def[0])->id << 4;
|
||||
} else
|
||||
if (SFILE(i, 0) == NV_FILE_IMM) {
|
||||
if (i->opcode == NV_OP_LDA)
|
||||
if (i->opcode == NV_OP_LDA) {
|
||||
emit_ld(pc, i);
|
||||
else {
|
||||
} else {
|
||||
pc->emit[0] = 0x10008001;
|
||||
pc->emit[1] = 0x00000003;
|
||||
|
||||
emit_form_IMM(pc, i, 0);
|
||||
emit_form_IMM(pc, i, 0);
|
||||
}
|
||||
} else {
|
||||
pc->emit[0] = 0x10000000;
|
||||
pc->emit[0] |= DREG(i->def[0])->id << 2;
|
||||
pc->emit[0] |= SREG(i->src[0])->id << 9;
|
||||
|
||||
if (!i->is_long)
|
||||
if (!i->is_long) {
|
||||
pc->emit[0] |= 0x8000;
|
||||
else {
|
||||
} else {
|
||||
pc->emit[0] |= 0x00000001;
|
||||
pc->emit[1] = 0x0403c000;
|
||||
|
||||
set_pred(pc, i);
|
||||
set_pred(pc, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -266,11 +266,10 @@ nv_pass_fold_stores(struct nv_pass *ctx, struct nv_basic_block *b)
|
|||
int j;
|
||||
|
||||
for (sti = b->entry; sti; sti = sti->next) {
|
||||
if (!sti->def[0])
|
||||
if (!sti->def[0] || sti->def[0]->reg.file != NV_FILE_OUT)
|
||||
continue;
|
||||
|
||||
if (sti->def[0]->reg.file != NV_FILE_OUT)
|
||||
continue;
|
||||
/* only handling MOV to $oX here */
|
||||
if (sti->opcode != NV_OP_MOV && sti->opcode != NV_OP_STA)
|
||||
continue;
|
||||
|
||||
|
|
@ -282,8 +281,13 @@ nv_pass_fold_stores(struct nv_pass *ctx, struct nv_basic_block *b)
|
|||
if (nvi->def[0]->refc > 1)
|
||||
continue;
|
||||
|
||||
/* cannot MOV immediate to $oX */
|
||||
if (nvi->src[0]->value->reg.file == NV_FILE_IMM)
|
||||
continue;
|
||||
|
||||
nvi->def[0] = sti->def[0];
|
||||
nvi->fixed = 1;
|
||||
sti->def[0] = NULL;
|
||||
nvi->fixed = sti->fixed;
|
||||
sti->fixed = 0;
|
||||
}
|
||||
DESCEND_ARBITRARY(j, nv_pass_fold_stores);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue