Home | History | Annotate | Download | only in SelectionDAG

Lines Matching refs:BUILD_VECTOR

625 /// isConstantSplatVector - Returns true if N is a BUILD_VECTOR node whose
1266 case ISD::BUILD_VECTOR: return visitBUILD_VECTOR(N);
1720 if (!LegalOperations || TLI.isOperationLegal(ISD::BUILD_VECTOR, VT))
4623 Cond.getOpcode() == ISD::BUILD_VECTOR);
4727 // Fold (vselect (build_vector all_ones), N1, N2) -> N1
4730 // Fold (vselect (build_vector all_zeros), N1, N2) -> N2
4735 // checks for (vselect (build_vector all{ones,zeros) ...) have been made
4795 // dag node into a ConstantSDNode or a build_vector of constants.
4799 // avoid introducing illegal build_vector dag nodes.
4816 // fold (sext (build_vector AllConstants) -> (build_vector AllConstants)
4817 // fold (zext (build_vector AllConstants) -> (build_vector AllConstants)
4818 // fold (aext (build_vector AllConstants) -> (build_vector AllConstants)
4825 // We can fold this node into a build_vector.
4850 return DAG.getNode(ISD::BUILD_VECTOR, DL, VT, Elts).getNode();
5405 DAG.getNode(ISD::BUILD_VECTOR, SDLoc(N), VT,
5423 DAG.getNode(ISD::BUILD_VECTOR, SDLoc(N), VT, OneOps));
5931 // Fold a sext_inreg of a build_vector of ConstantSDNodes or undefs
5932 // into a build_vector.
5951 return DAG.getNode(ISD::BUILD_VECTOR, SDLoc(N), VT, Elts);
6031 N0.getOperand(0).getOpcode() == ISD::BUILD_VECTOR &&
6052 return DAG.getNode(ISD::BUILD_VECTOR, SDLoc(N), VT, Opnds);
6183 // If the input is a BUILD_VECTOR with all constant elements, fold this now.
6188 N0.getOpcode() == ISD::BUILD_VECTOR && N0.getNode()->hasOneUse() &&
6331 /// ConstantFoldBITCASTofBUILD_VECTOR - We know that BV is a build_vector
6360 // If the vector element type is not legal, the BUILD_VECTOR operands
6368 return DAG.getNode(ISD::BUILD_VECTOR, SDLoc(BV), VT, Ops);
6424 return DAG.getNode(ISD::BUILD_VECTOR, SDLoc(BV), VT, Ops);
6460 return DAG.getNode(ISD::BUILD_VECTOR, SDLoc(BV), VT, Ops);
9720 // If we can't generate a legal BUILD_VECTOR, exit
9721 if (LegalOperations && !TLI.isOperationLegal(ISD::BUILD_VECTOR, VT))
9750 // Check that the operand is a BUILD_VECTOR (or UNDEF, which can essentially
9751 // be converted to a BUILD_VECTOR). Fill in the Ops vector with the
9756 if (InVec.getOpcode() == ISD::BUILD_VECTOR && InVec.hasOneUse()) {
9768 // All the operands of BUILD_VECTOR must have the same type;
9779 return DAG.getNode(ISD::BUILD_VECTOR, dl, VT, Ops);
9910 if (SVInVec.getOpcode() == ISD::BUILD_VECTOR) {
9962 // Perform only after legalization to ensure build_vector / vector_shuffle
10048 // Check to see if this is a BUILD_VECTOR of a bunch of values
10050 // a new BUILD_VECTOR using bit-casts which may enable other BUILD_VECTOR
10095 // Create a new simpler BUILD_VECTOR sequence which other optimizations can
10109 // Populate the new build_vector
10127 // The type of the new BUILD_VECTOR node.
10134 // Make the new BUILD_VECTOR.
10135 SDValue BV = DAG.getNode(ISD::BUILD_VECTOR, dl, VecVT, Ops);
10137 // The new BUILD_VECTOR node has the potential to be further optimized.
10172 // simplify BUILD_VECTOR of integer types.
10203 SDValue BV = DAG.getNode(ISD::BUILD_VECTOR, dl, NVT, Opnds);
10226 // Check to see if this is a BUILD_VECTOR of a bunch of EXTRACT_VECTOR_ELT
10322 // Only type-legal BUILD_VECTOR nodes are converted to shuffle nodes.
10377 // fold (concat_vectors (BUILD_VECTOR A, B, ...), (BUILD_VECTOR C, D, ...))
10378 // -> (BUILD_VECTOR A, B, ..., C, D, ...)
10380 N->getOperand(0).getOpcode() == ISD::BUILD_VECTOR &&
10381 N->getOperand(1).getOpcode() == ISD::BUILD_VECTOR) {
10396 // If BUILD_VECTOR are from built from integer, they may have different
10407 return DAG.getNode(ISD::BUILD_VECTOR, SDLoc(N), VT, Opnds);
10628 // build_vector with all scalar elements the same.
10642 if (V->getOpcode() == ISD::BUILD_VECTOR) {
10644 "BUILD_VECTOR has wrong number of operands");
10809 if (RHS.getOpcode() == ISD::BUILD_VECTOR) {
10834 SDValue Zero = DAG.getNode(ISD::BUILD_VECTOR, SDLoc(N), RVT, ZeroOps);
10854 // If the LHS and RHS are BUILD_VECTOR nodes, see if we can constant fold
10856 if (LHS.getOpcode() == ISD::BUILD_VECTOR &&
10857 RHS.getOpcode() == ISD::BUILD_VECTOR) {
10881 // Integer BUILD_VECTOR operands may have types larger than the element
10903 return DAG.getNode(ISD::BUILD_VECTOR, SDLoc(N), LHS.getValueType(), Ops);
10937 if (N0.getOpcode() != ISD::BUILD_VECTOR)
10940 // Operand is a BUILD_VECTOR node, see if we can constant fold it.
10959 return DAG.getNode(ISD::BUILD_VECTOR, SDLoc(N), N0.getValueType(), Ops);