[LLVMdev] [llvm-commits] [llvm] r65296 - in /llvm/trunk: include/llvm/CodeGen/ lib/CodeGen/SelectionDAG/ lib/Target/CellSPU/ lib/Target/PowerPC/ lib/Target/X86/ test/CodeGen/X86/

Scott Michel scooter.phd at gmail.com
Mon Feb 23 23:38:48 PST 2009


On Mon, Feb 23, 2009 at 11:13 PM, Chris Lattner <clattner at apple.com> wrote:

>
> On Feb 23, 2009, at 10:30 PM, Scott Michel wrote:
>
> On Mon, Feb 23, 2009 at 8:26 PM, Chris Lattner <clattner at apple.com> wrote:
>
>>
>> On Feb 23, 2009, at 6:13 PM, Scott Michel wrote:
>>
>> On Mon, Feb 23, 2009 at 4:03 PM, Nate Begeman <natebegeman at me.com> wrote:
>>
>>>
>>> It's basically as  Chris said; there will be a ShuffleVectorSDNode, and
>>> appropriate helper functions, node profile, and DAGCombiner support.
>>>
>>
>> Fine. For vector shuffles. But again, what about vector constants, e.g.,
>> v4i32 <0, 1, 2, 3, 4>? BuildVectorSDNode is still a reasonable subclass to
>> have for encapsulating constant vectors (should be renamed, but hey, it's
>> what it's called today.)
>>
>>
>> You're talking about two very very very different things: shuffle_vector
>> "masks" and constant vectors.
>>
>
> Yup. That's why I was absolutely mystified when you proposed the following:
>
> 2. Move the functionality of "is splat" etc to method somewhere, e.g. on
> SDNode.
> 3. Introduce a new ShuffleVectorSDNode that only has two SDValue operands
> (the two input vectors), but that also contains an array of ints in the node
> (not as operands).
> 4. Move the helper functions from #2 back into ShuffleVectorSDNode.
>
> #4 is the part that completely mystifies me. I reckon that I could almost
> live with #2, as much I see it as being unsound software engineering and
> more of a performance optimization.
>
>
> I don't see how it is relevant.  The representation of constants and splat
> masks should be *complete different*.  If you want to see if a shuffle mask
> is a splat and/or if a constant vector is a splat, then you'd need different
> code for both.
>

Because, Chris, these are your exact words -- move the constant splat code
to somewhere, e.g., on SDNode then move those (constant splat code)
functions to ShuffleVectorSDNode. That's how I read your steps. Hence my
incredulity.


-scooter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090223/0fefbbf5/attachment.html>


More information about the llvm-dev mailing list