clang 22.0.0git
CIRGenBuiltinX86.cpp File Reference
#include "CIRGenBuilder.h"
#include "CIRGenFunction.h"
#include "CIRGenModule.h"
#include "mlir/IR/Location.h"
#include "mlir/IR/ValueRange.h"
#include "clang/Basic/Builtins.h"
#include "clang/Basic/TargetBuiltins.h"
#include "clang/CIR/Dialect/IR/CIRTypes.h"
#include "clang/CIR/MissingFeatures.h"
#include "llvm/Support/ErrorHandling.h"

Go to the source code of this file.

Functions

template<typename... Operands>
static mlir::Value emitIntrinsicCallOp (CIRGenBuilderTy &builder, mlir::Location loc, const StringRef str, const mlir::Type &resTy, Operands &&...op)
static mlir::Value emitVectorFCmp (CIRGenBuilderTy &builder, llvm::SmallVector< mlir::Value > &ops, mlir::Location loc, cir::CmpOpKind pred, bool shouldInvert)
static mlir::Value getMaskVecValue (CIRGenBuilderTy &builder, mlir::Location loc, mlir::Value mask, unsigned numElems)
static cir::VecShuffleOp emitPshufWord (CIRGenBuilderTy &builder, const mlir::Value vec, const mlir::Value immediate, const mlir::Location loc, const bool isLow)
static void computeFullLaneShuffleMask (CIRGenFunction &cgf, const mlir::Value vec, uint32_t imm, const bool isShufP, llvm::SmallVectorImpl< int64_t > &outIndices)
static mlir::Value emitX86CompressExpand (CIRGenBuilderTy &builder, mlir::Location loc, mlir::Value source, mlir::Value mask, mlir::Value inputVector, const std::string &id)
static mlir::Value getBoolMaskVecValue (CIRGenBuilderTy &builder, mlir::Location loc, mlir::Value mask, unsigned numElems)
static mlir::Value emitX86Select (CIRGenBuilderTy &builder, mlir::Location loc, mlir::Value mask, mlir::Value op0, mlir::Value op1)
static mlir::Value emitX86MaskAddLogic (CIRGenBuilderTy &builder, mlir::Location loc, const std::string &intrinsicName, SmallVectorImpl< mlir::Value > &ops)
static mlir::Value emitX86MaskUnpack (CIRGenBuilderTy &builder, mlir::Location loc, const std::string &intrinsicName, SmallVectorImpl< mlir::Value > &ops)
static mlir::Value emitX86MaskLogic (CIRGenBuilderTy &builder, mlir::Location loc, cir::BinOpKind binOpKind, SmallVectorImpl< mlir::Value > &ops, bool invertLHS=false)
static mlir::Value emitX86MaskTest (CIRGenBuilderTy &builder, mlir::Location loc, const std::string &intrinsicName, SmallVectorImpl< mlir::Value > &ops)
static mlir::Value emitVecInsert (CIRGenBuilderTy &builder, mlir::Location loc, mlir::Value vec, mlir::Value value, mlir::Value indexOp)
static mlir::Value emitX86FunnelShift (CIRGenBuilderTy &builder, mlir::Location location, mlir::Value &op0, mlir::Value &op1, mlir::Value &amt, bool isRight)
static mlir::Value emitX86Muldq (CIRGenBuilderTy &builder, mlir::Location loc, bool isSigned, SmallVectorImpl< mlir::Value > &ops, unsigned opTypePrimitiveSizeInBits)
static mlir::Value emitX86vpcom (CIRGenBuilderTy &builder, mlir::Location loc, llvm::SmallVector< mlir::Value > ops, bool isSigned)

Function Documentation

◆ computeFullLaneShuffleMask()

void computeFullLaneShuffleMask ( CIRGenFunction & cgf,
const mlir::Value vec,
uint32_t imm,
const bool isShufP,
llvm::SmallVectorImpl< int64_t > & outIndices )
static

◆ emitIntrinsicCallOp()

template<typename... Operands>
mlir::Value emitIntrinsicCallOp ( CIRGenBuilderTy & builder,
mlir::Location loc,
const StringRef str,
const mlir::Type & resTy,
Operands &&... op )
static

◆ emitPshufWord()

cir::VecShuffleOp emitPshufWord ( CIRGenBuilderTy & builder,
const mlir::Value vec,
const mlir::Value immediate,
const mlir::Location loc,
const bool isLow )
static

◆ emitVecInsert()

mlir::Value emitVecInsert ( CIRGenBuilderTy & builder,
mlir::Location loc,
mlir::Value vec,
mlir::Value value,
mlir::Value indexOp )
static

◆ emitVectorFCmp()

◆ emitX86CompressExpand()

mlir::Value emitX86CompressExpand ( CIRGenBuilderTy & builder,
mlir::Location loc,
mlir::Value source,
mlir::Value mask,
mlir::Value inputVector,
const std::string & id )
static

◆ emitX86FunnelShift()

mlir::Value emitX86FunnelShift ( CIRGenBuilderTy & builder,
mlir::Location location,
mlir::Value & op0,
mlir::Value & op1,
mlir::Value & amt,
bool isRight )
static

◆ emitX86MaskAddLogic()

mlir::Value emitX86MaskAddLogic ( CIRGenBuilderTy & builder,
mlir::Location loc,
const std::string & intrinsicName,
SmallVectorImpl< mlir::Value > & ops )
static

◆ emitX86MaskLogic()

mlir::Value emitX86MaskLogic ( CIRGenBuilderTy & builder,
mlir::Location loc,
cir::BinOpKind binOpKind,
SmallVectorImpl< mlir::Value > & ops,
bool invertLHS = false )
static

◆ emitX86MaskTest()

mlir::Value emitX86MaskTest ( CIRGenBuilderTy & builder,
mlir::Location loc,
const std::string & intrinsicName,
SmallVectorImpl< mlir::Value > & ops )
static

◆ emitX86MaskUnpack()

◆ emitX86Muldq()

◆ emitX86Select()

mlir::Value emitX86Select ( CIRGenBuilderTy & builder,
mlir::Location loc,
mlir::Value mask,
mlir::Value op0,
mlir::Value op1 )
static

◆ emitX86vpcom()

◆ getBoolMaskVecValue()

◆ getMaskVecValue()