[PATCH] [X86] Try to combine vector anyext + and into a vector	zext
    Michael Kuperstein 
    michael.m.kuperstein at intel.com
       
    Mon Feb 16 07:26:22 PST 2015
    
    
  
Thanks a lot for the review, Andrea!
You're right, it deserves its own function.
Regarding legalization - I think it should be guarded by BeforeLegalizeOps(), I've accidentally put it before the guard. 
I could make it BeforeLegalize(), but that's probably a bit redundant, since, at least for the cases I've looked at the vector_shuffle in question is created as part of vector ops legalization.
================
Comment at: lib/Target/X86/X86ISelLowering.cpp:24668-24669
@@ +24667,4 @@
+      N0.getOperand(0).getOpcode() == ISD::VECTOR_SHUFFLE &&
+      (N1.getOpcode() == ISD::BUILD_VECTOR ||
+       N1.getOpcode() == ISD::BITCAST)) {
+
----------------
andreadb wrote:
> I think you can remove these two checks.
> Your algorithm already checks (between line 24682 and 24686) that N1 is a build_vector or a bitcast of a build_vector.
Right, either the check here or the second check (in 24685) is redundant.
I'd rather remove the check in 24685, to be honest.
================
Comment at: lib/Target/X86/X86ISelLowering.cpp:24691
@@ +24690,3 @@
+    bool HasAnyUndefs;
+    BuildVectorSDNode *Vector = dyn_cast<BuildVectorSDNode>(Splat);
+    if (!Vector->isConstantSplat(SplatValue, SplatUndef,
----------------
andreadb wrote:
> You don't need a dyn_cast here. Node Splat can only be an ISD::BUILD_VECTOR at this point.
> I think you can safely use a 'cast' here.
Right.
http://reviews.llvm.org/D7666
EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
    
    
More information about the llvm-commits
mailing list