#include "mlir/Dialect/X86Vector/Transforms.h"
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
#include "mlir/Conversion/LLVMCommon/Pattern.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/Dialect/X86Vector/X86VectorDialect.h"
#include "mlir/IR/BuiltinOps.h"
#include "mlir/IR/PatternMatch.h"
usingnamespacemlir;
usingnamespacemlir::x86vector;
template <typename OpTy>
static Type getSrcVectorElementType(OpTy op) { … }
template <>
Type getSrcVectorElementType(Vp2IntersectOp op) { … }
namespace {
template <typename OpTy, typename Intr32OpTy, typename Intr64OpTy>
struct LowerToIntrinsic : public OpConversionPattern<OpTy> { … };
struct MaskCompressOpConversion
: public ConvertOpToLLVMPattern<MaskCompressOp> { … };
struct RsqrtOpConversion : public ConvertOpToLLVMPattern<RsqrtOp> { … };
struct DotOpConversion : public ConvertOpToLLVMPattern<DotOp> { … };
template <typename OpTy, typename Intr32OpTy, typename Intr64OpTy>
struct RegEntry { … };
template <typename... Args>
struct RegistryImpl { … };
Registry;
}
void mlir::populateX86VectorLegalizeForLLVMExportPatterns(
const LLVMTypeConverter &converter, RewritePatternSet &patterns) { … }
void mlir::configureX86VectorLegalizeForExportTarget(
LLVMConversionTarget &target) { … }