[Mesa-dev] [PATCH 10/12] R600/SI: cleanup literal handling v2

Michel Dänzer michel at daenzer.net
Thu Feb 14 08:05:54 PST 2013


On Don, 2013-02-14 at 16:20 +0100, Christian König wrote: 
> Am 14.02.2013 15:14, schrieb Michel Dänzer:
> > On Don, 2013-02-14 at 14:35 +0100, Michel Dänzer wrote:
> >> On Don, 2013-02-14 at 11:43 +0100, Christian König wrote:
> >>> +    // Only one literal allowed
> >>> +    break;
> >> The same literal could be used for several operands though. :)
> > Basically, it seems like we're pretty close to allowing VSrc for all
> > VOP* source operands, and doing something like the following
> > pseudo-code:
> >
> > for (each VSrc operand) {
> > if (can be encoded as inline constant)
> > use inline constant;
> >
> > if (is immediate &&
> >      (no literal or SGPR yet || value matches literal))
> > use literal;
> >
> > if (is VGPR || (is SGPR && no SGPR or literal yet))
> > use operand directly;
> >
> > copy immediate/SGPR to VGPR and use the latter;
> > }
> >
> > And the corresponding simpler logic for SSrc. But I'm not sure if all of
> > that can be done in this function.
> Yeah, I'm already nearly there (and it also includes folding 
> ABS/NEG/CLAMP/OMOD). But first things first, I encountered some hangs 
> with the current code and those need to be fixed first.

Have you fixed the problem I pointed out with the AMDGPU::CLAMP_SI
lowering? With the code you posted, I got hands and huge breakage all
over the place.


-- 
Earthling Michel Dänzer           |                   http://www.amd.com
Libre software enthusiast         |          Debian, X and DRI developer


More information about the mesa-dev mailing list