On Mon, Mar 02, 2015 at 02:09:29PM -0800, Matt Arsenault wrote:
> 
> > On Mar 2, 2015, at 1:19 PM, Tom Stellard <t...@stellard.net> wrote:
> > 
> > On Mon, Mar 02, 2015 at 10:14:00PM +0100, Marek Olšák wrote:
> >> On Mon, Mar 2, 2015 at 10:05 PM, Tom Stellard <t...@stellard.net> wrote:
> >>> On Mon, Mar 02, 2015 at 12:54:16PM +0100, Marek Olšák wrote:
> >>>> From: Marek Olšák <marek.ol...@amd.com>
> >>>> 
> >>>> ---
> >>>> src/gallium/drivers/radeonsi/si_shader.c | 22 ++++++++++++++++------
> >>>> 1 file changed, 16 insertions(+), 6 deletions(-)
> >>>> 
> >>>> diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
> >>>> b/src/gallium/drivers/radeonsi/si_shader.c
> >>>> index b0417ed..f125483 100644
> >>>> --- a/src/gallium/drivers/radeonsi/si_shader.c
> >>>> +++ b/src/gallium/drivers/radeonsi/si_shader.c
> >>>> @@ -192,6 +192,20 @@ static int get_param_index(unsigned semantic_name, 
> >>>> unsigned index,
> >>>> }
> >>>> 
> >>>> /**
> >>>> + * BitField Extract: ((value >> rshift) & ((1 << bitwidth) - 1))
> >>>> + */
> >>> 
> >>> Ideally, we would just add a pattern for this in the backend and emit 
> >>> generic
> >>> LLVM IR here.  This would also make it possible to share the code with 
> >>> llvmpipe.
> >>> 
> >>> I think the best place to do this would be in 
> >>> AMDGPUTargetLowering::performDAGCombine().
> >> 
> >> Why not SIInstructions.td?
> >> 
> > 
> > Because for patterns like this, I think it is important to match them as
> > early as possible, because there may be another optimization which reduces
> > the sequence from 5 to 4 instructions which would cause the pattern not to 
> > match.
> > 
> > -Tom
> 
> 
> I think the opposite in this case. The basic bit operations have a lot of 
> existing combines on them, and the computeKnownBits implementations are more 
> complete. The BFE nodes are not as well understood, and trickier to deal 
> with. AArch64 and NVPTX both have essentially the same instruction, and they 
> have a large bit of code to match them in their ISelDAGToDAGs. I’ve wanted to 
> add a generic BFE node to be matched after legalization, but I haven’t had 
> time to do it.
> 

Isn't there a potential for a DAG combine on bit operations, to 'break'
the pattern so it can't be recognized?

-Tom

> -Matt
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to