Home | History | Annotate | Download | only in SelectionDAG

Lines Matching refs:ST

76   SDValue OptimizeFloatStore(StoreSDNode *ST);
304 static void ExpandUnalignedStore(StoreSDNode *ST, SelectionDAG &DAG,
307 assert(ST->getAddressingMode() == ISD::UNINDEXED &&
309 SDValue Chain = ST->getChain();
310 SDValue Ptr = ST->getBasePtr();
311 SDValue Val = ST->getValue();
313 int Alignment = ST->getAlignment();
314 SDLoc dl(ST);
315 if (ST->getMemoryVT().isFloatingPoint() ||
316 ST->getMemoryVT().isVector()) {
323 Result = DAG.getStore(Chain, dl, Result, Ptr, ST->getPointerInfo(),
324 ST->isVolatile(), ST->isNonTemporal(), Alignment);
325 DAGLegalize->ReplaceNode(SDValue(ST, 0), Result);
330 EVT StoredVT = ST->getMemoryVT();
358 ST->getPointerInfo().getWithOffset(Offset),
359 ST->isVolatile(), ST->isNonTemporal(),
360 MinAlign(ST->getAlignment(), Offset)));
380 ST->getPointerInfo()
382 MemVT, ST->isVolatile(),
383 ST->isNonTemporal(),
384 MinAlign(ST->getAlignment(), Offset)));
389 DAGLegalize->ReplaceNode(SDValue(ST, 0), Result);
392 assert(ST->getMemoryVT().isInteger() &&
393 !ST->getMemoryVT().isVector() &&
396 EVT NewStoredVT = ST->getMemoryVT().getHalfSizedIntegerVT(*DAG.getContext());
409 ST->getPointerInfo(), NewStoredVT,
410 ST->isVolatile(), ST->isNonTemporal(), Alignment);
415 ST->getPointerInfo().getWithOffset(IncrementSize),
416 NewStoredVT, ST->isVolatile(), ST->isNonTemporal(),
421 DAGLegalize->ReplaceNode(SDValue(ST, 0), Result);
645 SDValue SelectionDAGLegalize::OptimizeFloatStore(StoreSDNode* ST) {
653 SDValue Chain = ST->getChain();
654 SDValue Ptr = ST->getBasePtr();
655 unsigned Alignment = ST->getAlignment();
656 bool isVolatile = ST->isVolatile();
657 bool isNonTemporal = ST->isNonTemporal();
658 SDLoc dl(ST);
659 if (ConstantFPSDNode *CFP = dyn_cast<ConstantFPSDNode>(ST->getValue())) {
665 return DAG.getStore(Chain, dl, Con, Ptr, ST->getPointerInfo(),
674 return DAG.getStore(Chain, dl, Con, Ptr, ST->getPointerInfo(),
678 if (TLI.isTypeLegal(MVT::i32) && !ST->isVolatile()) {
687 Lo = DAG.getStore(Chain, dl, Lo, Ptr, ST->getPointerInfo(), isVolatile,
692 ST->getPointerInfo().getWithOffset(4),
703 StoreSDNode *ST = cast<StoreSDNode>(Node);
704 SDValue Chain = ST->getChain();
705 SDValue Ptr = ST->getBasePtr();
708 unsigned Alignment = ST->getAlignment();
709 bool isVolatile = ST->isVolatile();
710 bool isNonTemporal = ST->isNonTemporal();
712 if (!ST->isTruncatingStore()) {
713 if (SDNode *OptStore = OptimizeFloatStore(ST).getNode()) {
714 ReplaceNode(ST, OptStore);
719 SDValue Value = ST->getValue();
726 if (!TLI.allowsUnalignedMemoryAccesses(ST->getMemoryVT())) {
727 Type *Ty = ST->getMemoryVT().getTypeForEVT(*DAG.getContext());
729 if (ST->getAlignment() < ABIAlignment)
747 ST->getPointerInfo(), isVolatile,
756 SDValue Value = ST->getValue();
758 EVT StVT = ST->getMemoryVT();
769 DAG.getTruncStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),
789 Lo = DAG.getTruncStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),
801 ST->getPointerInfo().getWithOffset(IncrementSize),
811 Hi = DAG.getTruncStore(Chain, dl, Hi, Ptr, ST->getPointerInfo(),
819 ST->getPointerInfo().getWithOffset(IncrementSize),
828 switch (TLI.getTruncStoreAction(ST->getValue().getSimpleValueType(),
834 if (!TLI.allowsUnalignedMemoryAccesses(ST->getMemoryVT())) {
835 Type *Ty = ST->getMemoryVT().getTypeForEVT(*DAG.getContext());
837 if (ST->getAlignment() < ABIAlignment)
856 DAG.getStore(Chain, dl, Value, Ptr, ST->getPointerInfo(),