[mlir][ArmSVE] Restructure sources to match ArmSME dialect (NFC) (#68399)
This rearranges the Arm SVE dialect to have the same structure of the Arm SME dialect. So this just moves around some source files and adds a ArmSVE_IntrOp base class for SVE intrinsics. This makes later changes a little easier and more consistent other dialects.
This commit is contained in:
@@ -1,6 +1 @@
|
||||
add_mlir_dialect(ArmSVE arm_sve ArmSVE)
|
||||
add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
|
||||
|
||||
set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
|
||||
mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
|
||||
add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
|
||||
add_subdirectory(IR)
|
||||
|
||||
@@ -28,7 +28,6 @@ def ArmSVE_Dialect : Dialect {
|
||||
This dialect contains the definitions necessary to target specific Arm SVE
|
||||
scalable vector operations.
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@@ -38,16 +37,23 @@ def ArmSVE_Dialect : Dialect {
|
||||
class ArmSVE_Op<string mnemonic, list<Trait> traits = []> :
|
||||
Op<ArmSVE_Dialect, mnemonic, traits> {}
|
||||
|
||||
class ArmSVE_IntrBinaryOverloadedOp<string mnemonic,
|
||||
list<Trait> traits = []> :
|
||||
class ArmSVE_IntrOp<string mnemonic,
|
||||
list<Trait> traits = [],
|
||||
list<int> overloadedOperands = [],
|
||||
list<int> overloadedResults = []> :
|
||||
LLVM_IntrOpBase</*Dialect dialect=*/ArmSVE_Dialect,
|
||||
/*string opName=*/"intr." # mnemonic,
|
||||
/*string enumName=*/"aarch64_sve_" # !subst(".", "_", mnemonic),
|
||||
/*list<int> overloadedResults=*/[0],
|
||||
/*list<int> overloadedOperands=*/[], // defined by result overload
|
||||
/*list<int> overloadedResults=*/overloadedResults,
|
||||
/*list<int> overloadedOperands=*/overloadedOperands,
|
||||
/*list<Trait> traits=*/traits,
|
||||
/*int numResults=*/1>;
|
||||
|
||||
class ArmSVE_IntrBinaryOverloadedOp<string mnemonic,
|
||||
list<Trait> traits = []>:
|
||||
ArmSVE_IntrOp<mnemonic, traits,
|
||||
/*overloadedOperands=*/[], /*overloadedResults=*/[0]>;
|
||||
|
||||
class ScalableMaskedFOp<string mnemonic, string op_description,
|
||||
list<Trait> traits = []> :
|
||||
ArmSVE_Op<mnemonic, !listconcat(traits,
|
||||
@@ -19,9 +19,9 @@
|
||||
#include "mlir/IR/OpDefinition.h"
|
||||
#include "mlir/Interfaces/SideEffectInterfaces.h"
|
||||
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVEDialect.h.inc"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h.inc"
|
||||
|
||||
#define GET_OP_CLASSES
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVE.h.inc"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVE.h.inc"
|
||||
|
||||
#endif // MLIR_DIALECT_ARMSVE_ARMSVEDIALECT_H
|
||||
6
mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
Normal file
6
mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
add_mlir_dialect(ArmSVE arm_sve ArmSVE)
|
||||
add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
|
||||
|
||||
set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
|
||||
mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
|
||||
add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
|
||||
@@ -24,7 +24,7 @@
|
||||
#include "mlir/Dialect/Arith/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/ArmNeon/ArmNeonDialect.h"
|
||||
#include "mlir/Dialect/ArmSME/IR/ArmSME.h"
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/Async/IR/Async.h"
|
||||
#include "mlir/Dialect/Bufferization/IR/Bufferization.h"
|
||||
#include "mlir/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.h"
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
#include "mlir/Dialect/ArmSME/IR/ArmSME.h"
|
||||
#include "mlir/Dialect/ArmSME/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/ArmSME/Transforms/Transforms.h"
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/ArmSVE/Transforms.h"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/ArmSVE/Transforms/Transforms.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/MemRef/IR/MemRef.h"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMTypes.h"
|
||||
#include "mlir/IR/Builders.h"
|
||||
#include "mlir/IR/DialectImplementation.h"
|
||||
@@ -38,17 +38,17 @@ static Type getI1SameShape(Type type) {
|
||||
// Tablegen Definitions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVEDialect.cpp.inc"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.cpp.inc"
|
||||
|
||||
#define GET_OP_CLASSES
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVE.cpp.inc"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVE.cpp.inc"
|
||||
|
||||
#define GET_TYPEDEF_CLASSES
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVETypes.cpp.inc"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVETypes.cpp.inc"
|
||||
|
||||
void ArmSVEDialect::initialize() {
|
||||
addOperations<
|
||||
#define GET_OP_LIST
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVE.cpp.inc"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVE.cpp.inc"
|
||||
>();
|
||||
}
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/Pattern.h"
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/ArmSVE/Transforms.h"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/ArmSVE/Transforms/Transforms.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/IR/BuiltinOps.h"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Target/LLVMIR/Dialect/ArmSVE/ArmSVEToLLVMIRTranslation.h"
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h"
|
||||
#include "mlir/IR/Operation.h"
|
||||
#include "mlir/Target/LLVMIR/ModuleTranslation.h"
|
||||
|
||||
@@ -35,7 +35,7 @@ public:
|
||||
convertOperation(Operation *op, llvm::IRBuilderBase &builder,
|
||||
LLVM::ModuleTranslation &moduleTranslation) const final {
|
||||
Operation &opInst = *op;
|
||||
#include "mlir/Dialect/ArmSVE/ArmSVEConversions.inc"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEConversions.inc"
|
||||
|
||||
return failure();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user