clang  19.0.0git
Macros | Enumerations | Functions | Variables
CGBuiltin.cpp File Reference
#include "ABIInfo.h"
#include "CGCUDARuntime.h"
#include "CGCXXABI.h"
#include "CGHLSLRuntime.h"
#include "CGObjCRuntime.h"
#include "CGOpenCLRuntime.h"
#include "CGRecordLayout.h"
#include "CodeGenFunction.h"
#include "CodeGenModule.h"
#include "ConstantEmitter.h"
#include "PatternInit.h"
#include "TargetInfo.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/OSLog.h"
#include "clang/AST/OperationKinds.h"
#include "clang/Basic/TargetBuiltins.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/TargetOptions.h"
#include "clang/CodeGen/CGFunctionInfo.h"
#include "clang/Frontend/FrontendDiagnostic.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/FloatingPointMode.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/FPAccuracy.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IntrinsicsAArch64.h"
#include "llvm/IR/IntrinsicsAMDGPU.h"
#include "llvm/IR/IntrinsicsARM.h"
#include "llvm/IR/IntrinsicsBPF.h"
#include "llvm/IR/IntrinsicsDirectX.h"
#include "llvm/IR/IntrinsicsHexagon.h"
#include "llvm/IR/IntrinsicsNVPTX.h"
#include "llvm/IR/IntrinsicsPowerPC.h"
#include "llvm/IR/IntrinsicsR600.h"
#include "llvm/IR/IntrinsicsRISCV.h"
#include "llvm/IR/IntrinsicsS390.h"
#include "llvm/IR/IntrinsicsVE.h"
#include "llvm/IR/IntrinsicsWebAssembly.h"
#include "llvm/IR/IntrinsicsX86.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/MatrixBuilder.h"
#include "llvm/IR/MemoryModelRelaxationAnnotations.h"
#include "llvm/Support/ConvertUTF.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/ScopedPrinter.h"
#include "llvm/TargetParser/AArch64TargetParser.h"
#include "llvm/TargetParser/X86TargetParser.h"
#include <optional>
#include <sstream>
#include "clang/Basic/arm_sve_builtin_cg.inc"
#include "clang/Basic/BuiltinsAArch64NeonSVEBridge_cg.def"
#include "clang/Basic/arm_sme_builtin_cg.inc"
#include "clang/Basic/arm_mve_builtin_cg.inc"
#include "clang/Basic/arm_cde_builtin_cg.inc"
#include "llvm/TargetParser/X86TargetParser.def"
#include "llvm/TargetParser/PPCTargetParser.def"
#include "clang/Basic/BuiltinsPPC.def"
#include "clang/Basic/BuiltinsHexagonMapCustomDep.def"
#include "clang/Basic/riscv_vector_builtin_cg.inc"
#include "clang/Basic/riscv_sifive_vector_builtin_cg.inc"

Go to the source code of this file.

Macros

#define MUTATE_LDBL(func)
 
#define NEONMAP0(NameBase)    { #NameBase, NEON::BI__builtin_neon_ ## NameBase, 0, 0, 0 }
 
#define NEONMAP1(NameBase, LLVMIntrinsic, TypeModifier)
 
#define NEONMAP2(NameBase, LLVMIntrinsic, AltLLVMIntrinsic, TypeModifier)
 
#define SVEMAP1(NameBase, LLVMIntrinsic, TypeModifier)
 
#define SVEMAP2(NameBase, TypeModifier)    { #NameBase, SVE::BI__builtin_sve_##NameBase, 0, 0, TypeModifier }
 
#define GET_SVE_LLVM_INTRINSIC_MAP
 
#define SMEMAP1(NameBase, LLVMIntrinsic, TypeModifier)
 
#define SMEMAP2(NameBase, TypeModifier)    { #NameBase, SME::BI__builtin_sme_##NameBase, 0, 0, TypeModifier }
 
#define GET_SME_LLVM_INTRINSIC_MAP
 
#define X86_VENDOR(ENUM, STRING)    .Case(STRING, {0u, static_cast<unsigned>(llvm::X86::ENUM)})
 
#define X86_CPU_TYPE_ALIAS(ENUM, ALIAS)    .Case(ALIAS, {1u, static_cast<unsigned>(llvm::X86::ENUM)})
 
#define X86_CPU_TYPE(ENUM, STR)    .Case(STR, {1u, static_cast<unsigned>(llvm::X86::ENUM)})
 
#define X86_CPU_SUBTYPE_ALIAS(ENUM, ALIAS)    .Case(ALIAS, {2u, static_cast<unsigned>(llvm::X86::ENUM)})
 
#define X86_CPU_SUBTYPE(ENUM, STR)    .Case(STR, {2u, static_cast<unsigned>(llvm::X86::ENUM)})
 
#define INTRINSIC_X86_XSAVE_ID(NAME)
 
#define PPC_AIX_CPU(NAME, SUPPORT_METHOD, INDEX, COMPARE_OP, VALUE)    .Case(NAME, {SUPPORT_METHOD, INDEX, COMPARE_OP, VALUE})
 
#define PPC_LNX_CPU(Name, NumericID)   .Case(Name, NumericID)
 
#define PPC_AIX_FEATURE(NAME, DESC, SUPPORT_METHOD, INDEX, MASK, COMP_OP, VALUE)    .Case(NAME, {SUPPORT_METHOD, INDEX, MASK, COMP_OP, VALUE})
 
#define PPC_LNX_FEATURE(Name, Description, EnumName, Bitmask, FA_WORD)    .Case(Name, {FA_WORD, Bitmask})
 
#define CUSTOM_BUILTIN(Name, Intr, Types, Accumulate, Feature)    case PPC::BI__builtin_##Name:
 
#define CUSTOM_BUILTIN(Name, Intr, Types, Acc, Feature)
 
#define INTRINSIC_WITH_CC(NAME)
 
#define MMA_INTR(geom_op_type, layout)    Intrinsic::nvvm_wmma_##geom_op_type##_##layout##_stride
 
#define MMA_LDST(n, geom_op_type)    { n, MMA_INTR(geom_op_type, col), MMA_INTR(geom_op_type, row) }
 
#define MMA_VARIANTS(geom, type)
 
#define MMA_SATF_VARIANTS(geom, type)
 
#define MMA_VARIANTS_I4(geom, type)
 
#define MMA_VARIANTS_B1_XOR(geom, type)
 
#define MMA_VARIANTS_B1_AND(geom, type)
 
#define LD_VOLATILE_CASES(ADDR_SPACE)
 
#define LD_CASES(ORDER, SCOPE, ADDR_SPACE)
 
#define LD_CASES_AS(ORDER, SCOPE)
 
#define LD_CASES_AS_SCOPES(ORDER)
 
#define ST_VOLATILE_CASES(ADDR_SPACE)
 
#define ST_CASES(ORDER, SCOPE, ADDR_SPACE)
 
#define ST_CASES_AS(ORDER, SCOPE)
 
#define ST_CASES_AS_SCOPES(ORDER)
 
#define CUSTOM_BUILTIN_MAPPING(x, s)    { Hexagon::BI__builtin_HEXAGON_##x, Intrinsic::hexagon_##x, s },
 

Enumerations

enum class  MSVCIntrin
 
enum  {
  AddRetType = (1 << 0) , Add1ArgType = (1 << 1) , Add2ArgTypes = (1 << 2) , VectorizeRetType = (1 << 3) ,
  VectorizeArgTypes = (1 << 4) , InventFloatType = (1 << 5) , UnsignedAlts = (1 << 6) , Use64BitVectors = (1 << 7) ,
  Use128BitVectors = (1 << 8) , Vectorize1ArgType = Add1ArgType | VectorizeArgTypes , VectorRet = AddRetType | VectorizeRetType , VectorRetGetArgs01 ,
  FpCmpzModifiers
}
 
enum  SpecialRegisterAccessKind { NormalRead , VolatileRead , Write }
 

Functions

static void initializeAlloca (CodeGenFunction &CGF, AllocaInst *AI, Value *Size, Align AlignmentInBytes)
 
static ValueEmitToInt (CodeGenFunction &CGF, llvm::Value *V, QualType T, llvm::IntegerType *IntType)
 Emit the conversions required to turn the given value into an integer of the given size. More...
 
static ValueEmitFromInt (CodeGenFunction &CGF, llvm::Value *V, QualType T, llvm::Type *ResultType)
 
static Address CheckAtomicAlignment (CodeGenFunction &CGF, const CallExpr *E)
 
static ValueMakeBinaryAtomicValue (CodeGenFunction &CGF, llvm::AtomicRMWInst::BinOp Kind, const CallExpr *E, AtomicOrdering Ordering=AtomicOrdering::SequentiallyConsistent)
 Utility to insert an atomic instruction based on Intrinsic::ID and the expression node. More...
 
static ValueEmitNontemporalStore (CodeGenFunction &CGF, const CallExpr *E)
 
static ValueEmitNontemporalLoad (CodeGenFunction &CGF, const CallExpr *E)
 
static RValue EmitBinaryAtomic (CodeGenFunction &CGF, llvm::AtomicRMWInst::BinOp Kind, const CallExpr *E)
 
static RValue EmitBinaryAtomicPost (CodeGenFunction &CGF, llvm::AtomicRMWInst::BinOp Kind, const CallExpr *E, Instruction::BinaryOps Op, bool Invert=false)
 Utility to insert an atomic instruction based Intrinsic::ID and the expression node, where the return value is the result of the operation. More...
 
static ValueMakeAtomicCmpXchgValue (CodeGenFunction &CGF, const CallExpr *E, bool ReturnBool)
 Utility to insert an atomic cmpxchg instruction. More...
 
static ValueEmitAtomicCmpXchgForMSIntrin (CodeGenFunction &CGF, const CallExpr *E, AtomicOrdering SuccessOrdering=AtomicOrdering::SequentiallyConsistent)
 This function should be invoked to emit atomic cmpxchg for Microsoft's _InterlockedCompareExchange* intrinsics which have the following signature: T _InterlockedCompareExchange(T volatile *Destination, T Exchange, T Comparand);. More...
 
static ValueEmitAtomicCmpXchg128ForMSIntrin (CodeGenFunction &CGF, const CallExpr *E, AtomicOrdering SuccessOrdering)
 
static ValueEmitAtomicIncrementValue (CodeGenFunction &CGF, const CallExpr *E, AtomicOrdering Ordering=AtomicOrdering::SequentiallyConsistent)
 
static ValueEmitAtomicDecrementValue (CodeGenFunction &CGF, const CallExpr *E, AtomicOrdering Ordering=AtomicOrdering::SequentiallyConsistent)
 
static ValueEmitISOVolatileLoad (CodeGenFunction &CGF, const CallExpr *E)
 
static ValueEmitISOVolatileStore (CodeGenFunction &CGF, const CallExpr *E)
 
static CallInst * CreateBuiltinCallWithAttr (CodeGenFunction &CGF, StringRef Name, llvm::Function *FPBuiltinF, ArrayRef< Value * > Args, unsigned ID)
 
static Function * getIntrinsic (CodeGenFunction &CGF, llvm::Value *Src0, unsigned FPIntrinsicID, unsigned IntrinsicID, bool HasAccuracyRequirement)
 
static bool hasAccuracyRequirement (CodeGenFunction &CGF, StringRef Name)
 
static Function * emitMaybeIntrinsic (CodeGenFunction &CGF, const CallExpr *E, unsigned FPAccuracyIntrinsicID, unsigned IntrinsicID, llvm::Value *Src0, StringRef &Name)
 
static ValueemitUnaryMaybeConstrainedFPBuiltin (CodeGenFunction &CGF, const CallExpr *E, unsigned IntrinsicID, unsigned ConstrainedIntrinsicID, unsigned FPAccuracyIntrinsicID=Intrinsic::not_intrinsic)
 
static ValueemitBinaryMaybeConstrainedFPBuiltin (CodeGenFunction &CGF, const CallExpr *E, unsigned IntrinsicID, unsigned ConstrainedIntrinsicID, unsigned FPAccuracyIntrinsicID=Intrinsic::not_intrinsic)
 
static ValueemitBinaryExpMaybeConstrainedFPBuiltin (CodeGenFunction &CGF, const CallExpr *E, llvm::Intrinsic::ID IntrinsicID, llvm::Intrinsic::ID ConstrainedIntrinsicID)
 
static ValueemitTernaryMaybeConstrainedFPBuiltin (CodeGenFunction &CGF, const CallExpr *E, unsigned IntrinsicID, unsigned ConstrainedIntrinsicID)
 
static ValueemitCallMaybeConstrainedFPBuiltin (CodeGenFunction &CGF, unsigned IntrinsicID, unsigned ConstrainedIntrinsicID, llvm::Type *Ty, ArrayRef< Value * > Args)
 
static ValueemitUnaryBuiltin (CodeGenFunction &CGF, const CallExpr *E, unsigned IntrinsicID, llvm::StringRef Name="")
 
static ValueemitBinaryBuiltin (CodeGenFunction &CGF, const CallExpr *E, unsigned IntrinsicID)
 
static ValueemitTernaryBuiltin (CodeGenFunction &CGF, const CallExpr *E, unsigned IntrinsicID)
 
static ValueemitFPIntBuiltin (CodeGenFunction &CGF, const CallExpr *E, unsigned IntrinsicID)
 
static ValueemitMaybeConstrainedFPToIntRoundBuiltin (CodeGenFunction &CGF, const CallExpr *E, unsigned IntrinsicID, unsigned ConstrainedIntrinsicID)
 
static ValueemitFrexpBuiltin (CodeGenFunction &CGF, const CallExpr *E, llvm::Intrinsic::ID IntrinsicID)
 
static ValueEmitFAbs (CodeGenFunction &CGF, Value *V)
 EmitFAbs - Emit a call to @llvm.fabs(). More...
 
static ValueEmitSignBit (CodeGenFunction &CGF, Value *V)
 Emit the computation of the sign bit for a floating point value. More...
 
static RValue emitLibraryCall (CodeGenFunction &CGF, const FunctionDecl *FD, const CallExpr *E, llvm::Constant *calleeValue)
 
static llvm::Value * EmitOverflowIntrinsic (CodeGenFunction &CGF, const llvm::Intrinsic::ID IntrinsicID, llvm::Value *X, llvm::Value *Y, llvm::Value *&Carry)
 Emit a call to llvm. More...
 
static ValueemitRangedBuiltin (CodeGenFunction &CGF, unsigned IntrinsicID, int low, int high)
 
static WidthAndSignedness getIntegerWidthAndSignedness (const clang::ASTContext &context, const clang::QualType Type)
 
static struct WidthAndSignedness EncompassingIntegerType (ArrayRef< struct WidthAndSignedness > Types)
 
static bool areBOSTypesCompatible (int From, int To)
 Checks if using the result of __builtin_object_size(p, From) in place of __builtin_object_size(p, To) is correct. More...
 
static llvm::Value * getDefaultBuiltinObjectSizeResult (unsigned Type, llvm::IntegerType *ResType)
 
static unsigned CountCountedByAttrs (const RecordDecl *RD)
 
static char bitActionToX86BTCode (BitTest::ActionKind A)
 
static llvm::Value * EmitX86BitTestIntrinsic (CodeGenFunction &CGF, BitTest BT, const CallExpr *E, Value *BitBase, Value *BitPos)
 
static llvm::AtomicOrdering getBitTestAtomicOrdering (BitTest::InterlockingKind I)
 
static llvm::Value * EmitBitTestIntrinsic (CodeGenFunction &CGF, unsigned BuiltinID, const CallExpr *E)
 Emit a _bittest* intrinsic. More...
 
static llvm::Value * emitPPCLoadReserveIntrinsic (CodeGenFunction &CGF, unsigned BuiltinID, const CallExpr *E)
 
static RValue EmitMSVCRTSetJmp (CodeGenFunction &CGF, MSVCSetJmpKind SJKind, const CallExpr *E)
 MSVC handles setjmp a bit differently on different platforms. More...
 
static std::optional< CodeGenFunction::MSVCIntrintranslateArmToMsvcIntrin (unsigned BuiltinID)
 
static std::optional< CodeGenFunction::MSVCIntrintranslateAarch64ToMsvcIntrin (unsigned BuiltinID)
 
static std::optional< CodeGenFunction::MSVCIntrintranslateX86ToMsvcIntrin (unsigned BuiltinID)
 
static ValueEmitAbs (CodeGenFunction &CGF, Value *ArgValue, bool HasNSW)
 
static ValueEmitOverflowCheckedAbs (CodeGenFunction &CGF, const CallExpr *E, bool SanitizeOverflow)
 
static CanQualType getOSLogArgType (ASTContext &C, int Size)
 Get the argument type for arguments to os_log_helper. More...
 
static bool isSpecialUnsignedMultiplySignedResult (unsigned BuiltinID, WidthAndSignedness Op1Info, WidthAndSignedness Op2Info, WidthAndSignedness ResultInfo)
 
static RValue EmitCheckedUnsignedMultiplySignedResult (CodeGenFunction &CGF, const clang::Expr *Op1, WidthAndSignedness Op1Info, const clang::Expr *Op2, WidthAndSignedness Op2Info, const clang::Expr *ResultArg, QualType ResultQTy, WidthAndSignedness ResultInfo)
 
static bool isSpecialMixedSignMultiply (unsigned BuiltinID, WidthAndSignedness Op1Info, WidthAndSignedness Op2Info, WidthAndSignedness ResultInfo)
 Determine if a binop is a checked mixed-sign multiply we can specialize. More...
 
static RValue EmitCheckedMixedSignMultiply (CodeGenFunction &CGF, const clang::Expr *Op1, WidthAndSignedness Op1Info, const clang::Expr *Op2, WidthAndSignedness Op2Info, const clang::Expr *ResultArg, QualType ResultQTy, WidthAndSignedness ResultInfo)
 Emit a checked mixed-sign multiply. More...
 
static bool TypeRequiresBuiltinLaunderImp (const ASTContext &Ctx, QualType Ty, llvm::SmallPtrSetImpl< const Decl * > &Seen)
 
static bool TypeRequiresBuiltinLaunder (CodeGenModule &CGM, QualType Ty)
 Determine if the specified type requires laundering by checking if it is a dynamic class type or contains a subobject which is a dynamic class type. More...
 
static unsigned mutateLongDoubleBuiltin (unsigned BuiltinID)
 
static ValuetryUseTestFPKind (CodeGenFunction &CGF, unsigned BuiltinID, Value *V)
 
static RValue EmitHipStdParUnsupportedBuiltin (CodeGenFunction *CGF, const FunctionDecl *FD)
 
static ValueEmitTargetArchBuiltinExpr (CodeGenFunction *CGF, unsigned BuiltinID, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Triple::ArchType Arch)
 
static llvm::FixedVectorType * GetNeonType (CodeGenFunction *CGF, NeonTypeFlags TypeFlags, bool HasLegalHalfType=true, bool V1Ty=false, bool AllowBFloatArgsAndRet=true)
 
static llvm::VectorType * GetFloatNeonType (CodeGenFunction *CGF, NeonTypeFlags IntTypeFlags)
 
static const ARMVectorIntrinsicInfo * findARMVectorIntrinsicInMap (ArrayRef< ARMVectorIntrinsicInfo > IntrinsicMap, unsigned BuiltinID, bool &MapProvenSorted)
 
static ValueEmitCommonNeonSISDBuiltinExpr (CodeGenFunction &CGF, const ARMVectorIntrinsicInfo &SISDInfo, SmallVectorImpl< Value * > &Ops, const CallExpr *E)
 
static ValuepackTBLDVectorList (CodeGenFunction &CGF, ArrayRef< Value * > Ops, Value *ExtOp, Value *IndexOp, llvm::Type *ResTy, unsigned IntID, const char *Name)
 
static ValueEmitAMDGCNBallotForExec (CodeGenFunction &CGF, const CallExpr *E, llvm::Type *RegisterType, llvm::Type *ValueType, bool isExecHi)
 
static ValueEmitSpecialRegisterBuiltin (CodeGenFunction &CGF, const CallExpr *E, llvm::Type *RegisterType, llvm::Type *ValueType, SpecialRegisterAccessKind AccessKind, StringRef SysReg="")
 
static bool HasExtraNeonArgument (unsigned BuiltinID)
 Return true if BuiltinID is an overloaded Neon intrinsic with an extra argument that specifies the vector type. More...
 
template<typename Integer >
static Integer GetIntegerConstantValue (const Expr *E, ASTContext &Context)
 
static llvm::Value * SignOrZeroExtend (CGBuilderTy &Builder, llvm::Value *V, llvm::Type *T, bool Unsigned)
 
static llvm::Value * MVEImmediateShr (CGBuilderTy &Builder, llvm::Value *V, uint32_t Shift, bool Unsigned)
 
static llvm::Value * ARMMVEVectorSplat (CGBuilderTy &Builder, llvm::Value *V)
 
static llvm::Value * ARMMVEVectorReinterpret (CGBuilderTy &Builder, CodeGenFunction *CGF, llvm::Value *V, llvm::Type *DestType)
 
static llvm::Value * VectorUnzip (CGBuilderTy &Builder, llvm::Value *V, bool Odd)
 
static llvm::Value * VectorZip (CGBuilderTy &Builder, llvm::Value *V0, llvm::Value *V1)
 
template<unsigned HighBit, unsigned OtherBits>
static llvm::Value * ARMMVEConstantSplat (CGBuilderTy &Builder, llvm::Type *VT)
 
static llvm::Value * ARMMVEVectorElementReverse (CGBuilderTy &Builder, llvm::Value *V, unsigned ReverseWidth)
 
static ValueEmitAArch64TblBuiltinExpr (CodeGenFunction &CGF, unsigned BuiltinID, const CallExpr *E, SmallVectorImpl< Value * > &Ops, llvm::Triple::ArchType Arch)
 
static llvm::ScalableVectorType * getSVEVectorForElementType (llvm::Type *EltTy)
 
static void InsertExplicitZeroOperand (CGBuilderTy &Builder, llvm::Type *Ty, SmallVectorImpl< Value * > &Ops)
 
static void InsertExplicitUndefOperand (CGBuilderTy &Builder, llvm::Type *Ty, SmallVectorImpl< Value * > &Ops)
 
static void swapCommutativeSMEOperands (unsigned BuiltinID, SmallVectorImpl< Value * > &Ops)
 
static ValuegetMaskVecValue (CodeGenFunction &CGF, Value *Mask, unsigned NumElts)
 
static ValueEmitX86MaskedStore (CodeGenFunction &CGF, ArrayRef< Value * > Ops, Align Alignment)
 
static ValueEmitX86MaskedLoad (CodeGenFunction &CGF, ArrayRef< Value * > Ops, Align Alignment)
 
static ValueEmitX86ExpandLoad (CodeGenFunction &CGF, ArrayRef< Value * > Ops)
 
static ValueEmitX86CompressExpand (CodeGenFunction &CGF, ArrayRef< Value * > Ops, bool IsCompress)
 
static ValueEmitX86CompressStore (CodeGenFunction &CGF, ArrayRef< Value * > Ops)
 
static ValueEmitX86MaskLogic (CodeGenFunction &CGF, Instruction::BinaryOps Opc, ArrayRef< Value * > Ops, bool InvertLHS=false)
 
static ValueEmitX86FunnelShift (CodeGenFunction &CGF, Value *Op0, Value *Op1, Value *Amt, bool IsRight)
 
static ValueEmitX86vpcom (CodeGenFunction &CGF, ArrayRef< Value * > Ops, bool IsSigned)
 
static ValueEmitX86Select (CodeGenFunction &CGF, Value *Mask, Value *Op0, Value *Op1)
 
static ValueEmitX86ScalarSelect (CodeGenFunction &CGF, Value *Mask, Value *Op0, Value *Op1)
 
static ValueEmitX86MaskedCompareResult (CodeGenFunction &CGF, Value *Cmp, unsigned NumElts, Value *MaskIn)
 
static ValueEmitX86MaskedCompare (CodeGenFunction &CGF, unsigned CC, bool Signed, ArrayRef< Value * > Ops)
 
static ValueEmitX86ConvertToMask (CodeGenFunction &CGF, Value *In)
 
static ValueEmitX86ConvertIntToFp (CodeGenFunction &CGF, const CallExpr *E, ArrayRef< Value * > Ops, bool IsSigned)
 
static ValueEmitX86FMAExpr (CodeGenFunction &CGF, const CallExpr *E, ArrayRef< Value * > Ops, unsigned BuiltinID, bool IsAddSub)
 
static ValueEmitScalarFMAExpr (CodeGenFunction &CGF, const CallExpr *E, MutableArrayRef< Value * > Ops, Value *Upper, bool ZeroMask=false, unsigned PTIdx=0, bool NegAcc=false)
 
static ValueEmitX86Muldq (CodeGenFunction &CGF, bool IsSigned, ArrayRef< Value * > Ops)
 
static ValueEmitX86Ternlog (CodeGenFunction &CGF, bool ZeroMask, ArrayRef< Value * > Ops)
 
static ValueEmitX86SExtMask (CodeGenFunction &CGF, Value *Op, llvm::Type *DstTy)
 
static ValueEmitX86CvtF16ToFloatExpr (CodeGenFunction &CGF, ArrayRef< Value * > Ops, llvm::Type *DstTy)
 
Intrinsic::ID getDotProductIntrinsic (QualType QT, int elementCount)
 
static ValueEmitSystemZIntrinsicWithCC (CodeGenFunction &CGF, unsigned IntrinsicID, const CallExpr *E)
 Handle a SystemZ function in which the final argument is a pointer to an int that receives the post-instruction CC value. More...
 
static std::pair< Intrinsic::ID, unsignedgetIntrinsicForHexagonNonClangBuiltin (unsigned BuiltinID)
 
static bool hasFuncNameRequestedFPAccuracy (StringRef Name, const LangOptions &LangOpts)
 

Variables

static const ARMVectorIntrinsicInfo ARMSIMDIntrinsicMap []
 
static const ARMVectorIntrinsicInfo AArch64SIMDIntrinsicMap []
 
static const ARMVectorIntrinsicInfo AArch64SISDIntrinsicMap []
 
static const std::pair< unsigned, unsignedNEONEquivalentIntrinsicMap []
 
static const ARMVectorIntrinsicInfo AArch64SVEIntrinsicMap []
 
static const ARMVectorIntrinsicInfo AArch64SMEIntrinsicMap []
 
static bool NEONSIMDIntrinsicsProvenSorted = false
 
static bool AArch64SIMDIntrinsicsProvenSorted = false
 
static bool AArch64SISDIntrinsicsProvenSorted = false
 
static bool AArch64SVEIntrinsicsProvenSorted = false
 
static bool AArch64SMEIntrinsicsProvenSorted = false
 
constexpr unsigned SVEBitsPerBlock = 128
 

Macro Definition Documentation

◆ CUSTOM_BUILTIN [1/2]

#define CUSTOM_BUILTIN (   Name,
  Intr,
  Types,
  Acc,
  Feature 
)
Value:
case PPC::BI__builtin_##Name: \
ID = Intrinsic::ppc_##Intr; \
Accumulate = Acc; \
break;

◆ CUSTOM_BUILTIN [2/2]

#define CUSTOM_BUILTIN (   Name,
  Intr,
  Types,
  Accumulate,
  Feature 
)     case PPC::BI__builtin_##Name:

◆ CUSTOM_BUILTIN_MAPPING

#define CUSTOM_BUILTIN_MAPPING (   x,
  s 
)     { Hexagon::BI__builtin_HEXAGON_##x, Intrinsic::hexagon_##x, s },

◆ GET_SME_LLVM_INTRINSIC_MAP

#define GET_SME_LLVM_INTRINSIC_MAP

◆ GET_SVE_LLVM_INTRINSIC_MAP

#define GET_SVE_LLVM_INTRINSIC_MAP

◆ INTRINSIC_WITH_CC

#define INTRINSIC_WITH_CC (   NAME)
Value:
case SystemZ::BI__builtin_##NAME: \
return EmitSystemZIntrinsicWithCC(*this, Intrinsic::NAME, E)
static Value * EmitSystemZIntrinsicWithCC(CodeGenFunction &CGF, unsigned IntrinsicID, const CallExpr *E)
Handle a SystemZ function in which the final argument is a pointer to an int that receives the post-i...

◆ INTRINSIC_X86_XSAVE_ID

#define INTRINSIC_X86_XSAVE_ID (   NAME)
Value:
case X86::BI__builtin_ia32_##NAME: \
ID = Intrinsic::x86_##NAME; \
break

◆ LD_CASES

#define LD_CASES (   ORDER,
  SCOPE,
  ADDR_SPACE 
)
Value:
case NVPTX::BI__nvvm##ORDER##SCOPE##_ld##ADDR_SPACE##_i: \
case NVPTX::BI__nvvm##ORDER##SCOPE##_ld##ADDR_SPACE##_l: \
case NVPTX::BI__nvvm##ORDER##SCOPE##_ld##ADDR_SPACE##_ll: \
return MakeScopedLd(Intrinsic::nvvm_ld##ADDR_SPACE##_i##ORDER##SCOPE); \
case NVPTX::BI__nvvm##ORDER##SCOPE##_ld##ADDR_SPACE##_f: \
case NVPTX::BI__nvvm##ORDER##SCOPE##_ld##ADDR_SPACE##_d: \
return MakeScopedLd(Intrinsic::nvvm_ld##ADDR_SPACE##_f##ORDER##SCOPE);

◆ LD_CASES_AS

#define LD_CASES_AS (   ORDER,
  SCOPE 
)
Value:
LD_CASES(ORDER, SCOPE, _gen) \
LD_CASES(ORDER, SCOPE, _global) \
LD_CASES(ORDER, SCOPE, _shared)
#define LD_CASES(ORDER, SCOPE, ADDR_SPACE)

◆ LD_CASES_AS_SCOPES

#define LD_CASES_AS_SCOPES (   ORDER)
Value:
LD_CASES_AS(ORDER, ) \
LD_CASES_AS(ORDER, _cta) \
LD_CASES_AS(ORDER, _sys)
#define LD_CASES_AS(ORDER, SCOPE)

◆ LD_VOLATILE_CASES

#define LD_VOLATILE_CASES (   ADDR_SPACE)
Value:
case NVPTX::BI__nvvm_volatile_ld##ADDR_SPACE##_i: \
case NVPTX::BI__nvvm_volatile_ld##ADDR_SPACE##_l: \
case NVPTX::BI__nvvm_volatile_ld##ADDR_SPACE##_ll: \
return MakeScopedLd(Intrinsic::nvvm_ld##ADDR_SPACE##_i_volatile); \
case NVPTX::BI__nvvm_volatile_ld##ADDR_SPACE##_f: \
case NVPTX::BI__nvvm_volatile_ld##ADDR_SPACE##_d: \
return MakeScopedLd(Intrinsic::nvvm_ld##ADDR_SPACE##_f_volatile);

◆ MMA_INTR

#define MMA_INTR (   geom_op_type,
  layout 
)     Intrinsic::nvvm_wmma_##geom_op_type##_##layout##_stride

Definition at line 19606 of file CGBuiltin.cpp.

◆ MMA_LDST

#define MMA_LDST (   n,
  geom_op_type 
)     { n, MMA_INTR(geom_op_type, col), MMA_INTR(geom_op_type, row) }

Definition at line 19608 of file CGBuiltin.cpp.

◆ MMA_SATF_VARIANTS

#define MMA_SATF_VARIANTS (   geom,
  type 
)
Value:
MMA_VARIANTS(geom, type), \
Intrinsic::nvvm_wmma_##geom##_mma_row_row_##type##_satfinite, \
Intrinsic::nvvm_wmma_##geom##_mma_row_col_##type##_satfinite, \
Intrinsic::nvvm_wmma_##geom##_mma_col_row_##type##_satfinite, \
Intrinsic::nvvm_wmma_##geom##_mma_col_col_##type##_satfinite
#define MMA_VARIANTS(geom, type)
const internal::VariadicAllOfMatcher< Type > type
Matches Types in the clang AST.

◆ MMA_VARIANTS

#define MMA_VARIANTS (   geom,
  type 
)
Value:
Intrinsic::nvvm_wmma_##geom##_mma_row_row_##type, \
Intrinsic::nvvm_wmma_##geom##_mma_row_col_##type, \
Intrinsic::nvvm_wmma_##geom##_mma_col_row_##type, \
Intrinsic::nvvm_wmma_##geom##_mma_col_col_##type

◆ MMA_VARIANTS_B1_AND

#define MMA_VARIANTS_B1_AND (   geom,
  type 
)
Value:
0, \
Intrinsic::nvvm_wmma_##geom##_mma_and_popc_row_col_##type, \
0, \
0, \
0, \
0, \
0, \
0

◆ MMA_VARIANTS_B1_XOR

#define MMA_VARIANTS_B1_XOR (   geom,
  type 
)
Value:
0, \
Intrinsic::nvvm_wmma_##geom##_mma_xor_popc_row_col_##type, \
0, \
0, \
0, \
0, \
0, \
0

◆ MMA_VARIANTS_I4

#define MMA_VARIANTS_I4 (   geom,
  type 
)
Value:
0, \
Intrinsic::nvvm_wmma_##geom##_mma_row_col_##type, \
0, \
0, \
0, \
Intrinsic::nvvm_wmma_##geom##_mma_row_col_##type##_satfinite, \
0, \
0

◆ MUTATE_LDBL

#define MUTATE_LDBL (   func)
Value:
case Builtin::BI__builtin_##func##l: \
return Builtin::BI__builtin_##func##f128;

◆ NEONMAP0

#define NEONMAP0 (   NameBase)     { #NameBase, NEON::BI__builtin_neon_ ## NameBase, 0, 0, 0 }

Definition at line 6464 of file CGBuiltin.cpp.

◆ NEONMAP1

#define NEONMAP1 (   NameBase,
  LLVMIntrinsic,
  TypeModifier 
)
Value:
{ #NameBase, NEON:: BI__builtin_neon_ ## NameBase, \
Intrinsic::LLVMIntrinsic, 0, TypeModifier }

Definition at line 6467 of file CGBuiltin.cpp.

◆ NEONMAP2

#define NEONMAP2 (   NameBase,
  LLVMIntrinsic,
  AltLLVMIntrinsic,
  TypeModifier 
)
Value:
{ #NameBase, NEON:: BI__builtin_neon_ ## NameBase, \
Intrinsic::LLVMIntrinsic, Intrinsic::AltLLVMIntrinsic, \
TypeModifier }

Definition at line 6471 of file CGBuiltin.cpp.

◆ PPC_AIX_CPU

#define PPC_AIX_CPU (   NAME,
  SUPPORT_METHOD,
  INDEX,
  COMPARE_OP,
  VALUE 
)     .Case(NAME, {SUPPORT_METHOD, INDEX, COMPARE_OP, VALUE})

◆ PPC_AIX_FEATURE

#define PPC_AIX_FEATURE (   NAME,
  DESC,
  SUPPORT_METHOD,
  INDEX,
  MASK,
  COMP_OP,
  VALUE 
)     .Case(NAME, {SUPPORT_METHOD, INDEX, MASK, COMP_OP, VALUE})

◆ PPC_LNX_CPU

#define PPC_LNX_CPU (   Name,
  NumericID 
)    .Case(Name, NumericID)

◆ PPC_LNX_FEATURE

#define PPC_LNX_FEATURE (   Name,
  Description,
  EnumName,
  Bitmask,
  FA_WORD 
)     .Case(Name, {FA_WORD, Bitmask})

◆ SMEMAP1

#define SMEMAP1 (   NameBase,
  LLVMIntrinsic,
  TypeModifier 
)
Value:
{ \
#NameBase, SME::BI__builtin_sme_##NameBase, Intrinsic::LLVMIntrinsic, 0, \
TypeModifier \
}

Definition at line 7478 of file CGBuiltin.cpp.

◆ SMEMAP2

#define SMEMAP2 (   NameBase,
  TypeModifier 
)     { #NameBase, SME::BI__builtin_sme_##NameBase, 0, 0, TypeModifier }

Definition at line 7484 of file CGBuiltin.cpp.

◆ ST_CASES

#define ST_CASES (   ORDER,
  SCOPE,
  ADDR_SPACE 
)
Value:
case NVPTX::BI__nvvm##ORDER##SCOPE##_st##ADDR_SPACE##_i: \
case NVPTX::BI__nvvm##ORDER##SCOPE##_st##ADDR_SPACE##_l: \
case NVPTX::BI__nvvm##ORDER##SCOPE##_st##ADDR_SPACE##_ll: \
return MakeScopedSt(Intrinsic::nvvm_st##ADDR_SPACE##_i##ORDER##SCOPE); \
case NVPTX::BI__nvvm##ORDER##SCOPE##_st##ADDR_SPACE##_f: \
case NVPTX::BI__nvvm##ORDER##SCOPE##_st##ADDR_SPACE##_d: \
return MakeScopedSt(Intrinsic::nvvm_st##ADDR_SPACE##_f##ORDER##SCOPE);

◆ ST_CASES_AS

#define ST_CASES_AS (   ORDER,
  SCOPE 
)
Value:
ST_CASES(ORDER, SCOPE, _gen) \
ST_CASES(ORDER, SCOPE, _global) \
ST_CASES(ORDER, SCOPE, _shared)
#define ST_CASES(ORDER, SCOPE, ADDR_SPACE)

◆ ST_CASES_AS_SCOPES

#define ST_CASES_AS_SCOPES (   ORDER)
Value:
ST_CASES_AS(ORDER, ) \
ST_CASES_AS(ORDER, _cta) \
ST_CASES_AS(ORDER, _sys)
#define ST_CASES_AS(ORDER, SCOPE)

◆ ST_VOLATILE_CASES

#define ST_VOLATILE_CASES (   ADDR_SPACE)
Value:
case NVPTX::BI__nvvm_volatile_st##ADDR_SPACE##_i: \
case NVPTX::BI__nvvm_volatile_st##ADDR_SPACE##_l: \
case NVPTX::BI__nvvm_volatile_st##ADDR_SPACE##_ll: \
return MakeScopedSt(Intrinsic::nvvm_st##ADDR_SPACE##_i_volatile); \
case NVPTX::BI__nvvm_volatile_st##ADDR_SPACE##_f: \
case NVPTX::BI__nvvm_volatile_st##ADDR_SPACE##_d: \
return MakeScopedSt(Intrinsic::nvvm_st##ADDR_SPACE##_f_volatile);

◆ SVEMAP1

#define SVEMAP1 (   NameBase,
  LLVMIntrinsic,
  TypeModifier 
)
Value:
{ \
#NameBase, SVE::BI__builtin_sve_##NameBase, Intrinsic::LLVMIntrinsic, 0, \
TypeModifier \
}

Definition at line 7460 of file CGBuiltin.cpp.

◆ SVEMAP2

#define SVEMAP2 (   NameBase,
  TypeModifier 
)     { #NameBase, SVE::BI__builtin_sve_##NameBase, 0, 0, TypeModifier }

Definition at line 7466 of file CGBuiltin.cpp.

◆ X86_CPU_SUBTYPE

#define X86_CPU_SUBTYPE (   ENUM,
  STR 
)     .Case(STR, {2u, static_cast<unsigned>(llvm::X86::ENUM)})

◆ X86_CPU_SUBTYPE_ALIAS

#define X86_CPU_SUBTYPE_ALIAS (   ENUM,
  ALIAS 
)     .Case(ALIAS, {2u, static_cast<unsigned>(llvm::X86::ENUM)})

◆ X86_CPU_TYPE

#define X86_CPU_TYPE (   ENUM,
  STR 
)     .Case(STR, {1u, static_cast<unsigned>(llvm::X86::ENUM)})

◆ X86_CPU_TYPE_ALIAS

#define X86_CPU_TYPE_ALIAS (   ENUM,
  ALIAS 
)     .Case(ALIAS, {1u, static_cast<unsigned>(llvm::X86::ENUM)})

◆ X86_VENDOR

#define X86_VENDOR (   ENUM,
  STRING 
)     .Case(STRING, {0u, static_cast<unsigned>(llvm::X86::ENUM)})

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
AddRetType 
Add1ArgType 
Add2ArgTypes 
VectorizeRetType 
VectorizeArgTypes 
InventFloatType 
UnsignedAlts 
Use64BitVectors 
Use128BitVectors 
Vectorize1ArgType 
VectorRet 
VectorRetGetArgs01 
FpCmpzModifiers 

Definition at line 6425 of file CGBuiltin.cpp.

◆ MSVCIntrin

enum MSVCIntrin
strong

Definition at line 1512 of file CGBuiltin.cpp.

◆ SpecialRegisterAccessKind

Enumerator
NormalRead 
VolatileRead 
Write 

Definition at line 8416 of file CGBuiltin.cpp.

Function Documentation

◆ areBOSTypesCompatible()

static bool areBOSTypesCompatible ( int  From,
int  To 
)
static

Checks if using the result of __builtin_object_size(p, From) in place of __builtin_object_size(p, To) is correct.

Definition at line 882 of file CGBuiltin.cpp.

◆ ARMMVEConstantSplat()

template<unsigned HighBit, unsigned OtherBits>
static llvm::Value* ARMMVEConstantSplat ( CGBuilderTy Builder,
llvm::Type *  VT 
)
static

Definition at line 9334 of file CGBuiltin.cpp.

◆ ARMMVEVectorElementReverse()

static llvm::Value* ARMMVEVectorElementReverse ( CGBuilderTy Builder,
llvm::Value *  V,
unsigned  ReverseWidth 
)
static

Definition at line 9346 of file CGBuiltin.cpp.

◆ ARMMVEVectorReinterpret()

static llvm::Value* ARMMVEVectorReinterpret ( CGBuilderTy Builder,
CodeGenFunction CGF,
llvm::Value *  V,
llvm::Type *  DestType 
)
static

Definition at line 9282 of file CGBuiltin.cpp.

◆ ARMMVEVectorSplat()

static llvm::Value* ARMMVEVectorSplat ( CGBuilderTy Builder,
llvm::Value *  V 
)
static

Definition at line 9274 of file CGBuiltin.cpp.

◆ bitActionToX86BTCode()

static char bitActionToX86BTCode ( BitTest::ActionKind  A)
static

Definition at line 1272 of file CGBuiltin.cpp.

Referenced by EmitX86BitTestIntrinsic().

◆ CheckAtomicAlignment()

static Address CheckAtomicAlignment ( CodeGenFunction CGF,
const CallExpr E 
)
static

◆ CountCountedByAttrs()

static unsigned CountCountedByAttrs ( const RecordDecl RD)
static

◆ CreateBuiltinCallWithAttr()

static CallInst* CreateBuiltinCallWithAttr ( CodeGenFunction CGF,
StringRef  Name,
llvm::Function *  FPBuiltinF,
ArrayRef< Value * >  Args,
unsigned  ID 
)
static

Definition at line 492 of file CGBuiltin.cpp.

◆ EmitAArch64TblBuiltinExpr()

static Value* EmitAArch64TblBuiltinExpr ( CodeGenFunction CGF,
unsigned  BuiltinID,
const CallExpr E,
SmallVectorImpl< Value * > &  Ops,
llvm::Triple::ArchType  Arch 
)
static

◆ EmitAbs()

static Value* EmitAbs ( CodeGenFunction CGF,
Value ArgValue,
bool  HasNSW 
)
static

Definition at line 2098 of file CGBuiltin.cpp.

References abs(), and clang::CodeGen::CodeGenFunction::Builder.

Referenced by EmitOverflowCheckedAbs().

◆ EmitAMDGCNBallotForExec()

static Value* EmitAMDGCNBallotForExec ( CodeGenFunction CGF,
const CallExpr E,
llvm::Type *  RegisterType,
llvm::Type *  ValueType,
bool  isExecHi 
)
static

Definition at line 8424 of file CGBuiltin.cpp.

◆ EmitAtomicCmpXchg128ForMSIntrin()

static Value* EmitAtomicCmpXchg128ForMSIntrin ( CodeGenFunction CGF,
const CallExpr E,
AtomicOrdering  SuccessOrdering 
)
static

◆ EmitAtomicCmpXchgForMSIntrin()

static Value* EmitAtomicCmpXchgForMSIntrin ( CodeGenFunction CGF,
const CallExpr E,
AtomicOrdering  SuccessOrdering = AtomicOrdering::SequentiallyConsistent 
)
static

This function should be invoked to emit atomic cmpxchg for Microsoft's _InterlockedCompareExchange* intrinsics which have the following signature: T _InterlockedCompareExchange(T volatile *Destination, T Exchange, T Comparand);.

Whereas the llvm 'cmpxchg' instruction has the following syntax: cmpxchg *Destination, Comparand, Exchange. So we need to swap Comparand and Exchange when invoking CreateAtomicCmpXchg. That is the reason we could not use the above utility function MakeAtomicCmpXchgValue since it expects the arguments to be already swapped.

Definition at line 350 of file CGBuiltin.cpp.

References clang::CodeGen::CodeGenFunction::Builder, CheckAtomicAlignment(), clang::CodeGen::CGBuilderTy::CreateAtomicCmpXchg(), clang::CodeGen::CodeGenFunction::EmitScalarExpr(), clang::CallExpr::getArg(), clang::CodeGen::CodeGenFunction::getContext(), clang::Type::getPointeeType(), clang::Expr::getType(), clang::ASTContext::hasSameUnqualifiedType(), and clang::Type::isPointerType().

◆ EmitAtomicDecrementValue()

static Value* EmitAtomicDecrementValue ( CodeGenFunction CGF,
const CallExpr E,
AtomicOrdering  Ordering = AtomicOrdering::SequentiallyConsistent 
)
static

◆ EmitAtomicIncrementValue()

static Value* EmitAtomicIncrementValue ( CodeGenFunction CGF,
const CallExpr E,
AtomicOrdering  Ordering = AtomicOrdering::SequentiallyConsistent 
)
static

◆ EmitBinaryAtomic()

static RValue EmitBinaryAtomic ( CodeGenFunction CGF,
llvm::AtomicRMWInst::BinOp  Kind,
const CallExpr E 
)
static

Definition at line 256 of file CGBuiltin.cpp.

References clang::CodeGen::RValue::get(), and MakeBinaryAtomicValue().

◆ EmitBinaryAtomicPost()

static RValue EmitBinaryAtomicPost ( CodeGenFunction CGF,
llvm::AtomicRMWInst::BinOp  Kind,
const CallExpr E,
Instruction::BinaryOps  Op,
bool  Invert = false 
)
static

◆ emitBinaryBuiltin()

static Value* emitBinaryBuiltin ( CodeGenFunction CGF,
const CallExpr E,
unsigned  IntrinsicID 
)
static

◆ emitBinaryExpMaybeConstrainedFPBuiltin()

static Value* emitBinaryExpMaybeConstrainedFPBuiltin ( CodeGenFunction CGF,
const CallExpr E,
llvm::Intrinsic::ID  IntrinsicID,
llvm::Intrinsic::ID  ConstrainedIntrinsicID 
)
static

◆ emitBinaryMaybeConstrainedFPBuiltin()

static Value* emitBinaryMaybeConstrainedFPBuiltin ( CodeGenFunction CGF,
const CallExpr E,
unsigned  IntrinsicID,
unsigned  ConstrainedIntrinsicID,
unsigned  FPAccuracyIntrinsicID = Intrinsic::not_intrinsic 
)
static

◆ EmitBitTestIntrinsic()

static llvm::Value* EmitBitTestIntrinsic ( CodeGenFunction CGF,
unsigned  BuiltinID,
const CallExpr E 
)
static

◆ emitCallMaybeConstrainedFPBuiltin()

static Value* emitCallMaybeConstrainedFPBuiltin ( CodeGenFunction CGF,
unsigned  IntrinsicID,
unsigned  ConstrainedIntrinsicID,
llvm::Type *  Ty,
ArrayRef< Value * >  Args 
)
static

◆ EmitCheckedMixedSignMultiply()

static RValue EmitCheckedMixedSignMultiply ( CodeGenFunction CGF,
const clang::Expr Op1,
WidthAndSignedness  Op1Info,
const clang::Expr Op2,
WidthAndSignedness  Op2Info,
const clang::Expr ResultArg,
QualType  ResultQTy,
WidthAndSignedness  ResultInfo 
)
static

◆ EmitCheckedUnsignedMultiplySignedResult()

static RValue EmitCheckedUnsignedMultiplySignedResult ( CodeGenFunction CGF,
const clang::Expr Op1,
WidthAndSignedness  Op1Info,
const clang::Expr Op2,
WidthAndSignedness  Op2Info,
const clang::Expr ResultArg,
QualType  ResultQTy,
WidthAndSignedness  ResultInfo 
)
static

◆ EmitCommonNeonSISDBuiltinExpr()

static Value* EmitCommonNeonSISDBuiltinExpr ( CodeGenFunction CGF,
const ARMVectorIntrinsicInfo &  SISDInfo,
SmallVectorImpl< Value * > &  Ops,
const CallExpr E 
)
static

◆ EmitFAbs()

static Value* EmitFAbs ( CodeGenFunction CGF,
Value V 
)
static

◆ emitFPIntBuiltin()

static Value* emitFPIntBuiltin ( CodeGenFunction CGF,
const CallExpr E,
unsigned  IntrinsicID 
)
static

◆ emitFrexpBuiltin()

static Value* emitFrexpBuiltin ( CodeGenFunction CGF,
const CallExpr E,
llvm::Intrinsic::ID  IntrinsicID 
)
static

◆ EmitFromInt()

static Value* EmitFromInt ( CodeGenFunction CGF,
llvm::Value *  V,
QualType  T,
llvm::Type *  ResultType 
)
static

◆ EmitHipStdParUnsupportedBuiltin()

static RValue EmitHipStdParUnsupportedBuiltin ( CodeGenFunction CGF,
const FunctionDecl FD 
)
static

Definition at line 2606 of file CGBuiltin.cpp.

◆ EmitISOVolatileLoad()

static Value* EmitISOVolatileLoad ( CodeGenFunction CGF,
const CallExpr E 
)
static

◆ EmitISOVolatileStore()

static Value* EmitISOVolatileStore ( CodeGenFunction CGF,
const CallExpr E 
)
static

◆ emitLibraryCall()

static RValue emitLibraryCall ( CodeGenFunction CGF,
const FunctionDecl FD,
const CallExpr E,
llvm::Constant *  calleeValue 
)
static

◆ emitMaybeConstrainedFPToIntRoundBuiltin()

static Value* emitMaybeConstrainedFPToIntRoundBuiltin ( CodeGenFunction CGF,
const CallExpr E,
unsigned  IntrinsicID,
unsigned  ConstrainedIntrinsicID 
)
static

◆ emitMaybeIntrinsic()

static Function* emitMaybeIntrinsic ( CodeGenFunction CGF,
const CallExpr E,
unsigned  FPAccuracyIntrinsicID,
unsigned  IntrinsicID,
llvm::Value *  Src0,
StringRef &  Name 
)
static

Definition at line 530 of file CGBuiltin.cpp.

References clang::Function.

◆ EmitMSVCRTSetJmp()

static RValue EmitMSVCRTSetJmp ( CodeGenFunction CGF,
MSVCSetJmpKind  SJKind,
const CallExpr E 
)
static

MSVC handles setjmp a bit differently on different platforms.

On every architecture except 32-bit x86, the frame address is passed. On x86, extra parameters can be passed as variadic arguments, but we always pass none.

Definition at line 1470 of file CGBuiltin.cpp.

◆ EmitNontemporalLoad()

static Value* EmitNontemporalLoad ( CodeGenFunction CGF,
const CallExpr E 
)
static

◆ EmitNontemporalStore()

static Value* EmitNontemporalStore ( CodeGenFunction CGF,
const CallExpr E 
)
static

◆ EmitOverflowCheckedAbs()

static Value* EmitOverflowCheckedAbs ( CodeGenFunction CGF,
const CallExpr E,
bool  SanitizeOverflow 
)
static

◆ EmitOverflowIntrinsic()

static llvm::Value* EmitOverflowIntrinsic ( CodeGenFunction CGF,
const llvm::Intrinsic::ID  IntrinsicID,
llvm::Value *  X,
llvm::Value *  Y,
llvm::Value *&  Carry 
)
static

Emit a call to llvm.

{sadd,uadd,ssub,usub,smul,umul}.with.overflow.* depending on IntrinsicID.

  • CGF The current codegen function.
  • IntrinsicID The ID for the Intrinsic we wish to generate.
  • X The first argument to the llvm.*.with.overflow.*.
  • Y The second argument to the llvm.*.with.overflow.*.
  • Carry The carry returned by the llvm.*.with.overflow.*.
    Returns
    The result (i.e. sum/product) returned by the intrinsic.

Definition at line 800 of file CGBuiltin.cpp.

References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::Function, clang::CodeGen::CodeGenModule::getIntrinsic(), and X.

Referenced by EmitCheckedMixedSignMultiply(), and EmitCheckedUnsignedMultiplySignedResult().

◆ emitPPCLoadReserveIntrinsic()

static llvm::Value* emitPPCLoadReserveIntrinsic ( CodeGenFunction CGF,
unsigned  BuiltinID,
const CallExpr E 
)
static

◆ emitRangedBuiltin()

static Value* emitRangedBuiltin ( CodeGenFunction CGF,
unsigned  IntrinsicID,
int  low,
int  high 
)
static

◆ EmitScalarFMAExpr()

static Value* EmitScalarFMAExpr ( CodeGenFunction CGF,
const CallExpr E,
MutableArrayRef< Value * >  Ops,
Value Upper,
bool  ZeroMask = false,
unsigned  PTIdx = 0,
bool  NegAcc = false 
)
static

◆ EmitSignBit()

static Value* EmitSignBit ( CodeGenFunction CGF,
Value V 
)
static

Emit the computation of the sign bit for a floating point value.

Returns the i1 sign bit value.

Definition at line 755 of file CGBuiltin.cpp.

References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::getLLVMContext(), clang::CodeGen::CodeGenFunction::getTarget(), clang::TargetInfo::isBigEndian(), and V.

◆ EmitSpecialRegisterBuiltin()

static Value* EmitSpecialRegisterBuiltin ( CodeGenFunction CGF,
const CallExpr E,
llvm::Type *  RegisterType,
llvm::Type *  ValueType,
SpecialRegisterAccessKind  AccessKind,
StringRef  SysReg = "" 
)
static

Definition at line 8445 of file CGBuiltin.cpp.

◆ EmitSystemZIntrinsicWithCC()

static Value* EmitSystemZIntrinsicWithCC ( CodeGenFunction CGF,
unsigned  IntrinsicID,
const CallExpr E 
)
static

Handle a SystemZ function in which the final argument is a pointer to an int that receives the post-instruction CC value.

At the LLVM level this is represented as a function that returns a {result, cc} pair.

Definition at line 19179 of file CGBuiltin.cpp.

References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGBuilderTy::CreateStore(), clang::CodeGen::CodeGenFunction::EmitPointerWithAlignment(), clang::CodeGen::CodeGenFunction::EmitScalarExpr(), clang::Function, clang::CallExpr::getArg(), clang::CodeGen::CodeGenModule::getIntrinsic(), and clang::CallExpr::getNumArgs().

◆ EmitTargetArchBuiltinExpr()

static Value* EmitTargetArchBuiltinExpr ( CodeGenFunction CGF,
unsigned  BuiltinID,
const CallExpr E,
ReturnValueSlot  ReturnValue,
llvm::Triple::ArchType  Arch 
)
static

◆ emitTernaryBuiltin()

static Value* emitTernaryBuiltin ( CodeGenFunction CGF,
const CallExpr E,
unsigned  IntrinsicID 
)
static

◆ emitTernaryMaybeConstrainedFPBuiltin()

static Value* emitTernaryMaybeConstrainedFPBuiltin ( CodeGenFunction CGF,
const CallExpr E,
unsigned  IntrinsicID,
unsigned  ConstrainedIntrinsicID 
)
static

◆ EmitToInt()

static Value* EmitToInt ( CodeGenFunction CGF,
llvm::Value *  V,
QualType  T,
llvm::IntegerType *  IntType 
)
static

Emit the conversions required to turn the given value into an integer of the given size.

Definition at line 173 of file CGBuiltin.cpp.

References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::EmitToMemory(), clang::T, and V.

Referenced by EmitBinaryAtomicPost(), and MakeBinaryAtomicValue().

◆ emitUnaryBuiltin()

static Value* emitUnaryBuiltin ( CodeGenFunction CGF,
const CallExpr E,
unsigned  IntrinsicID,
llvm::StringRef  Name = "" 
)
static

Definition at line 664 of file CGBuiltin.cpp.

◆ emitUnaryMaybeConstrainedFPBuiltin()

static Value* emitUnaryMaybeConstrainedFPBuiltin ( CodeGenFunction CGF,
const CallExpr E,
unsigned  IntrinsicID,
unsigned  ConstrainedIntrinsicID,
unsigned  FPAccuracyIntrinsicID = Intrinsic::not_intrinsic 
)
static

◆ EmitX86BitTestIntrinsic()

static llvm::Value* EmitX86BitTestIntrinsic ( CodeGenFunction CGF,
BitTest  BT,
const CallExpr E,
Value BitBase,
Value BitPos 
)
static

◆ EmitX86CompressExpand()

static Value* EmitX86CompressExpand ( CodeGenFunction CGF,
ArrayRef< Value * >  Ops,
bool  IsCompress 
)
static

◆ EmitX86CompressStore()

static Value* EmitX86CompressStore ( CodeGenFunction CGF,
ArrayRef< Value * >  Ops 
)
static

◆ EmitX86ConvertIntToFp()

static Value* EmitX86ConvertIntToFp ( CodeGenFunction CGF,
const CallExpr E,
ArrayRef< Value * >  Ops,
bool  IsSigned 
)
static

◆ EmitX86ConvertToMask()

static Value* EmitX86ConvertToMask ( CodeGenFunction CGF,
Value In 
)
static

Definition at line 13821 of file CGBuiltin.cpp.

References EmitX86MaskedCompare().

◆ EmitX86CvtF16ToFloatExpr()

static Value* EmitX86CvtF16ToFloatExpr ( CodeGenFunction CGF,
ArrayRef< Value * >  Ops,
llvm::Type *  DstTy 
)
static

◆ EmitX86ExpandLoad()

static Value* EmitX86ExpandLoad ( CodeGenFunction CGF,
ArrayRef< Value * >  Ops 
)
static

◆ EmitX86FMAExpr()

static Value* EmitX86FMAExpr ( CodeGenFunction CGF,
const CallExpr E,
ArrayRef< Value * >  Ops,
unsigned  BuiltinID,
bool  IsAddSub 
)
static

◆ EmitX86FunnelShift()

static Value* EmitX86FunnelShift ( CodeGenFunction CGF,
Value Op0,
Value Op1,
Value Amt,
bool  IsRight 
)
static

◆ EmitX86MaskedCompare()

static Value* EmitX86MaskedCompare ( CodeGenFunction CGF,
unsigned  CC,
bool  Signed,
ArrayRef< Value * >  Ops 
)
static

Definition at line 13786 of file CGBuiltin.cpp.

Referenced by EmitX86ConvertToMask().

◆ EmitX86MaskedCompareResult()

static Value* EmitX86MaskedCompareResult ( CodeGenFunction CGF,
Value Cmp,
unsigned  NumElts,
Value MaskIn 
)
static

Definition at line 13763 of file CGBuiltin.cpp.

◆ EmitX86MaskedLoad()

static Value* EmitX86MaskedLoad ( CodeGenFunction CGF,
ArrayRef< Value * >  Ops,
Align  Alignment 
)
static

◆ EmitX86MaskedStore()

static Value* EmitX86MaskedStore ( CodeGenFunction CGF,
ArrayRef< Value * >  Ops,
Align  Alignment 
)
static

◆ EmitX86MaskLogic()

static Value* EmitX86MaskLogic ( CodeGenFunction CGF,
Instruction::BinaryOps  Opc,
ArrayRef< Value * >  Ops,
bool  InvertLHS = false 
)
static

Definition at line 13663 of file CGBuiltin.cpp.

References clang::CodeGen::CodeGenFunction::Builder, and getMaskVecValue().

◆ EmitX86Muldq()

static Value* EmitX86Muldq ( CodeGenFunction CGF,
bool  IsSigned,
ArrayRef< Value * >  Ops 
)
static

◆ EmitX86ScalarSelect()

static Value* EmitX86ScalarSelect ( CodeGenFunction CGF,
Value Mask,
Value Op0,
Value Op1 
)
static

◆ EmitX86Select()

static Value* EmitX86Select ( CodeGenFunction CGF,
Value Mask,
Value Op0,
Value Op1 
)
static

◆ EmitX86SExtMask()

static Value* EmitX86SExtMask ( CodeGenFunction CGF,
Value Op,
llvm::Type *  DstTy 
)
static

Definition at line 14087 of file CGBuiltin.cpp.

References clang::CodeGen::CodeGenFunction::Builder, and getMaskVecValue().

◆ EmitX86Ternlog()

static Value* EmitX86Ternlog ( CodeGenFunction CGF,
bool  ZeroMask,
ArrayRef< Value * >  Ops 
)
static

◆ EmitX86vpcom()

static Value* EmitX86vpcom ( CodeGenFunction CGF,
ArrayRef< Value * >  Ops,
bool  IsSigned 
)
static

Definition at line 13695 of file CGBuiltin.cpp.

References clang::Value::getType().

◆ EncompassingIntegerType()

static struct WidthAndSignedness EncompassingIntegerType ( ArrayRef< struct WidthAndSignedness >  Types)
static

◆ findARMVectorIntrinsicInMap()

static const ARMVectorIntrinsicInfo* findARMVectorIntrinsicInMap ( ArrayRef< ARMVectorIntrinsicInfo >  IntrinsicMap,
unsigned  BuiltinID,
bool MapProvenSorted 
)
static

◆ getBitTestAtomicOrdering()

static llvm::AtomicOrdering getBitTestAtomicOrdering ( BitTest::InterlockingKind  I)
static

Definition at line 1318 of file CGBuiltin.cpp.

Referenced by EmitBitTestIntrinsic().

◆ getDefaultBuiltinObjectSizeResult()

static llvm::Value* getDefaultBuiltinObjectSizeResult ( unsigned  Type,
llvm::IntegerType *  ResType 
)
static

Definition at line 890 of file CGBuiltin.cpp.

◆ getDotProductIntrinsic()

Intrinsic::ID getDotProductIntrinsic ( QualType  QT,
int  elementCount 
)

◆ GetFloatNeonType()

static llvm::VectorType* GetFloatNeonType ( CodeGenFunction CGF,
NeonTypeFlags  IntTypeFlags 
)
static

◆ GetIntegerConstantValue()

template<typename Integer >
static Integer GetIntegerConstantValue ( const Expr E,
ASTContext Context 
)
static

Definition at line 9241 of file CGBuiltin.cpp.

References Integer.

◆ getIntegerWidthAndSignedness()

static WidthAndSignedness getIntegerWidthAndSignedness ( const clang::ASTContext context,
const clang::QualType  Type 
)
static

Definition at line 836 of file CGBuiltin.cpp.

◆ getIntrinsic()

static Function* getIntrinsic ( CodeGenFunction CGF,
llvm::Value *  Src0,
unsigned  FPIntrinsicID,
unsigned  IntrinsicID,
bool  HasAccuracyRequirement 
)
static

◆ getIntrinsicForHexagonNonClangBuiltin()

static std::pair<Intrinsic::ID, unsigned> getIntrinsicForHexagonNonClangBuiltin ( unsigned  BuiltinID)
static

Definition at line 23461 of file CGBuiltin.cpp.

References CUSTOM_BUILTIN_MAPPING, and ID.

Referenced by clang::CodeGen::CodeGenFunction::EmitHexagonBuiltinExpr().

◆ getMaskVecValue()

static Value* getMaskVecValue ( CodeGenFunction CGF,
Value Mask,
unsigned  NumElts 
)
static

◆ GetNeonType()

static llvm::FixedVectorType* GetNeonType ( CodeGenFunction CGF,
NeonTypeFlags  TypeFlags,
bool  HasLegalHalfType = true,
bool  V1Ty = false,
bool  AllowBFloatArgsAndRet = true 
)
static

◆ getOSLogArgType()

static CanQualType getOSLogArgType ( ASTContext C,
int  Size 
)
static

Get the argument type for arguments to os_log_helper.

Definition at line 2138 of file CGBuiltin.cpp.

◆ getSVEVectorForElementType()

static llvm::ScalableVectorType* getSVEVectorForElementType ( llvm::Type *  EltTy)
static

◆ hasAccuracyRequirement()

static bool hasAccuracyRequirement ( CodeGenFunction CGF,
StringRef  Name 
)
static

Definition at line 523 of file CGBuiltin.cpp.

◆ HasExtraNeonArgument()

static bool HasExtraNeonArgument ( unsigned  BuiltinID)
static

Return true if BuiltinID is an overloaded Neon intrinsic with an extra argument that specifies the vector type.

Definition at line 8513 of file CGBuiltin.cpp.

◆ hasFuncNameRequestedFPAccuracy()

static bool hasFuncNameRequestedFPAccuracy ( StringRef  Name,
const LangOptions LangOpts 
)
static

Definition at line 23782 of file CGBuiltin.cpp.

◆ initializeAlloca()

static void initializeAlloca ( CodeGenFunction CGF,
AllocaInst *  AI,
Value Size,
Align  AlignmentInBytes 
)
static

◆ InsertExplicitUndefOperand()

static void InsertExplicitUndefOperand ( CGBuilderTy Builder,
llvm::Type *  Ty,
SmallVectorImpl< Value * > &  Ops 
)
static

Definition at line 10274 of file CGBuiltin.cpp.

◆ InsertExplicitZeroOperand()

static void InsertExplicitZeroOperand ( CGBuilderTy Builder,
llvm::Type *  Ty,
SmallVectorImpl< Value * > &  Ops 
)
static

◆ isSpecialMixedSignMultiply()

static bool isSpecialMixedSignMultiply ( unsigned  BuiltinID,
WidthAndSignedness  Op1Info,
WidthAndSignedness  Op2Info,
WidthAndSignedness  ResultInfo 
)
static

Determine if a binop is a checked mixed-sign multiply we can specialize.

Definition at line 2373 of file CGBuiltin.cpp.

References max().

Referenced by EmitCheckedMixedSignMultiply().

◆ isSpecialUnsignedMultiplySignedResult()

static bool isSpecialUnsignedMultiplySignedResult ( unsigned  BuiltinID,
WidthAndSignedness  Op1Info,
WidthAndSignedness  Op2Info,
WidthAndSignedness  ResultInfo 
)
static

Definition at line 2331 of file CGBuiltin.cpp.

Referenced by EmitCheckedUnsignedMultiplySignedResult().

◆ MakeAtomicCmpXchgValue()

static Value* MakeAtomicCmpXchgValue ( CodeGenFunction CGF,
const CallExpr E,
bool  ReturnBool 
)
static

Utility to insert an atomic cmpxchg instruction.

Parameters
CGFThe current codegen function.
EBuiltin call expression to convert to cmpxchg. arg0 - address to operate on arg1 - value to compare with arg2 - new value
ReturnBoolSpecifies whether to return success flag of cmpxchg result or the old value.
Returns
result of cmpxchg, according to ReturnBool

Note: In order to lower Microsoft's _InterlockedCompareExchange* intrinsics invoke the function EmitAtomicCmpXchgForMSIntrin.

Definition at line 310 of file CGBuiltin.cpp.

References CheckAtomicAlignment(), clang::CallExpr::getArg(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenFunction::getLLVMContext(), clang::Expr::getType(), clang::ASTContext::getTypeSize(), and clang::T.

◆ MakeBinaryAtomicValue()

static Value* MakeBinaryAtomicValue ( CodeGenFunction CGF,
llvm::AtomicRMWInst::BinOp  Kind,
const CallExpr E,
AtomicOrdering  Ordering = AtomicOrdering::SequentiallyConsistent 
)
static

◆ mutateLongDoubleBuiltin()

static unsigned mutateLongDoubleBuiltin ( unsigned  BuiltinID)
static

◆ MVEImmediateShr()

static llvm::Value* MVEImmediateShr ( CGBuilderTy Builder,
llvm::Value *  V,
uint32_t  Shift,
bool  Unsigned 
)
static

Definition at line 9252 of file CGBuiltin.cpp.

◆ packTBLDVectorList()

static Value* packTBLDVectorList ( CodeGenFunction CGF,
ArrayRef< Value * >  Ops,
Value ExtOp,
Value IndexOp,
llvm::Type *  ResTy,
unsigned  IntID,
const char *  Name 
)
static

Definition at line 8343 of file CGBuiltin.cpp.

◆ SignOrZeroExtend()

static llvm::Value* SignOrZeroExtend ( CGBuilderTy Builder,
llvm::Value *  V,
llvm::Type *  T,
bool  Unsigned 
)
static

Definition at line 9245 of file CGBuiltin.cpp.

◆ swapCommutativeSMEOperands()

static void swapCommutativeSMEOperands ( unsigned  BuiltinID,
SmallVectorImpl< Value * > &  Ops 
)
static

◆ translateAarch64ToMsvcIntrin()

static std::optional<CodeGenFunction::MSVCIntrin> translateAarch64ToMsvcIntrin ( unsigned  BuiltinID)
static

Definition at line 1701 of file CGBuiltin.cpp.

◆ translateArmToMsvcIntrin()

static std::optional<CodeGenFunction::MSVCIntrin> translateArmToMsvcIntrin ( unsigned  BuiltinID)
static

Definition at line 1555 of file CGBuiltin.cpp.

◆ translateX86ToMsvcIntrin()

static std::optional<CodeGenFunction::MSVCIntrin> translateX86ToMsvcIntrin ( unsigned  BuiltinID)
static

Definition at line 1855 of file CGBuiltin.cpp.

Referenced by clang::CodeGen::CodeGenFunction::EmitX86BuiltinExpr().

◆ tryUseTestFPKind()

static Value* tryUseTestFPKind ( CodeGenFunction CGF,
unsigned  BuiltinID,
Value V 
)
static

◆ TypeRequiresBuiltinLaunder()

static bool TypeRequiresBuiltinLaunder ( CodeGenModule CGM,
QualType  Ty 
)
static

Determine if the specified type requires laundering by checking if it is a dynamic class type or contains a subobject which is a dynamic class type.

Definition at line 2501 of file CGBuiltin.cpp.

References clang::CodeGen::CodeGenModule::getCodeGenOpts(), clang::CodeGen::CodeGenModule::getContext(), and TypeRequiresBuiltinLaunderImp().

◆ TypeRequiresBuiltinLaunderImp()

static bool TypeRequiresBuiltinLaunderImp ( const ASTContext Ctx,
QualType  Ty,
llvm::SmallPtrSetImpl< const Decl * > &  Seen 
)
static

◆ VectorUnzip()

static llvm::Value* VectorUnzip ( CGBuilderTy Builder,
llvm::Value *  V,
bool  Odd 
)
static

Definition at line 9308 of file CGBuiltin.cpp.

◆ VectorZip()

static llvm::Value* VectorZip ( CGBuilderTy Builder,
llvm::Value *  V0,
llvm::Value *  V1 
)
static

Definition at line 9319 of file CGBuiltin.cpp.

Variable Documentation

◆ AArch64SIMDIntrinsicMap

const ARMVectorIntrinsicInfo AArch64SIMDIntrinsicMap[]
static

Definition at line 6795 of file CGBuiltin.cpp.

◆ AArch64SIMDIntrinsicsProvenSorted

bool AArch64SIMDIntrinsicsProvenSorted = false
static

Definition at line 7497 of file CGBuiltin.cpp.

◆ AArch64SISDIntrinsicMap

const ARMVectorIntrinsicInfo AArch64SISDIntrinsicMap[]
static

Definition at line 7070 of file CGBuiltin.cpp.

◆ AArch64SISDIntrinsicsProvenSorted

bool AArch64SISDIntrinsicsProvenSorted = false
static

Definition at line 7498 of file CGBuiltin.cpp.

◆ AArch64SMEIntrinsicMap

const ARMVectorIntrinsicInfo AArch64SMEIntrinsicMap[]
static
Initial value:
= {
#define GET_SME_LLVM_INTRINSIC_MAP
}

Definition at line 7486 of file CGBuiltin.cpp.

Referenced by clang::CodeGen::CodeGenFunction::EmitAArch64SMEBuiltinExpr().

◆ AArch64SMEIntrinsicsProvenSorted

bool AArch64SMEIntrinsicsProvenSorted = false
static

◆ AArch64SVEIntrinsicMap

const ARMVectorIntrinsicInfo AArch64SVEIntrinsicMap[]
static
Initial value:
= {
#define GET_SVE_LLVM_INTRINSIC_MAP
}

Definition at line 7468 of file CGBuiltin.cpp.

Referenced by clang::CodeGen::CodeGenFunction::EmitAArch64SVEBuiltinExpr().

◆ AArch64SVEIntrinsicsProvenSorted

bool AArch64SVEIntrinsicsProvenSorted = false
static

◆ ARMSIMDIntrinsicMap

const ARMVectorIntrinsicInfo ARMSIMDIntrinsicMap[]
static

Definition at line 6476 of file CGBuiltin.cpp.

◆ NEONEquivalentIntrinsicMap

const std::pair<unsigned, unsigned> NEONEquivalentIntrinsicMap[]
static

Definition at line 7310 of file CGBuiltin.cpp.

◆ NEONSIMDIntrinsicsProvenSorted

bool NEONSIMDIntrinsicsProvenSorted = false
static

Definition at line 7495 of file CGBuiltin.cpp.

◆ SVEBitsPerBlock

constexpr unsigned SVEBitsPerBlock = 128
constexpr

Definition at line 9756 of file CGBuiltin.cpp.

Referenced by getSVEVectorForElementType().