[DAG] add FIXME comments for splat detection; NFC
authorSanjay Patel <spatel@rotateright.com>
Wed, 26 Apr 2017 13:27:57 +0000 (13:27 +0000)
committerSanjay Patel <spatel@rotateright.com>
Wed, 26 Apr 2017 13:27:57 +0000 (13:27 +0000)
llvm-svn: 301403

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp

index f30c581..63db98a 100644 (file)
@@ -7640,6 +7640,8 @@ bool BuildVectorSDNode::isConstantSplat(APInt &SplatValue, APInt &SplatUndef,
   if (MinSplatBits > VecWidth)
     return false;
 
+  // FIXME: The widths are based on this node's type, but build vectors can
+  // truncate their operands. 
   SplatValue = APInt(VecWidth, 0);
   SplatUndef = APInt(VecWidth, 0);
 
@@ -7669,6 +7671,8 @@ bool BuildVectorSDNode::isConstantSplat(APInt &SplatValue, APInt &SplatUndef,
   // The build_vector is all constants or undefs. Find the smallest element
   // size that splats the vector.
   HasAnyUndefs = (SplatUndef != 0);
+
+  // FIXME: This does not work for vectors with elements less than 8 bits.
   while (VecWidth > 8) {
     unsigned HalfSize = VecWidth / 2;
     APInt HighValue = SplatValue.lshr(HalfSize).trunc(HalfSize);
index afcdb6c..18b238d 100644 (file)
@@ -1364,6 +1364,9 @@ unsigned TargetLowering::ComputeNumSignBitsForTargetNode(SDValue Op,
   return 1;
 }
 
+// FIXME: Ideally, this would use ISD::isConstantSplatVector(), but that must
+// work with truncating build vectors and vectors with elements of less than
+// 8 bits.
 bool TargetLowering::isConstTrueVal(const SDNode *N) const {
   if (!N)
     return false;