LLVM 19.0.0git
Functions | Variables
AutoUpgrade.cpp File Reference
#include "llvm/IR/AutoUpgrade.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/IR/AttributeMask.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/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/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/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Verifier.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Regex.h"
#include "llvm/TargetParser/Triple.h"
#include <cstring>

Go to the source code of this file.

Functions

static void rename (GlobalValue *GV)
 
static bool upgradePTESTIntrinsic (Function *F, Intrinsic::ID IID, Function *&NewFn)
 
static bool upgradeX86IntrinsicsWith8BitMask (Function *F, Intrinsic::ID IID, Function *&NewFn)
 
static bool upgradeX86MaskedFPCompare (Function *F, Intrinsic::ID IID, Function *&NewFn)
 
static bool upgradeX86BF16Intrinsic (Function *F, Intrinsic::ID IID, Function *&NewFn)
 
static bool upgradeX86BF16DPIntrinsic (Function *F, Intrinsic::ID IID, Function *&NewFn)
 
static bool shouldUpgradeX86Intrinsic (Function *F, StringRef Name)
 
static bool upgradeX86IntrinsicFunction (Function *F, StringRef Name, Function *&NewFn)
 
static bool upgradeArmOrAarch64IntrinsicFunction (bool IsArm, Function *F, StringRef Name, Function *&NewFn)
 
static Intrinsic::ID shouldUpgradeNVPTXBF16Intrinsic (StringRef Name)
 
static bool upgradeIntrinsicFunction1 (Function *F, Function *&NewFn)
 
static ValueupgradeX86PSLLDQIntrinsics (IRBuilder<> &Builder, Value *Op, unsigned Shift)
 
static ValueupgradeX86PSRLDQIntrinsics (IRBuilder<> &Builder, Value *Op, unsigned Shift)
 
static ValuegetX86MaskVec (IRBuilder<> &Builder, Value *Mask, unsigned NumElts)
 
static ValueemitX86Select (IRBuilder<> &Builder, Value *Mask, Value *Op0, Value *Op1)
 
static ValueemitX86ScalarSelect (IRBuilder<> &Builder, Value *Mask, Value *Op0, Value *Op1)
 
static ValueupgradeX86ALIGNIntrinsics (IRBuilder<> &Builder, Value *Op0, Value *Op1, Value *Shift, Value *Passthru, Value *Mask, bool IsVALIGN)
 
static ValueupgradeX86VPERMT2Intrinsics (IRBuilder<> &Builder, CallBase &CI, bool ZeroMask, bool IndexForm)
 
static ValueupgradeX86BinaryIntrinsics (IRBuilder<> &Builder, CallBase &CI, Intrinsic::ID IID)
 
static ValueupgradeX86Rotate (IRBuilder<> &Builder, CallBase &CI, bool IsRotateRight)
 
static ValueupgradeX86vpcom (IRBuilder<> &Builder, CallBase &CI, unsigned Imm, bool IsSigned)
 
static ValueupgradeX86ConcatShift (IRBuilder<> &Builder, CallBase &CI, bool IsShiftRight, bool ZeroMask)
 
static ValueupgradeMaskedStore (IRBuilder<> &Builder, Value *Ptr, Value *Data, Value *Mask, bool Aligned)
 
static ValueupgradeMaskedLoad (IRBuilder<> &Builder, Value *Ptr, Value *Passthru, Value *Mask, bool Aligned)
 
static ValueupgradeAbs (IRBuilder<> &Builder, CallBase &CI)
 
static ValueupgradePMULDQ (IRBuilder<> &Builder, CallBase &CI, bool IsSigned)
 
static ValueapplyX86MaskOn1BitsVec (IRBuilder<> &Builder, Value *Vec, Value *Mask)
 
static ValueupgradeMaskedCompare (IRBuilder<> &Builder, CallBase &CI, unsigned CC, bool Signed)
 
static ValueupgradeX86MaskedShift (IRBuilder<> &Builder, CallBase &CI, Intrinsic::ID IID)
 
static ValueupgradeMaskedMove (IRBuilder<> &Builder, CallBase &CI)
 
static ValueupgradeMaskToInt (IRBuilder<> &Builder, CallBase &CI)
 
static bool upgradeAVX512MaskToSelect (StringRef Name, IRBuilder<> &Builder, CallBase &CI, Value *&Rep)
 
static ValueupgradeARMIntrinsicCall (StringRef Name, CallBase *CI, Function *F, IRBuilder<> &Builder)
 
static ValueupgradeAMDGCNIntrinsicCall (StringRef Name, CallBase *CI, Function *F, IRBuilder<> &Builder)
 
static bool upgradeRetainReleaseMarker (Module &M)
 This checks for objc retain release marker which should be upgraded.
 
static bool isOldLoopArgument (Metadata *MD)
 
static MDStringupgradeLoopTag (LLVMContext &C, StringRef OldTag)
 
static MetadataupgradeLoopArgument (Metadata *MD)
 

Variables

static cl::opt< boolDisableAutoUpgradeDebugInfo ("disable-auto-upgrade-debug-info", cl::desc("Disable autoupgrade of debug info"))
 

Function Documentation

◆ applyX86MaskOn1BitsVec()

static Value * applyX86MaskOn1BitsVec ( IRBuilder<> &  Builder,
Value Vec,
Value Mask 
)
static

◆ emitX86ScalarSelect()

static Value * emitX86ScalarSelect ( IRBuilder<> &  Builder,
Value Mask,
Value Op0,
Value Op1 
)
static

◆ emitX86Select()

static Value * emitX86Select ( IRBuilder<> &  Builder,
Value Mask,
Value Op0,
Value Op1 
)
static

◆ getX86MaskVec()

static Value * getX86MaskVec ( IRBuilder<> &  Builder,
Value Mask,
unsigned  NumElts 
)
static

◆ isOldLoopArgument()

static bool isOldLoopArgument ( Metadata MD)
static

Definition at line 5181 of file AutoUpgrade.cpp.

Referenced by llvm::upgradeInstructionLoopAttachment().

◆ rename()

static void rename ( GlobalValue GV)
static

◆ shouldUpgradeNVPTXBF16Intrinsic()

static Intrinsic::ID shouldUpgradeNVPTXBF16Intrinsic ( StringRef  Name)
static

◆ shouldUpgradeX86Intrinsic()

static bool shouldUpgradeX86Intrinsic ( Function F,
StringRef  Name 
)
static

Definition at line 119 of file AutoUpgrade.cpp.

References Name.

Referenced by upgradeX86IntrinsicFunction().

◆ upgradeAbs()

static Value * upgradeAbs ( IRBuilder<> &  Builder,
CallBase CI 
)
static

◆ upgradeAMDGCNIntrinsicCall()

static Value * upgradeAMDGCNIntrinsicCall ( StringRef  Name,
CallBase CI,
Function F,
IRBuilder<> &  Builder 
)
static

◆ upgradeARMIntrinsicCall()

static Value * upgradeARMIntrinsicCall ( StringRef  Name,
CallBase CI,
Function F,
IRBuilder<> &  Builder 
)
static

◆ upgradeArmOrAarch64IntrinsicFunction()

static bool upgradeArmOrAarch64IntrinsicFunction ( bool  IsArm,
Function F,
StringRef  Name,
Function *&  NewFn 
)
static

◆ upgradeAVX512MaskToSelect()

static bool upgradeAVX512MaskToSelect ( StringRef  Name,
IRBuilder<> &  Builder,
CallBase CI,
Value *&  Rep 
)
static

◆ upgradeIntrinsicFunction1()

static bool upgradeIntrinsicFunction1 ( Function F,
Function *&  NewFn 
)
static

◆ upgradeLoopArgument()

static Metadata * upgradeLoopArgument ( Metadata MD)
static

◆ upgradeLoopTag()

static MDString * upgradeLoopTag ( LLVMContext C,
StringRef  OldTag 
)
static

◆ upgradeMaskedCompare()

static Value * upgradeMaskedCompare ( IRBuilder<> &  Builder,
CallBase CI,
unsigned  CC,
bool  Signed 
)
static

◆ upgradeMaskedLoad()

static Value * upgradeMaskedLoad ( IRBuilder<> &  Builder,
Value Ptr,
Value Passthru,
Value Mask,
bool  Aligned 
)
static

◆ upgradeMaskedMove()

static Value * upgradeMaskedMove ( IRBuilder<> &  Builder,
CallBase CI 
)
static

◆ upgradeMaskedStore()

static Value * upgradeMaskedStore ( IRBuilder<> &  Builder,
Value Ptr,
Value Data,
Value Mask,
bool  Aligned 
)
static

◆ upgradeMaskToInt()

static Value * upgradeMaskToInt ( IRBuilder<> &  Builder,
CallBase CI 
)
static

◆ upgradePMULDQ()

static Value * upgradePMULDQ ( IRBuilder<> &  Builder,
CallBase CI,
bool  IsSigned 
)
static

◆ upgradePTESTIntrinsic()

static bool upgradePTESTIntrinsic ( Function F,
Intrinsic::ID  IID,
Function *&  NewFn 
)
static

◆ upgradeRetainReleaseMarker()

static bool upgradeRetainReleaseMarker ( Module M)
static

This checks for objc retain release marker which should be upgraded.

It returns true if module is modified.

Definition at line 4822 of file AutoUpgrade.cpp.

References llvm::Module::Error, llvm::MDString::get(), llvm::NamedMDNode::getOperand(), and llvm::SmallVectorBase< Size_T >::size().

Referenced by llvm::UpgradeARCRuntime().

◆ upgradeX86ALIGNIntrinsics()

static Value * upgradeX86ALIGNIntrinsics ( IRBuilder<> &  Builder,
Value Op0,
Value Op1,
Value Shift,
Value Passthru,
Value Mask,
bool  IsVALIGN 
)
static

◆ upgradeX86BF16DPIntrinsic()

static bool upgradeX86BF16DPIntrinsic ( Function F,
Intrinsic::ID  IID,
Function *&  NewFn 
)
static

Definition at line 109 of file AutoUpgrade.cpp.

References F, llvm::Intrinsic::getDeclaration(), and rename().

Referenced by upgradeX86IntrinsicFunction().

◆ upgradeX86BF16Intrinsic()

static bool upgradeX86BF16Intrinsic ( Function F,
Intrinsic::ID  IID,
Function *&  NewFn 
)
static

Definition at line 99 of file AutoUpgrade.cpp.

References F, llvm::Intrinsic::getDeclaration(), and rename().

Referenced by upgradeX86IntrinsicFunction().

◆ upgradeX86BinaryIntrinsics()

static Value * upgradeX86BinaryIntrinsics ( IRBuilder<> &  Builder,
CallBase CI,
Intrinsic::ID  IID 
)
static

◆ upgradeX86ConcatShift()

static Value * upgradeX86ConcatShift ( IRBuilder<> &  Builder,
CallBase CI,
bool  IsShiftRight,
bool  ZeroMask 
)
static

◆ upgradeX86IntrinsicFunction()

static bool upgradeX86IntrinsicFunction ( Function F,
StringRef  Name,
Function *&  NewFn 
)
static

◆ upgradeX86IntrinsicsWith8BitMask()

static bool upgradeX86IntrinsicsWith8BitMask ( Function F,
Intrinsic::ID  IID,
Function *&  NewFn 
)
static

◆ upgradeX86MaskedFPCompare()

static bool upgradeX86MaskedFPCompare ( Function F,
Intrinsic::ID  IID,
Function *&  NewFn 
)
static

Definition at line 88 of file AutoUpgrade.cpp.

References F, llvm::Intrinsic::getDeclaration(), and rename().

Referenced by upgradeX86IntrinsicFunction().

◆ upgradeX86MaskedShift()

static Value * upgradeX86MaskedShift ( IRBuilder<> &  Builder,
CallBase CI,
Intrinsic::ID  IID 
)
static

◆ upgradeX86PSLLDQIntrinsics()

static Value * upgradeX86PSLLDQIntrinsics ( IRBuilder<> &  Builder,
Value Op,
unsigned  Shift 
)
static

◆ upgradeX86PSRLDQIntrinsics()

static Value * upgradeX86PSRLDQIntrinsics ( IRBuilder<> &  Builder,
Value Op,
unsigned  Shift 
)
static

◆ upgradeX86Rotate()

static Value * upgradeX86Rotate ( IRBuilder<> &  Builder,
CallBase CI,
bool  IsRotateRight 
)
static

◆ upgradeX86vpcom()

static Value * upgradeX86vpcom ( IRBuilder<> &  Builder,
CallBase CI,
unsigned  Imm,
bool  IsSigned 
)
static

◆ upgradeX86VPERMT2Intrinsics()

static Value * upgradeX86VPERMT2Intrinsics ( IRBuilder<> &  Builder,
CallBase CI,
bool  ZeroMask,
bool  IndexForm 
)
static

Variable Documentation

◆ DisableAutoUpgradeDebugInfo

cl::opt< bool > DisableAutoUpgradeDebugInfo("disable-auto-upgrade-debug-info", cl::desc("Disable autoupgrade of debug info")) ( "disable-auto-upgrade-debug-info"  ,
cl::desc("Disable autoupgrade of debug info")   
)
static

Referenced by llvm::UpgradeDebugInfo().