当前位置: 首页>>代码示例>>C++>>正文


C++ LoadSDNode::getMemOperand方法代码示例

本文整理汇总了C++中LoadSDNode::getMemOperand方法的典型用法代码示例。如果您正苦于以下问题:C++ LoadSDNode::getMemOperand方法的具体用法?C++ LoadSDNode::getMemOperand怎么用?C++ LoadSDNode::getMemOperand使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在LoadSDNode的用法示例。


在下文中一共展示了LoadSDNode::getMemOperand方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ExpandRes_NormalLoad

void DAGTypeLegalizer::ExpandRes_NormalLoad(SDNode *N, SDValue &Lo,
        SDValue &Hi) {
    assert(ISD::isNormalLoad(N) && "This routine only for normal loads!");
    SDLoc dl(N);

    LoadSDNode *LD = cast<LoadSDNode>(N);
    EVT ValueVT = LD->getValueType(0);
    EVT NVT = TLI.getTypeToTransformTo(*DAG.getContext(), ValueVT);
    SDValue Chain = LD->getChain();
    SDValue Ptr = LD->getBasePtr();
    unsigned Alignment = LD->getAlignment();
    AAMDNodes AAInfo = LD->getAAInfo();

    assert(NVT.isByteSized() && "Expanded type not byte sized!");

    Lo = DAG.getLoad(NVT, dl, Chain, Ptr, LD->getPointerInfo(), Alignment,
                     LD->getMemOperand()->getFlags(), AAInfo);

    // Increment the pointer to the other half.
    unsigned IncrementSize = NVT.getSizeInBits() / 8;
    Ptr = DAG.getNode(ISD::ADD, dl, Ptr.getValueType(), Ptr,
                      DAG.getConstant(IncrementSize, dl, Ptr.getValueType()));
    Hi = DAG.getLoad(NVT, dl, Chain, Ptr,
                     LD->getPointerInfo().getWithOffset(IncrementSize),
                     MinAlign(Alignment, IncrementSize),
                     LD->getMemOperand()->getFlags(), AAInfo);

    // Build a factor node to remember that this load is independent of the
    // other one.
    Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Lo.getValue(1),
                        Hi.getValue(1));

    // Handle endianness of the load.
    if (TLI.hasBigEndianPartOrdering(ValueVT, DAG.getDataLayout()))
        std::swap(Lo, Hi);

    // Modified the chain - switch anything that used the old chain to use
    // the new one.
    ReplaceValueWith(SDValue(N, 1), Chain);
}
开发者ID:krytarowski,项目名称:llvm,代码行数:40,代码来源:LegalizeTypesGeneric.cpp


注:本文中的LoadSDNode::getMemOperand方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。