|
LLVM 24.0.0git
|
#include "llvm/IR/AutoUpgrade.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/StringExtras.h"#include "llvm/ADT/StringRef.h"#include "llvm/ADT/StringSwitch.h"#include "llvm/BinaryFormat/Dwarf.h"#include "llvm/IR/AttributeMask.h"#include "llvm/IR/Attributes.h"#include "llvm/IR/CallingConv.h"#include "llvm/IR/Constants.h"#include "llvm/IR/DebugInfo.h"#include "llvm/IR/DebugInfoMetadata.h"#include "llvm/IR/DiagnosticInfo.h"#include "llvm/IR/Function.h"#include "llvm/IR/GlobalValue.h"#include "llvm/IR/IRBuilder.h"#include "llvm/IR/InstVisitor.h"#include "llvm/IR/Instruction.h"#include "llvm/IR/IntrinsicInst.h"#include "llvm/IR/Intrinsics.h"#include "llvm/IR/IntrinsicsAArch64.h"#include "llvm/IR/IntrinsicsAMDGPU.h"#include "llvm/IR/IntrinsicsARM.h"#include "llvm/IR/IntrinsicsNVPTX.h"#include "llvm/IR/IntrinsicsRISCV.h"#include "llvm/IR/IntrinsicsWebAssembly.h"#include "llvm/IR/IntrinsicsX86.h"#include "llvm/IR/LLVMContext.h"#include "llvm/IR/MDBuilder.h"#include "llvm/IR/Metadata.h"#include "llvm/IR/Module.h"#include "llvm/IR/NVVMIntrinsicUtils.h"#include "llvm/IR/Value.h"#include "llvm/IR/Verifier.h"#include "llvm/Support/AMDGPUAddrSpace.h"#include "llvm/Support/CodeGen.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/NVPTXAddrSpace.h"#include "llvm/Support/NVVMAttributes.h"#include "llvm/Support/Regex.h"#include "llvm/Support/TimeProfiler.h"#include "llvm/TargetParser/Triple.h"#include <cstdint>#include <cstring>#include <numeric>Go to the source code of this file.
Macros | |
| #define | NVVM_TMA_G2S_MODES(M) |
| #define | G2S_ID(ID_SUFFIX, NAME) |
| #define | G2S_CTA_ID(ID_SUFFIX, NAME) |
| #define | G2S_CLUSTER_CASE(ID_SUFFIX, NAME) |
| #define | G2S_CTA_CASE(ID_SUFFIX, NAME) |
Variables | |
| static cl::opt< bool > | DisableAutoUpgradeDebugInfo ("disable-auto-upgrade-debug-info", cl::desc("Disable autoupgrade of debug info")) |
| #define G2S_CLUSTER_CASE | ( | ID_SUFFIX, | |
| NAME ) |
Referenced by llvm::UpgradeIntrinsicCall().
| #define G2S_CTA_CASE | ( | ID_SUFFIX, | |
| NAME ) |
Referenced by llvm::UpgradeIntrinsicCall().
| #define G2S_CTA_ID | ( | ID_SUFFIX, | |
| NAME ) |
Referenced by shouldUpgradeNVPTXTMAG2SCTAIntrinsics().
| #define G2S_ID | ( | ID_SUFFIX, | |
| NAME ) |
Referenced by shouldUpgradeNVPTXTMAG2SIntrinsics().
| #define NVVM_TMA_G2S_MODES | ( | M | ) |
Definition at line 1174 of file AutoUpgrade.cpp.
Referenced by shouldUpgradeNVPTXTMAG2SCTAIntrinsics(), shouldUpgradeNVPTXTMAG2SIntrinsics(), and llvm::UpgradeIntrinsicCall().
Definition at line 2831 of file AutoUpgrade.cpp.
References C(), llvm::cast(), llvm::dyn_cast(), llvm::Constant::getNullValue(), llvm::Value::getType(), and getX86MaskVec().
Referenced by llvm::UpgradeIntrinsicCall(), upgradeMaskedCompare(), and upgradeX86IntrinsicCall().
Definition at line 1501 of file AutoUpgrade.cpp.
Referenced by upgradeIntrinsicFunction1(), and upgradeNVVMIntrinsicCall().
Definition at line 7488 of file AutoUpgrade.cpp.
Referenced by llvm::copyModuleAttrToFunctions().
|
static |
Definition at line 1591 of file AutoUpgrade.cpp.
References llvm::CastInst::castIsValid(), and llvm::Type::getHalfTy().
Referenced by upgradeIntrinsicFunction1().
|
static |
Definition at line 2517 of file AutoUpgrade.cpp.
References C(), llvm::dyn_cast(), llvm::FixedVectorType::get(), and uint64_t.
Referenced by upgradeX86IntrinsicCall().
Definition at line 2505 of file AutoUpgrade.cpp.
References C(), llvm::cast(), llvm::dyn_cast(), llvm::Value::getType(), and getX86MaskVec().
Referenced by upgradeAbs(), upgradeAVX512MaskToSelect(), upgradePMULDQ(), upgradeX86ALIGNIntrinsics(), upgradeX86BinaryIntrinsics(), upgradeX86ConcatShift(), upgradeX86IntrinsicCall(), upgradeX86MaskedShift(), upgradeX86Rotate(), and upgradeX86VPERMT2Intrinsics().
|
static |
Definition at line 1544 of file AutoUpgrade.cpp.
References llvm::StringSwitch< T, R >::Default(), and llvm::StringSwitch< T, R >::StartsWith().
Referenced by shouldUpgradeVPIntrinsic(), and upgradeVPIntrinsicCall().
Definition at line 1507 of file AutoUpgrade.cpp.
References llvm::StringSwitch< T, R >::Default(), and llvm::StringSwitch< T, R >::StartsWith().
Referenced by shouldUpgradeVPIntrinsic(), and upgradeVPIntrinsicCall().
Definition at line 6641 of file AutoUpgrade.cpp.
References llvm::dyn_cast_or_null().
Referenced by upgradePtrauthInitFiniArrays().
Definition at line 1270 of file AutoUpgrade.cpp.
References llvm::nvvm::ADD, llvm::nvvm::AND, llvm::StringSwitch< T, R >::Case(), llvm::nvvm::DEC, llvm::StringSwitch< T, R >::Default(), llvm::nvvm::INC, llvm::nvvm::MAX, llvm::nvvm::MIN, llvm::nvvm::OR, and llvm::nvvm::XOR.
Referenced by shouldUpgradeNVPTXTMAReductionIntrinsics(), and llvm::UpgradeIntrinsicCall().
|
static |
Definition at line 1474 of file AutoUpgrade.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), llvm::is_contained(), llvm::NearestTiesToEven, llvm::Intrinsic::not_intrinsic, llvm::TowardNegative, llvm::TowardPositive, and llvm::TowardZero.
Referenced by upgradeIntrinsicFunction1(), and upgradeNVVMIntrinsicCall().
|
static |
Return the replacement tags if T still uses a removed two-operand form.
Definition at line 7593 of file AutoUpgrade.cpp.
References llvm::dyn_cast_or_null(), llvm::findBooleanLoopTags(), llvm::mdconst::hasa(), and T.
Referenced by isOldLoopArgument(), llvm::upgradeInstructionLoopAttachment(), and upgradeLoopArgument().
Definition at line 5544 of file AutoUpgrade.cpp.
References llvm::CmpInst::BAD_FCMP_PREDICATE, llvm::StringSwitch< T, R >::Case(), llvm::cast(), llvm::StringSwitch< T, R >::Default(), llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_OGE, llvm::CmpInst::FCMP_OGT, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::FCMP_ONE, llvm::CmpInst::FCMP_ORD, llvm::CmpInst::FCMP_UEQ, llvm::CmpInst::FCMP_UGE, llvm::CmpInst::FCMP_UGT, llvm::CmpInst::FCMP_ULE, llvm::CmpInst::FCMP_ULT, llvm::CmpInst::FCMP_UNE, llvm::CmpInst::FCMP_UNO, and llvm::isa().
Referenced by upgradeVPIntrinsicCall().
Definition at line 5526 of file AutoUpgrade.cpp.
References llvm::CmpInst::BAD_ICMP_PREDICATE, llvm::StringSwitch< T, R >::Case(), llvm::cast(), llvm::StringSwitch< T, R >::Default(), llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLE, llvm::CmpInst::ICMP_SLT, llvm::CmpInst::ICMP_UGE, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULE, llvm::CmpInst::ICMP_ULT, and llvm::isa().
Referenced by upgradeVPIntrinsicCall().
Definition at line 2485 of file AutoUpgrade.cpp.
References llvm::ArrayRef(), assert(), llvm::cast(), llvm::FixedVectorType::get(), and llvm::isPowerOf2_32().
Referenced by applyX86MaskOn1BitsVec(), emitX86Select(), llvm::UpgradeIntrinsicCall(), upgradeMaskedLoad(), upgradeMaskedStore(), upgradeMaskToInt(), and upgradeX86IntrinsicCall().
|
static |
Definition at line 1440 of file AutoUpgrade.cpp.
References E(), F, llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarType(), llvm::Intrinsic::getType(), I, and llvm::Type::isIntegerTy().
Referenced by upgradeIntrinsicFunction1(), and upgradeNVVMIntrinsicCall().
Definition at line 7610 of file AutoUpgrade.cpp.
References llvm::dyn_cast_or_null(), getOldBooleanLoopTags(), and T.
Referenced by llvm::upgradeInstructionLoopAttachment().
Definition at line 6728 of file AutoUpgrade.cpp.
Referenced by upgradeSingleNVVMAnnotation().
|
static |
Build the single-operand node that replaces a boolean operand: nonzero selects the enable tag, zero the disable tag.
Definition at line 7602 of file AutoUpgrade.cpp.
References C(), llvm::BooleanLoopTags::Disable, Enable, llvm::BooleanLoopTags::Enable, llvm::mdconst::extract(), llvm::MDString::get(), and llvm::MDTuple::get().
Referenced by upgradeLoopArgument().
|
static |
Definition at line 68 of file AutoUpgrade.cpp.
References llvm::Value::getName(), and llvm::Value::setName().
Referenced by upgradeArmOrAarch64IntrinsicFunction(), upgradeIntrinsicFunction1(), upgradeNVVMIntrinsicCall(), upgradePTESTIntrinsic(), upgradeX86BF16DPIntrinsic(), upgradeX86BF16Intrinsic(), upgradeX86IntrinsicFunction(), upgradeX86IntrinsicsWith8BitMask(), upgradeX86MaskedFPCompare(), upgradeX86MultiplyAddBytes(), and upgradeX86MultiplyAddWords().
Definition at line 72 of file AutoUpgrade.cpp.
References llvm::errs(), llvm::Value::print(), and llvm::reportFatalUsageError().
Referenced by upgradeX86IntrinsicCall().
Definition at line 7479 of file AutoUpgrade.cpp.
References F.
Referenced by llvm::copyModuleAttrToFunctions().
|
static |
Definition at line 1374 of file AutoUpgrade.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), and llvm::Intrinsic::not_intrinsic.
Referenced by upgradeIntrinsicFunction1(), and upgradeNVVMIntrinsicCall().
|
static |
Definition at line 1303 of file AutoUpgrade.cpp.
References llvm::NVPTXAS::ADDRESS_SPACE_SHARED, llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), F, and llvm::Intrinsic::not_intrinsic.
Referenced by upgradeIntrinsicFunction1().
|
static |
Definition at line 1354 of file AutoUpgrade.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), F, and llvm::Intrinsic::not_intrinsic.
Referenced by upgradeIntrinsicFunction1().
|
static |
Definition at line 1329 of file AutoUpgrade.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), F, and llvm::Intrinsic::not_intrinsic.
Referenced by upgradeIntrinsicFunction1().
|
static |
Definition at line 1461 of file AutoUpgrade.cpp.
References F, and llvm::Intrinsic::not_intrinsic.
Referenced by upgradeIntrinsicFunction1().
|
static |
Definition at line 1242 of file AutoUpgrade.cpp.
References llvm::StringSwitch< T, R >::Default(), F, G2S_CTA_ID, llvm::Intrinsic::not_intrinsic, and NVVM_TMA_G2S_MODES.
Referenced by upgradeIntrinsicFunction1().
|
static |
Definition at line 1199 of file AutoUpgrade.cpp.
References assert(), llvm::StringSwitch< T, R >::Default(), F, G2S_ID, llvm::Type::isIntegerTy(), llvm::Intrinsic::not_intrinsic, NVVM_TMA_G2S_MODES, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by upgradeIntrinsicFunction1().
|
static |
Definition at line 1283 of file AutoUpgrade.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), getNVPTXTMAReductionOp(), and llvm::Intrinsic::not_intrinsic.
Referenced by upgradeIntrinsicFunction1().
Definition at line 1587 of file AutoUpgrade.cpp.
References getFunctionalIntrinsicIDForVP(), and getFunctionalOpcodeForVP().
Referenced by llvm::UpgradeIntrinsicCall(), and upgradeIntrinsicFunction1().
Definition at line 180 of file AutoUpgrade.cpp.
References F.
Referenced by upgradeX86IntrinsicFunction().
Helper to unwrap Metadata MetadataAsValue operands, such as the Value field.
Definition at line 5438 of file AutoUpgrade.cpp.
References llvm::dyn_cast(), and llvm::CallBase::getArgOperand().
Referenced by upgradeDbgIntrinsicToDbgRecord().
Helper to unwrap intrinsic call MetadataAsValue operands.
Return as a plain MDNode, as it's the verifier's job to check these are the correct types later.
Definition at line 5426 of file AutoUpgrade.cpp.
References llvm::dyn_cast(), llvm::dyn_cast_if_present(), and llvm::CallBase::getArgOperand().
Referenced by upgradeDbgIntrinsicToDbgRecord().
|
static |
Definition at line 5063 of file AutoUpgrade.cpp.
References llvm::CallBase::args(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::StringSwitch< T, R >::Case(), llvm::dbgs(), llvm::StringSwitch< T, R >::Default(), llvm::SmallVectorTemplateCommon< T, typename >::end(), F, llvm::ConstantAggregateZero::get(), llvm::FixedVectorType::get(), llvm::ScalableVectorType::get(), llvm::Type::getBFloatTy(), llvm::Type::getFloatTy(), llvm::Type::getHalfTy(), llvm::Type::getInt16Ty(), llvm::Value::getName(), llvm::User::getOperand(), getType(), llvm::Value::getType(), llvm_unreachable, and llvm::Intrinsic::not_intrinsic.
Referenced by llvm::UpgradeIntrinsicCall().
Definition at line 2791 of file AutoUpgrade.cpp.
References llvm::CallBase::arg_size(), emitX86Select(), llvm::CallBase::getArgOperand(), and llvm::Value::getType().
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 5223 of file AutoUpgrade.cpp.
References llvm::CallBase::arg_size(), llvm::CallBase::args(), assert(), llvm::cast(), llvm::Instruction::copyMetadata(), llvm::MDBuilder::createRange(), llvm::dyn_cast(), E(), F, llvm::AtomicRMWInst::FAdd, llvm::AMDGPUAS::FLAT_ADDRESS, llvm::AtomicRMWInst::FMax, llvm::AtomicRMWInst::FMin, llvm::MDNode::get(), llvm::VectorType::get(), llvm::CallBase::getArgOperand(), llvm::CallBase::getAttributes(), llvm::Type::getBFloatTy(), llvm::CallBase::getCallingConv(), llvm::User::getNumOperands(), llvm::CallBase::getOperandBundlesAsDefs(), llvm::Intrinsic::getOrInsertDeclaration(), getType(), llvm::Value::getType(), llvm::ConstantInt::getZExtValue(), I, llvm::Type::isFloatTy(), llvm::Type::isIntegerTy(), llvm::isValidAtomicOrdering(), llvm::ConstantInt::isZero(), LHS, llvm::AMDGPUAS::LOCAL_ADDRESS, llvm::NotAtomic, llvm::AMDGPUAS::PRIVATE_ADDRESS, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::reportFatalUsageError(), RHS, llvm::SequentiallyConsistent, llvm::CallBase::setCallingConv(), llvm::Instruction::setMetadata(), llvm::CallInst::setTailCallKind(), llvm::AtomicRMWInst::setVolatile(), llvm::StringSwitch< T, R >::StartsWith(), T1, llvm::Value::takeName(), llvm::AtomicRMWInst::UDecWrap, llvm::AtomicRMWInst::UIncWrap, llvm::Unordered, llvm::AtomicRMWInst::USubCond, and llvm::AtomicRMWInst::USubSat.
Referenced by llvm::UpgradeIntrinsicCall().
|
static |
Definition at line 5133 of file AutoUpgrade.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::CallBase::args(), F, llvm::FixedVectorType::get(), llvm::VectorType::get(), llvm::CallBase::getArgOperand(), llvm::CallBase::getIntrinsicID(), llvm::Value::getName(), llvm::User::getOperand(), llvm::Value::getType(), and llvm_unreachable.
Referenced by llvm::UpgradeIntrinsicCall().
|
static |
Definition at line 789 of file AutoUpgrade.cpp.
References assert(), llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Cases(), llvm::cast(), llvm::StringSwitch< T, R >::Default(), llvm::Default, llvm::dyn_cast(), F, llvm::FixedVectorType::get(), llvm::VectorType::get(), llvm::Type::getBFloatTy(), llvm::Intrinsic::getOrInsertDeclaration(), Groups, llvm::Regex::match(), llvm::Intrinsic::not_intrinsic, rename(), llvm::size(), and llvm::StringSwitch< T, R >::StartsWith().
Referenced by upgradeIntrinsicFunction1().
|
static |
Definition at line 2915 of file AutoUpgrade.cpp.
References llvm::CallBase::arg_size(), llvm::CallBase::args(), emitX86Select(), llvm::CallBase::getArgOperand(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarSizeInBits(), llvm::Value::getType(), llvm::Type::isFPOrFPVectorTy(), and llvm_unreachable.
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 5509 of file AutoUpgrade.cpp.
References F, llvm::CallBase::getArgOperand(), and llvm::Value::getType().
Referenced by llvm::UpgradeIntrinsicCall().
Convert debug intrinsic calls to non-instruction debug records.
Name - Final part of the intrinsic name, e.g. 'value' in llvm.dbg.value. CI - The debug intrinsic call.
Definition at line 5448 of file AutoUpgrade.cpp.
References llvm::DIExpression::append(), llvm::CallBase::arg_size(), assert(), llvm::DbgVariableRecord::Assign, llvm::DbgLabelRecord::createUnresolvedDbgLabelRecord(), llvm::DbgVariableRecord::createUnresolvedDbgVariableRecord(), llvm::DbgVariableRecord::Declare, llvm::dyn_cast(), llvm::dyn_cast_or_null(), llvm::CallBase::getArgOperand(), llvm::Instruction::getDebugLoc(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), llvm::Offset, llvm::DbgRecord::setDebugLoc(), unwrapMAVMetadataOp(), unwrapMAVOp(), and llvm::DbgVariableRecord::Value.
Referenced by llvm::UpgradeIntrinsicCall().
|
static |
Definition at line 5597 of file AutoUpgrade.cpp.
References llvm::CallBase::arg_size(), llvm::Function::arg_size(), llvm::CallBase::args(), assert(), llvm::Instruction::copyMetadata(), llvm::dyn_cast(), llvm::Instruction::eraseFromParent(), llvm::Intrinsic::getAllDefaultArgValues(), llvm::CallBase::getCallingConv(), llvm::Function::getFunctionType(), llvm::Function::getIntrinsicID(), llvm::CallBase::getOperandBundlesAsDefs(), llvm::Type::isIntegerTy(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::Value::replaceAllUsesWith(), llvm::CallBase::setCallingConv(), llvm::CallInst::setTailCallKind(), and llvm::Value::takeName().
Referenced by llvm::UpgradeIntrinsicCall().
Definition at line 1611 of file AutoUpgrade.cpp.
References llvm::Function::arg_size(), F, llvm::Intrinsic::getAllDefaultArgValues(), llvm::Intrinsic::getOrInsertDeclaration(), llvm::Intrinsic::isOverloaded(), llvm::Intrinsic::lookupIntrinsicID(), and llvm::Intrinsic::not_intrinsic.
|
static |
Definition at line 1641 of file AutoUpgrade.cpp.
References assert(), llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Cases(), consumeNVVMPtrAddrSpace(), convertIntrinsicValidType(), llvm::StringSwitch< T, R >::Default(), llvm::Default, F, getNVVMFAddUpgrade(), llvm::Intrinsic::getOrInsertDeclaration(), Groups, isLegacyNVPTXBF16IntSignature(), llvm::Intrinsic::isOverloaded(), llvm::Intrinsic::not_intrinsic, llvm::SmallVectorTemplateBase< T, bool >::push_back(), R2, rename(), shouldUpgradeNVPTXBF16Intrinsic(), shouldUpgradeNVPTXSharedClusterIntrinsic(), shouldUpgradeNVPTXTcgen05AllocDeallocIntrinsic(), shouldUpgradeNVPTXTcgen05CommitSharedIntrinsic(), shouldUpgradeNVPTXTcgen05MMAIntrinsic(), shouldUpgradeNVPTXTMAG2SCTAIntrinsics(), shouldUpgradeNVPTXTMAG2SIntrinsics(), shouldUpgradeNVPTXTMAReductionIntrinsics(), shouldUpgradeVPIntrinsic(), llvm::StringSwitch< T, R >::StartsWith(), upgradeArmOrAarch64IntrinsicFunction(), and upgradeX86IntrinsicFunction().
Referenced by llvm::UpgradeIntrinsicFunction().
Rewrite a removed two-operand boolean form to the single-operand pair.
Definition at line 7636 of file AutoUpgrade.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, C(), llvm::dyn_cast_or_null(), E(), llvm::findBooleanLoopTags(), llvm::MDTuple::get(), getOldBooleanLoopTags(), llvm::MDString::getString(), llvm::mdconst::hasa(), I, makeBooleanLoopNode(), T, and upgradeLoopTag().
Referenced by llvm::upgradeInstructionLoopAttachment().
|
static |
Definition at line 7624 of file AutoUpgrade.cpp.
References assert(), C(), llvm::StringRef::drop_front(), llvm::MDString::get(), llvm::StringRef::size(), and llvm::StringRef::starts_with().
Referenced by upgradeLoopArgument().
|
static |
Definition at line 2853 of file AutoUpgrade.cpp.
References applyX86MaskOn1BitsVec(), llvm::CallBase::arg_size(), llvm::cast(), llvm::FixedVectorType::get(), llvm::Constant::getAllOnesValue(), llvm::CallBase::getArgOperand(), llvm::Constant::getNullValue(), llvm::Value::getType(), llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLE, llvm::CmpInst::ICMP_SLT, llvm::CmpInst::ICMP_UGE, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULE, llvm::CmpInst::ICMP_ULT, llvm_unreachable, and Signed.
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 2770 of file AutoUpgrade.cpp.
References llvm::Aligned, C(), llvm::cast(), llvm::dyn_cast(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::Type::getPrimitiveSizeInBits(), llvm::Value::getType(), and getX86MaskVec().
Referenced by upgradeX86IntrinsicCall().
Definition at line 2892 of file AutoUpgrade.cpp.
References A(), B(), llvm::CallBase::getArgOperand(), Select, and uint64_t.
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 2752 of file AutoUpgrade.cpp.
References llvm::Aligned, C(), llvm::cast(), llvm::Data, llvm::dyn_cast(), and getX86MaskVec().
Referenced by upgradeX86IntrinsicCall().
Definition at line 2906 of file AutoUpgrade.cpp.
References llvm::cast(), llvm::CallBase::getArgOperand(), llvm::Value::getType(), and getX86MaskVec().
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 6695 of file AutoUpgrade.cpp.
References llvm::ArrayRef(), assert(), llvm::cast(), llvm::StringRef::empty(), llvm::mdconst::extract(), F, llvm::join(), llvm::Length, llvm::StringRef::split(), llvm::StringRef::trim(), uint64_t, and llvm::utostr().
Referenced by upgradeSingleNVVMAnnotation().
|
static |
Definition at line 3163 of file AutoUpgrade.cpp.
References A(), llvm::AtomicRMWInst::Add, llvm::AtomicRMWInst::And, llvm::Function::arg_size(), assert(), llvm::AtomicRMWInst::BAD_BINOP, C(), llvm::StringSwitch< T, R >::Case(), llvm::cast(), consumeNVVMPtrAddrSpace(), llvm::StringSwitch< T, R >::Default(), F, llvm::AtomicRMWInst::FAdd, llvm::FAdd, llvm::FixedVectorType::get(), llvm::MDNode::get(), llvm::Function::getArg(), llvm::CallBase::getArgOperand(), llvm::Type::getBFloatTy(), llvm::Value::getContext(), llvm::Type::getInt64Ty(), getNVVMFAddUpgrade(), llvm::User::getOperand(), llvm::Intrinsic::getOrInsertDeclaration(), llvm::LLVMContext::getOrInsertSyncScopeID(), llvm::Type::getScalarType(), llvm::Value::getType(), I, llvm::Type::isBFloatTy(), llvm::Type::isIntegerTy(), isLegacyNVPTXBF16IntSignature(), llvm::AtomicRMWInst::Max, llvm::AtomicRMWInst::Min, llvm::Monotonic, llvm::Intrinsic::not_intrinsic, llvm::AtomicRMWInst::Or, rename(), llvm::FastMathFlags::setApproxFunc(), shouldUpgradeNVPTXBF16Intrinsic(), llvm::size(), llvm::StringSwitch< T, R >::StartsWith(), llvm::AtomicRMWInst::UDecWrap, llvm::AtomicRMWInst::UIncWrap, llvm::AtomicRMWInst::Xchg, and llvm::AtomicRMWInst::Xor.
Referenced by llvm::UpgradeIntrinsicCall().
Definition at line 2801 of file AutoUpgrade.cpp.
References llvm::CallBase::arg_size(), emitX86Select(), llvm::CallBase::getArgOperand(), llvm::Value::getType(), LHS, and RHS.
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 81 of file AutoUpgrade.cpp.
References F, llvm::FixedVectorType::get(), llvm::Type::getFloatTy(), llvm::Intrinsic::getOrInsertDeclaration(), and rename().
Referenced by upgradeX86IntrinsicFunction().
Definition at line 6989 of file AutoUpgrade.cpp.
References assert(), llvm::dyn_cast(), llvm::dyn_cast_if_present(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::Module::Error, llvm::ConstantArray::get(), llvm::ConstantStruct::get(), getModuleFlagNameSafely(), llvm::User::getNumOperands(), llvm::User::getOperand(), and llvm::ConstantStruct::getType().
Referenced by llvm::UpgradeModuleFlags().
This checks for objc retain release marker which should be upgraded.
It returns true if module is modified.
Definition at line 6834 of file AutoUpgrade.cpp.
References Changed, llvm::dyn_cast_or_null(), llvm::Module::Error, llvm::MDString::get(), llvm::NamedMDNode::getOperand(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by llvm::UpgradeARCRuntime().
|
static |
Definition at line 6732 of file AutoUpgrade.cpp.
References llvm::cast(), llvm::NVVMAttr::ClusterDim(), llvm::mdconst::extract(), llvm::Attribute::get(), llvm::Value::getContext(), llvm::Attribute::getWithStackAlignment(), llvm::NVVMAttr::GridConstant(), isXYZ(), isZero(), llvm::NVVMAttr::MaxClusterRank(), llvm::NVVMAttr::MaxNReg(), llvm::NVVMAttr::MaxNTID(), llvm::NVVMAttr::MinCTASm(), llvm::CallingConv::PTX_Kernel, llvm::NVVMAttr::ReqNTID(), uint64_t, upgradeNVVMFnVectorAttr(), and llvm::utostr().
Referenced by llvm::UpgradeNVVMAnnotations().
Definition at line 5496 of file AutoUpgrade.cpp.
References llvm::dyn_cast(), llvm::CallBase::getArgOperand(), llvm::Value::getType(), llvm::Offset, and llvm::reportFatalUsageError().
Referenced by llvm::UpgradeIntrinsicCall().
Definition at line 5566 of file AutoUpgrade.cpp.
References llvm::CallBase::args(), llvm::drop_end(), llvm::CallBase::getArgOperand(), getFunctionalIntrinsicIDForVP(), getFunctionalOpcodeForVP(), llvm::Value::getType(), getVPFPPredicateFromMD(), getVPIntPredicateFromMD(), llvm::Instruction::isBinaryOp(), llvm::Instruction::isCast(), llvm::Instruction::isUnaryOp(), llvm_unreachable, and llvm::Value::takeName().
Referenced by llvm::UpgradeIntrinsicCall().
|
static |
Definition at line 2534 of file AutoUpgrade.cpp.
References llvm::ArrayRef(), assert(), llvm::cast(), emitX86Select(), llvm::Constant::getNullValue(), llvm::Value::getType(), and llvm::isPowerOf2_32().
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 170 of file AutoUpgrade.cpp.
References F, llvm::Intrinsic::getOrInsertDeclaration(), and rename().
Referenced by upgradeX86IntrinsicFunction().
|
static |
Definition at line 160 of file AutoUpgrade.cpp.
References F, llvm::Intrinsic::getOrInsertDeclaration(), and rename().
Referenced by upgradeX86IntrinsicFunction().
|
static |
Definition at line 2639 of file AutoUpgrade.cpp.
References llvm::CallBase::arg_size(), emitX86Select(), llvm::User::getOperand(), and llvm::Value::getType().
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 2719 of file AutoUpgrade.cpp.
References llvm::CallBase::arg_size(), llvm::cast(), emitX86Select(), llvm::ConstantAggregateZero::get(), llvm::CallBase::getArgOperand(), llvm::User::getOperand(), llvm::Value::getType(), and std::swap().
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 3371 of file AutoUpgrade.cpp.
References A(), AbstractManglingParser< Derived, Alloc >::Ops, llvm::Aligned, applyX86MaskOn1BitsVec(), llvm::CallBase::arg_size(), llvm::CallBase::args(), llvm::ArrayRef(), assert(), B(), C(), llvm::cast(), llvm::Data, emitX86ScalarSelect(), emitX86Select(), F, llvm::ConstantAggregateZero::get(), llvm::ConstantAsMetadata::get(), llvm::FixedVectorType::get(), llvm::MDNode::get(), llvm::PoisonValue::get(), llvm::VectorType::get(), llvm::Constant::getAllOnesValue(), llvm::CallBase::getArgOperand(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::Type::getHalfTy(), llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::VectorType::getInteger(), llvm::Instruction::getModule(), llvm::Constant::getNullValue(), llvm::User::getOperand(), llvm::Intrinsic::getOrInsertDeclaration(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarSizeInBits(), llvm::ShuffleVectorInst::getShuffleMask(), getType(), llvm::Value::getType(), getX86MaskVec(), High, I, llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLT, Imm, llvm::isa(), llvm::Type::isIntegerTy(), LHS, llvm_unreachable, llvm::Load, llvm::Offset, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::Value::replaceAllUsesWith(), reportFatalUsageErrorWithCI(), RHS, llvm::Instruction::setMetadata(), Size, std::swap(), uint64_t, upgradeAbs(), upgradeAVX512MaskToSelect(), upgradeMaskedCompare(), upgradeMaskedLoad(), upgradeMaskedMove(), upgradeMaskedStore(), upgradeMaskToInt(), upgradePMULDQ(), upgradeX86ALIGNIntrinsics(), upgradeX86BinaryIntrinsics(), upgradeX86ConcatShift(), upgradeX86MaskedShift(), upgradeX86PSLLDQIntrinsics(), upgradeX86PSRLDQIntrinsics(), upgradeX86Rotate(), upgradeX86vpcom(), upgradeX86VPERMT2Intrinsics(), and llvm::V1.
Referenced by llvm::UpgradeIntrinsicCall().
Definition at line 551 of file AutoUpgrade.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), F, llvm::Intrinsic::getOrInsertDeclaration(), llvm::Intrinsic::not_intrinsic, rename(), shouldUpgradeX86Intrinsic(), upgradePTESTIntrinsic(), upgradeX86BF16DPIntrinsic(), upgradeX86BF16Intrinsic(), upgradeX86IntrinsicsWith8BitMask(), upgradeX86MaskedFPCompare(), upgradeX86MultiplyAddBytes(), and upgradeX86MultiplyAddWords().
Referenced by upgradeIntrinsicFunction1().
|
static |
Definition at line 97 of file AutoUpgrade.cpp.
References F, llvm::Intrinsic::getOrInsertDeclaration(), llvm::Type::isIntegerTy(), and rename().
Referenced by upgradeX86IntrinsicFunction().
|
static |
Definition at line 113 of file AutoUpgrade.cpp.
References F, llvm::Intrinsic::getOrInsertDeclaration(), and rename().
Referenced by upgradeX86IntrinsicFunction().
|
static |
Definition at line 2885 of file AutoUpgrade.cpp.
References emitX86Select(), and llvm::CallBase::getArgOperand().
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 126 of file AutoUpgrade.cpp.
References llvm::cast(), F, llvm::Intrinsic::getOrInsertDeclaration(), llvm::Type::isVectorTy(), and rename().
Referenced by upgradeX86IntrinsicFunction().
|
static |
Definition at line 144 of file AutoUpgrade.cpp.
References llvm::cast(), F, llvm::Intrinsic::getOrInsertDeclaration(), llvm::Type::isVectorTy(), and rename().
Referenced by upgradeX86IntrinsicFunction().
Definition at line 2419 of file AutoUpgrade.cpp.
References llvm::ArrayRef(), llvm::cast(), llvm::FixedVectorType::get(), and llvm::Constant::getNullValue().
Referenced by upgradeX86IntrinsicCall().
Definition at line 2453 of file AutoUpgrade.cpp.
References llvm::ArrayRef(), llvm::cast(), llvm::FixedVectorType::get(), and llvm::Constant::getNullValue().
Referenced by upgradeX86IntrinsicCall().
Definition at line 2654 of file AutoUpgrade.cpp.
References llvm::CallBase::arg_size(), llvm::cast(), emitX86Select(), llvm::CallBase::getArgOperand(), llvm::User::getOperand(), and llvm::Value::getType().
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 2680 of file AutoUpgrade.cpp.
References llvm::Constant::getAllOnesValue(), llvm::CallBase::getArgOperand(), llvm::Constant::getNullValue(), llvm::Value::getType(), llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLE, llvm::CmpInst::ICMP_SLT, llvm::CmpInst::ICMP_UGE, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULE, llvm::CmpInst::ICMP_ULT, Imm, LHS, llvm_unreachable, and RHS.
Referenced by upgradeX86IntrinsicCall().
|
static |
Definition at line 2579 of file AutoUpgrade.cpp.
References emitX86Select(), llvm::ConstantAggregateZero::get(), llvm::CallBase::getArgOperand(), llvm::Type::getPrimitiveSizeInBits(), llvm::Value::getType(), llvm_unreachable, and std::swap().
Referenced by upgradeX86IntrinsicCall().