[PATCH] Optimize shufflevector that copies an i64/f64 and zeros the rest.

Elena Demikhovsky elena.demikhovsky at intel.com
Tue May 6 23:32:18 PDT 2014


================
Comment at: lib/Target/X86/X86ISelLowering.cpp:7506
@@ -7508,1 +7505,3 @@
     }
+  } else if ((VT == MVT::v2i64 || VT == MVT::v2f64) && Subtarget->hasSSE2()) {
+    // Emit movq and vmovq to copy an i64 or f64 to a vector and zero the
----------------
You can change the previous "if" and do not duplicate the code.
else if (VT.is128BitVector() && Subtarget->hasSSE2()) {
..
}
and RewriteAsNarrowerShuffle() will return the same node for v2f64 and v2i64.

But the logic is right and the optimization is very good!

http://reviews.llvm.org/D3518






More information about the llvm-commits mailing list