//===- XeGPUOps.cpp - MLIR XeGPU ops implementation -------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "mlir/Dialect/Utils/StaticValueUtils.h" #include "mlir/Dialect/XeGPU/IR/XeGPU.h" #include "mlir/IR/Builders.h" #include "mlir/IR/TypeUtilities.h" #include "llvm/Support/Debug.h" #define DEBUG_TYPE … namespace mlir { namespace xegpu { static void transpose(llvm::ArrayRef<int64_t> trans, SmallVector<int64_t> &shape) { … } template <typename T> static std::string makeString(T array, bool breakline = false) { … } static SmallVector<int64_t> getShapeOf(Type type) { … } static int64_t getRankOf(Value val) { … } static bool isReadHintOrNone(const CachePolicyAttr &attr) { … } static bool isWriteHintOrNone(const CachePolicyAttr &attr) { … } //===----------------------------------------------------------------------===// // XeGPU_CreateNdDescOp //===----------------------------------------------------------------------===// void CreateNdDescOp::build(OpBuilder &builder, OperationState &state, Type tdesc, TypedValue<MemRefType> source, llvm::ArrayRef<OpFoldResult> offsets) { … } void CreateNdDescOp::build(OpBuilder &builder, OperationState &state, Type tdesc, TypedValue<IntegerType> source, llvm::ArrayRef<OpFoldResult> offsets, llvm::ArrayRef<OpFoldResult> shape, llvm::ArrayRef<OpFoldResult> strides) { … } LogicalResult CreateNdDescOp::verify() { … } //===----------------------------------------------------------------------===// // XeGPU_PrefetchNdOp //===----------------------------------------------------------------------===// LogicalResult PrefetchNdOp::verify() { … } //===----------------------------------------------------------------------===// // XeGPU_LoadNdOp //===----------------------------------------------------------------------===// LogicalResult LoadNdOp::verify() { … } //===----------------------------------------------------------------------===// // XeGPU_StoreNdOp //===----------------------------------------------------------------------===// LogicalResult StoreNdOp::verify() { … } //===----------------------------------------------------------------------===// // XeGPU_UpdateNDOffsetOp //===----------------------------------------------------------------------===// LogicalResult UpdateNdOffsetOp::verify() { … } //===----------------------------------------------------------------------===// // XeGPU_CreateDescOp //===----------------------------------------------------------------------===// void CreateDescOp::build(OpBuilder &builder, OperationState &state, TensorDescType TensorDesc, Value source, llvm::ArrayRef<OpFoldResult> offsets, uint32_t chunk_size) { … } LogicalResult CreateDescOp::verify() { … } //===----------------------------------------------------------------------===// // XeGPU_PrefetchOp //===----------------------------------------------------------------------===// LogicalResult PrefetchOp::verify() { … } //===----------------------------------------------------------------------===// // XeGPU_LoadGatherOp //===----------------------------------------------------------------------===// LogicalResult LoadGatherOp::verify() { … } //===----------------------------------------------------------------------===// // XeGPU_StoreScatterOp //===----------------------------------------------------------------------===// LogicalResult StoreScatterOp::verify() { … } //===----------------------------------------------------------------------===// // XeGPU_DpasOp //===----------------------------------------------------------------------===// LogicalResult DpasOp::verify() { … } } // namespace xegpu } // namespace mlir #include <mlir/Dialect/XeGPU/IR/XeGPUEnums.cpp.inc> #define GET_OP_CLASSES #include <mlir/Dialect/XeGPU/IR/XeGPU.cpp.inc>