[llvm] r295782 - DAG: Check if extract_vector_elt is legal or custom

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 21 16:47:20 PST 2017


> On Feb 21, 2017, at 16:39, Friedman, Eli via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> On 2/21/2017 2:47 PM, Matt Arsenault via llvm-commits wrote:
>> Author: arsenm
>> Date: Tue Feb 21 16:47:27 2017
>> New Revision: 295782
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=295782&view=rev
>> Log:
>> DAG: Check if extract_vector_elt is legal or custom
>> 
>> Avoids test regressions in future AMDGPU commits when
>> more vector types are custom lowered.
>> 
>> Modified:
>>     llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
>> 
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=295782&r1=295781&r2=295782&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Tue Feb 21 16:47:27 2017
>> @@ -7882,7 +7882,7 @@ SDValue DAGCombiner::visitTRUNCATE(SDNod
>>      EVT SrcVT = VecSrc.getValueType();
>>      if (SrcVT.isVector() && SrcVT.getScalarType() == VT &&
>>          (!LegalOperations ||
>> -         TLI.isOperationLegal(ISD::EXTRACT_VECTOR_ELT, SrcVT))) {
>> +         TLI.isOperationLegalOrCustom(ISD::EXTRACT_VECTOR_ELT, SrcVT))) {
>>        SDLoc SL(N);
>>          EVT IdxVT = TLI.getVectorIdxTy(DAG.getDataLayout());
>> 
> 
> This doesn't work.  If LegalOperations is true, we're creating an operation which isn't legal after the legalizer has run, so a operation marked CUSTOM could fail to match.  (For example, on AArch64, we custom-lower EXTRACT_VECTOR_ELT on 64-bit vectors by widening them to 128-bit vectors.)
> 
> If you're running into trouble with this, maybe it makes sense to add a specific helper here, along the lines of isShuffleMaskLegal?
> 
> -Eli

I don’t think that’s true since r214020? The pattern of checking isLegalOrCustom is repeated in a variety of places (I’m not sure we even really want to use isLegal anywhere anymore)

-Matt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170221/1dcc10f4/attachment.html>


More information about the llvm-commits mailing list