+ SDOperand ScalarizeOp_EXTRACT_VECTOR_ELT(SDNode *N);
+ SDOperand ScalarizeOp_STORE(StoreSDNode *N, unsigned OpNo);
+
+ //===--------------------------------------------------------------------===//
+ // Vector Splitting Support: LegalizeTypesSplit.cpp
+ //===--------------------------------------------------------------------===//
+
+ void GetSplitOp(SDOperand Op, SDOperand &Lo, SDOperand &Hi);
+ void SetSplitOp(SDOperand Op, SDOperand Lo, SDOperand Hi);
+
+ // Result Vector Splitting: <128 x ty> -> 2 x <64 x ty>.
+ void SplitResult(SDNode *N, unsigned OpNo);
+
+ void SplitRes_UNDEF(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_LOAD(LoadSDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_BUILD_PAIR(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_INSERT_VECTOR_ELT(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_VECTOR_SHUFFLE(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+
+ void SplitRes_BUILD_VECTOR(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_CONCAT_VECTORS(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_BIT_CONVERT(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_UnOp(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_BinOp(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_FPOWI(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+ void SplitRes_SELECT(SDNode *N, SDOperand &Lo, SDOperand &Hi);
+
+ // Operand Vector Scalarization: <128 x ty> -> 2 x <64 x ty>.
+ bool SplitOperand(SDNode *N, unsigned OpNo);