clang 22.0.0git
Macros | Functions
X86.cpp File Reference
#include "CGBuiltin.h"
#include "clang/Basic/TargetBuiltins.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/IntrinsicsX86.h"
#include "llvm/TargetParser/X86TargetParser.h"
#include "llvm/TargetParser/X86TargetParser.def"

Go to the source code of this file.

Macros

#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)
 

Functions

static std::optional< CodeGenFunction::MSVCIntrintranslateX86ToMsvcIntrin (unsigned BuiltinID)
 
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)
 

Macro Definition Documentation

◆ INTRINSIC_X86_XSAVE_ID

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

◆ 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)})

Function Documentation

◆ EmitScalarFMAExpr()

static Value * EmitScalarFMAExpr ( CodeGenFunction CGF,
const CallExpr E,
MutableArrayRef< Value * >  Ops,
Value Upper,
bool  ZeroMask = false,
unsigned  PTIdx = 0,
bool  NegAcc = false 
)
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 296 of file X86.cpp.

References EmitX86MaskedCompare(), and clang::Zero.

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

◆ 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

◆ EmitX86MaskedCompareResult()

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

◆ 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

◆ 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

◆ EmitX86Ternlog()

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

◆ EmitX86vpcom()

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

◆ getMaskVecValue()

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

◆ translateX86ToMsvcIntrin()

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

Definition at line 24 of file X86.cpp.

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