[llvm-commits] [llvm] r70391 - in /llvm/trunk: include/llvm/CodeGen/SelectionDAGNodes.h lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Nate Begeman natebegeman at me.com
Wed Apr 29 15:49:32 PDT 2009


Yes.  A rewrite of the VECTOR_SHUFFLE dag combine code is coming; the  
old code was both ineffectual and didn't keep nodes canonicalized.

Nate

On Apr 29, 2009, at 2:31 PM, Evan Cheng wrote:

> I still see this:
>
> SDValue DAGCombiner::visitVECTOR_SHUFFLE(SDNode *N) {
>   return SDValue();
> ...
>
> Is the transformations disabled on purpose?
>
> Evan
>
> On Apr 29, 2009, at 11:13 AM, Nate Begeman wrote:
>
>> Author: sampo
>> Date: Wed Apr 29 13:13:31 2009
>> New Revision: 70391
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=70391&view=rev
>> Log:
>> Update comment, replace theoretically impossible check with an  
>> assert.
>>
>> Modified:
>>   llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h
>>   llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=70391&r1=70390&r2=70391&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> = 
>> =====================================================================
>> --- llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Wed Apr 29
>> 13:13:31 2009
>> @@ -317,13 +317,13 @@
>>    /// IDX, which must be a multiple of the result vector length.
>>    EXTRACT_SUBVECTOR,
>>
>> -    /// VECTOR_SHUFFLE(VEC1, VEC2, SHUFFLEVEC) - Returns a vector,
>> of the same
>> -    /// type as VEC1/VEC2.  SHUFFLEVEC is a BUILD_VECTOR of
>> constant int values
>> -    /// (maybe of an illegal datatype) or undef that indicate which
>> value each
>> -    /// result element will get.  The elements of VEC1/VEC2 are
>> enumerated in
>> -    /// order.  This is quite similar to the Altivec 'vperm'
>> instruction, except
>> -    /// that the indices must be constants and are in terms of the
>> element size
>> -    /// of VEC1/VEC2, not in terms of bytes.
>> +    /// VECTOR_SHUFFLE(VEC1, VEC2) - Returns a vector, of the same
>> type as
>> +    /// VEC1/VEC2.  A VECTOR_SHUFFLE node also contains an array of
>> constant int
>> +    /// values that indicate which value (or undef) each result
>> element will
>> +    /// get.  These constant ints are accessible through the
>> +    /// ShuffleVectorSDNode class.  This is quite similar to the
>> Altivec
>> +    /// 'vperm' instruction, except that the indices must be
>> constants and are
>> +    /// in terms of the element size of VEC1/VEC2, not in terms of
>> bytes.
>>    VECTOR_SHUFFLE,
>>
>>    /// SCALAR_TO_VECTOR(VAL) - This represents the operation of
>> loading a
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=70391&r1=70390&r2=70391&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> = 
>> =====================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Wed Apr 29
>> 13:13:31 2009
>> @@ -5731,9 +5731,7 @@
>>  for (i = 0, e = VT.getVectorNumElements(); i != e && Mask[i] < 0; +
>> +i)
>>    /* search */;
>>
>> -  // If we hit the end of the mask looking for a non-undef value,
>> return false.
>> -  if (i == e)
>> -    return false;
>> +  assert(i != e && "VECTOR_SHUFFLE node with all undef indices!");
>>
>>  // Make sure all remaining elements are either undef or the same
>> as the first
>>  // non-undef value.
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list