Home | History | Annotate | Download | only in SelectionDAG

Lines Matching defs:ST

72   SDValue OptimizeFloatStore(StoreSDNode *ST);
300 static void ExpandUnalignedStore(StoreSDNode *ST, SelectionDAG &DAG,
303 assert(ST->getAddressingMode() == ISD::UNINDEXED &&
305 SDValue Chain = ST->getChain();
306 SDValue Ptr = ST->getBasePtr();
307 SDValue Val = ST->getValue();
309 int Alignment = ST->getAlignment();
310 DebugLoc dl = ST->getDebugLoc();
311 if (ST->getMemoryVT().isFloatingPoint() ||
312 ST->getMemoryVT().isVector()) {
319 Result = DAG.getStore(Chain, dl, Result, Ptr, ST->getPointerInfo(),
320 ST->isVolatile(), ST->isNonTemporal(), Alignment);
321 DAGLegalize->ReplaceNode(SDValue(ST, 0), Result);
326 EVT StoredVT = ST->getMemoryVT();
354 ST->getPointerInfo().getWithOffset(Offset),
355 ST->isVolatile(), ST->isNonTemporal(),
356 MinAlign(ST->getAlignment(), Offset)));
376 ST->getPointerInfo()
378 MemVT, ST->isVolatile(),
379 ST->isNonTemporal(),
380 MinAlign(ST->getAlignment(), Offset)));
385 DAGLegalize->ReplaceNode(SDValue(ST, 0), Result);
388 assert(ST->getMemoryVT().isInteger() &&
389 !ST->getMemoryVT().isVector() &&
392 EVT NewStoredVT = ST->getMemoryVT().getHalfSizedIntegerVT(*DAG.getContext());
405 ST->getPointerInfo(), NewStoredVT,
406 ST->isVolatile(), ST->isNonTemporal(), Alignment);
411 ST->getPointerInfo().getWithOffset(IncrementSize),
412 NewStoredVT, ST->isVolatile(), ST->isNonTemporal(),
417 DAGLegalize->ReplaceNode(SDValue(ST, 0), Result);
641 SDValue SelectionDAGLegalize::OptimizeFloatStore(StoreSDNode* ST) {
649 SDValue Chain = ST->getChain();
650 SDValue Ptr = ST->getBasePtr();
651 unsigned Alignment = ST->getAlignment();
652 bool isVolatile = ST->isVolatile();
653 bool isNonTemporal = ST->isNonTemporal();
654 DebugLoc dl = ST->getDebugLoc();
655 if (ConstantFPSDNode *CFP = dyn_cast<ConstantFPSDNode>(ST->getValue())) {
661 return DAG.getStore(Chain, dl, Con, Ptr, ST->getPointerInfo(),
670 return DAG.getStore(Chain, dl, Con, Ptr, ST->getPointerInfo(),
674 if (TLI.isTypeLegal(MVT::i32) && !ST->isVolatile()) {
683 Lo = DAG.getStore(Chain, dl, Lo, Ptr, ST->getPointerInfo(), isVolatile,
688 ST->getPointerInfo().getWithOffset(4),
699 StoreSDNode *ST = cast<StoreSDNode>(Node);
700 SDValue Chain = ST->getChain();
701 SDValue Ptr = ST->getBasePtr();
704 unsigned Alignment = ST->getAlignment();
705 bool isVolatile = ST->isVolatile();
706 bool isNonTemporal = ST->isNonTemporal();
708 if (!ST->isTruncatingStore()) {
709 if (SDNode *OptStore = OptimizeFloatStore(ST).getNode()) {
710 ReplaceNode(ST, OptStore);
715 SDValue Value = ST->getValue();
722 if (!TLI.allowsUnalignedMemoryAccesses(ST->getMemoryVT())) {
723 Type *Ty = ST->getMemoryVT().getTypeForEVT(*DAG.getContext());
725 if (ST->getAlignment() < ABIAlignment)
743 ST->getPointerInfo(), isVolatile,
752 SDValue Value = ST->getValue();
754 EVT StVT = ST->getMemoryVT();
765 DAG.getTruncStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),
785 Lo = DAG.getTruncStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),
797 ST->getPointerInfo().getWithOffset(IncrementSize),
807 Hi = DAG.getTruncStore(Chain, dl, Hi, Ptr, ST->getPointerInfo(),
815 ST->getPointerInfo().getWithOffset(IncrementSize),
824 switch (TLI.getTruncStoreAction(ST->getValue().getSimpleValueType(),
830 if (!TLI.allowsUnalignedMemoryAccesses(ST->getMemoryVT())) {
831 Type *Ty = ST->getMemoryVT().getTypeForEVT(*DAG.getContext());
833 if (ST->getAlignment() < ABIAlignment)
852 DAG.getStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),