r300/compiler: fix handling of indexed temporaries in peephole

This commit is contained in:
Marek Olšák 2010-09-02 10:21:52 +02:00
parent aa554d508b
commit 33360a707e
1 changed files with 9 additions and 1 deletions

View File

@ -89,6 +89,12 @@ static void peephole_scan_read(void * data, struct rc_instruction * inst,
{
struct peephole_state * s = data;
/* XXX This could probably be handled better. */
if (file == RC_FILE_ADDRESS) {
s->Conflict = 1;
return;
}
if (file != RC_FILE_TEMPORARY || index != s->Mov->U.I.DstReg.Index)
return;
@ -144,7 +150,9 @@ static void peephole(struct radeon_compiler * c, struct rc_instruction * inst_mo
{
struct peephole_state s;
if (inst_mov->U.I.DstReg.File != RC_FILE_TEMPORARY || inst_mov->U.I.WriteALUResult)
if (inst_mov->U.I.DstReg.File != RC_FILE_TEMPORARY ||
inst_mov->U.I.DstReg.RelAddr ||
inst_mov->U.I.WriteALUResult)
return;
memset(&s, 0, sizeof(s));