This patch is : reviewed-by: Vincent Lejeune
- Mail original -
> De : Tom Stellard
> À : Vincent Lejeune
> Cc : "mesa-dev@lists.freedesktop.org" ;
> "llvm-comm...@cs.uiuc.edu" ; Tom Stellard
>
> Envoyé le : Jeudi 14 novembre 2013 1h53
> Objet : Re: [PATCH] R600: Make sure OQAP defs
Hi Vincent,
Here is an updated patch where I added a call to
SubstituteKCacheBank() in canClauseLocalKillFitInClause() This should
prevent OQAP uses and defs from being split because of constant bank
limitations.
Maybe we can leave the ScheduleDAGMutation optimization as a future
TODO.
-Tom
On
I have put some comments below but otherwise the patch is
reviewed-by: Vincent Lejeune
>-- next part --
>>From 2eb4673e3184af0e077cbe30a594602441e8d98e Mon Sep 17 00:00:00 2001 >From:
>>Tom Stellard
>Date: Thu, 5 Sep 2013 08:59:32 -0700
>Subject: [PATCH] R600: Fix sched
Hi Vincent,
It turns out that it's not possible to correctly schedule uses and defs
of the OQAP register without proper alias analysis in the MachineScheduler. See
the explanation in the lds-output-queue.ll test case.
Here is an updated patch that fixes all the outstanding LDS scheduling
bugs th
This patch should work when checking than no OQAP is used before beeing queued,
assuming that a value in OQAP is consumed
and cannot be read twice. However I'm not sure I cover all LDS instructions
that queues a value, I only use LDS_RET_READ in switch case.
Vincent
- Mail original -
Hi Vincent,
Here is an updated patch. I wasn't sure where to put the assertion to
check that UnscheduledNoLiveOut{Defs,Uses} is empty when switching to a
new clause. I tried adding it to R600SchedStartegy::schedNode() behind
the if (NextInstKind != CurInstKind) condition, but it always failed.
A
- Mail original -
> De : Tom Stellard
> À : llvm-comm...@cs.uiuc.edu
> Cc : mesa-dev@lists.freedesktop.org; Tom Stellard
> Envoyé le : Vendredi 11 octobre 2013 20h10
> Objet : [PATCH] R600: Make sure OQAP defs and uses happen in the same clause
>
> From: Tom Stellard
>
> Reading th
From: Tom Stellard
Reading the special OQAP register pops the top value off the LDS
input queue and returns it to the instruction. This queue is
invalidated at the end of an ALU clause and leaving values in the queue
can lead to GPU hangs. This means that if we load a value into the queue,
we m