Home | History | Annotate | Download | only in SelectionDAG

Lines Matching refs:ST

91   SDValue OptimizeFloatStore(StoreSDNode *ST);
384 SDValue ExpandUnalignedStore(StoreSDNode *ST, SelectionDAG &DAG,
386 SDValue Chain = ST->getChain();
387 SDValue Ptr = ST->getBasePtr();
388 SDValue Val = ST->getValue();
390 int Alignment = ST->getAlignment();
391 DebugLoc dl = ST->getDebugLoc();
392 if (ST->getMemoryVT().isFloatingPoint() ||
393 ST->getMemoryVT().isVector()) {
400 return DAG.getStore(Chain, dl, Result, Ptr, ST->getPointerInfo(),
401 ST->isVolatile(), ST->isNonTemporal(), Alignment);
405 EVT StoredVT = ST->getMemoryVT();
433 ST->getPointerInfo().getWithOffset(Offset),
434 ST->isVolatile(), ST->isNonTemporal(),
435 MinAlign(ST->getAlignment(), Offset)));
455 ST->getPointerInfo()
457 MemVT, ST->isVolatile(),
458 ST->isNonTemporal(),
459 MinAlign(ST->getAlignment(), Offset)));
464 assert(ST->getMemoryVT().isInteger() &&
465 !ST->getMemoryVT().isVector() &&
468 EVT NewStoredVT = ST->getMemoryVT().getHalfSizedIntegerVT(*DAG.getContext());
481 ST->getPointerInfo(), NewStoredVT,
482 ST->isVolatile(), ST->isNonTemporal(), Alignment);
487 ST->getPointerInfo().getWithOffset(IncrementSize),
488 NewStoredVT, ST->isVolatile(), ST->isNonTemporal(),
706 SDValue SelectionDAGLegalize::OptimizeFloatStore(StoreSDNode* ST) {
714 SDValue Tmp1 = ST->getChain();
715 SDValue Tmp2 = ST->getBasePtr();
717 unsigned Alignment = ST->getAlignment();
718 bool isVolatile = ST->isVolatile();
719 bool isNonTemporal = ST->isNonTemporal();
720 DebugLoc dl = ST->getDebugLoc();
721 if (ConstantFPSDNode *CFP = dyn_cast<ConstantFPSDNode>(ST->getValue())) {
727 return DAG.getStore(Tmp1, dl, Tmp3, Tmp2, ST->getPointerInfo(),
736 return DAG.getStore(Tmp1, dl, Tmp3, Tmp2, ST->getPointerInfo(),
740 ST->isVolatile()) {
749 Lo = DAG.getStore(Tmp1, dl, Lo, Tmp2, ST->getPointerInfo(), isVolatile,
754 ST->getPointerInfo().getWithOffset(4),
1407 StoreSDNode *ST = cast<StoreSDNode>(Node);
1408 Tmp1 = LegalizeOp(ST->getChain()); // Legalize the chain.
1409 Tmp2 = LegalizeOp(ST->getBasePtr()); // Legalize the pointer.
1410 unsigned Alignment = ST->getAlignment();
1411 bool isVolatile = ST->isVolatile();
1412 bool isNonTemporal = ST->isNonTemporal();
1414 if (!ST->isTruncatingStore()) {
1415 if (SDNode *OptStore = OptimizeFloatStore(ST).getNode()) {
1421 Tmp3 = LegalizeOp(ST->getValue());
1424 ST->getOffset()),
1433 if (!TLI.allowsUnalignedMemoryAccesses(ST->getMemoryVT())) {
1434 Type *Ty = ST->getMemoryVT().getTypeForEVT(*DAG.getContext());
1436 if (ST->getAlignment() < ABIAlignment)
1450 ST->getPointerInfo(), isVolatile,
1457 Tmp3 = LegalizeOp(ST->getValue());
1459 EVT StVT = ST->getMemoryVT();
1469 Result = DAG.getTruncStore(Tmp1, dl, Tmp3, Tmp2, ST->getPointerInfo(),
1488 Lo = DAG.getTruncStore(Tmp1, dl, Tmp3, Tmp2, ST->getPointerInfo(),
1500 ST->getPointerInfo().getWithOffset(IncrementSize),
1510 Hi = DAG.getTruncStore(Tmp1, dl, Hi, Tmp2, ST->getPointerInfo(),
1518 ST->getPointerInfo().getWithOffset(IncrementSize),
1526 if (Tmp1 != ST->getChain() || Tmp3 != ST->getValue() ||
1527 Tmp2 != ST->getBasePtr())
1530 ST->getOffset()),
1533 switch (TLI.getTruncStoreAction(ST->getValue().getValueType(), StVT)) {
1538 if (!TLI.allowsUnalignedMemoryAccesses(ST->getMemoryVT())) {
1539 Type *Ty = ST->getMemoryVT().getTypeForEVT(*DAG.getContext());
1541 if (ST->getAlignment() < ABIAlignment)
1556 Result = DAG.getStore(Tmp1, dl, Tmp3, Tmp2, ST->getPointerInfo(),