From 6b24bac72e700df0439d75e70be43a187270e1f9 Mon Sep 17 00:00:00 2001 From: Benjamin Maxwell Date: Thu, 5 Oct 2023 12:57:13 +0000 Subject: [PATCH 1/2] [mlir][ArmSVE] Restructure sources to match ArmSME dialect (NFC) 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. --- mlir/include/mlir/Dialect/ArmSVE/CMakeLists.txt | 7 +------ .../mlir/Dialect/ArmSVE/{ => IR}/ArmSVE.td | 16 +++++++++++----- .../mlir/Dialect/ArmSVE/{ => IR}/ArmSVEDialect.h | 4 ++-- .../mlir/Dialect/ArmSVE/IR/CMakeLists.txt | 6 ++++++ .../Dialect/ArmSVE/{ => Transforms}/Transforms.h | 0 mlir/include/mlir/InitAllDialects.h | 2 +- .../VectorToLLVM/ConvertVectorToLLVMPass.cpp | 4 ++-- mlir/lib/Dialect/ArmSVE/IR/ArmSVEDialect.cpp | 10 +++++----- .../ArmSVE/Transforms/LegalizeForLLVMExport.cpp | 4 ++-- .../Dialect/ArmSVE/ArmSVEToLLVMIRTranslation.cpp | 4 ++-- 10 files changed, 32 insertions(+), 25 deletions(-) rename mlir/include/mlir/Dialect/ArmSVE/{ => IR}/ArmSVE.td (95%) rename mlir/include/mlir/Dialect/ArmSVE/{ => IR}/ArmSVEDialect.h (89%) create mode 100644 mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt rename mlir/include/mlir/Dialect/ArmSVE/{ => Transforms}/Transforms.h (100%) diff --git a/mlir/include/mlir/Dialect/ArmSVE/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/CMakeLists.txt index 06595b7088a1e..f33061b2d87cf 100644 --- a/mlir/include/mlir/Dialect/ArmSVE/CMakeLists.txt +++ b/mlir/include/mlir/Dialect/ArmSVE/CMakeLists.txt @@ -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) diff --git a/mlir/include/mlir/Dialect/ArmSVE/ArmSVE.td b/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td similarity index 95% rename from mlir/include/mlir/Dialect/ArmSVE/ArmSVE.td rename to mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td index 5c86df1ef21f4..22f57a21fb9ae 100644 --- a/mlir/include/mlir/Dialect/ArmSVE/ArmSVE.td +++ b/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td @@ -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 traits = []> : Op {} -class ArmSVE_IntrBinaryOverloadedOp traits = []> : +class ArmSVE_IntrOp traits = [], + list overloadedOperands = [], + list overloadedResults = []> : LLVM_IntrOpBase overloadedResults=*/[0], - /*list overloadedOperands=*/[], // defined by result overload + /*list overloadedResults=*/overloadedResults, + /*list overloadedOperands=*/overloadedOperands, /*list traits=*/traits, /*int numResults=*/1>; +class ArmSVE_IntrBinaryOverloadedOp traits = []>: + ArmSVE_IntrOp; + class ScalableMaskedFOp traits = []> : ArmSVE_Op(); } diff --git a/mlir/lib/Dialect/ArmSVE/Transforms/LegalizeForLLVMExport.cpp b/mlir/lib/Dialect/ArmSVE/Transforms/LegalizeForLLVMExport.cpp index b6723a52e177f..abbb978304068 100644 --- a/mlir/lib/Dialect/ArmSVE/Transforms/LegalizeForLLVMExport.cpp +++ b/mlir/lib/Dialect/ArmSVE/Transforms/LegalizeForLLVMExport.cpp @@ -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" diff --git a/mlir/lib/Target/LLVMIR/Dialect/ArmSVE/ArmSVEToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/ArmSVE/ArmSVEToLLVMIRTranslation.cpp index bc1f0e934fa02..cd10811b68f02 100644 --- a/mlir/lib/Target/LLVMIR/Dialect/ArmSVE/ArmSVEToLLVMIRTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/Dialect/ArmSVE/ArmSVEToLLVMIRTranslation.cpp @@ -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 @@ class ArmSVEDialectLLVMIRTranslationInterface 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(); } From b24b31ece3ac7b1b4625e7b09afa4d4336334717 Mon Sep 17 00:00:00 2001 From: Benjamin Maxwell Date: Mon, 9 Oct 2023 09:49:44 +0100 Subject: [PATCH 2/2] Update mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td Co-authored-by: Cullen Rhodes --- mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td b/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td index 22f57a21fb9ae..58dec6091f27f 100644 --- a/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td +++ b/mlir/include/mlir/Dialect/ArmSVE/IR/ArmSVE.td @@ -38,9 +38,9 @@ class ArmSVE_Op traits = []> : Op {} class ArmSVE_IntrOp traits = [], - list overloadedOperands = [], - list overloadedResults = []> : + list traits = [], + list overloadedOperands = [], + list overloadedResults = []> : LLVM_IntrOpBase