forked from OSchip/llvm-project
[mlir][NFC] Rename StandardToLLVM to FuncToLLVM
The current StandardToLLVM conversion patterns only really handle the Func dialect. The pass itself adds patterns for Arithmetic/CFToLLVM, but those should be/will be split out in a followup. This commit focuses solely on being an NFC rename. Aside from the directory change, the pattern and pass creation API have been renamed: * populateStdToLLVMFuncOpConversionPattern -> populateFuncToLLVMFuncOpConversionPattern * populateStdToLLVMConversionPatterns -> populateFuncToLLVMConversionPatterns * createLowerToLLVMPass -> createConvertFuncToLLVMPass Differential Revision: https://reviews.llvm.org/D120778
This commit is contained in:
parent
2d01ac18df
commit
5a7b919409
|
@ -21,8 +21,8 @@
|
|||
#include "flang/Semantics/runtime-type-info.h"
|
||||
#include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/LLVMCommon/Pattern.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/IR/BuiltinTypes.h"
|
||||
#include "mlir/IR/Matchers.h"
|
||||
#include "mlir/Pass/Pass.h"
|
||||
|
@ -3306,7 +3306,7 @@ public:
|
|||
UndefOpConversion, UnreachableOpConversion, XArrayCoorOpConversion,
|
||||
XEmboxOpConversion, XReboxOpConversion, ZeroOpConversion>(typeConverter,
|
||||
options);
|
||||
mlir::populateStdToLLVMConversionPatterns(typeConverter, pattern);
|
||||
mlir::populateFuncToLLVMConversionPatterns(typeConverter, pattern);
|
||||
mlir::arith::populateArithmeticToLLVMConversionPatterns(typeConverter,
|
||||
pattern);
|
||||
mlir::cf::populateControlFlowToLLVMConversionPatterns(typeConverter,
|
||||
|
|
|
@ -14,13 +14,12 @@ target_link_libraries(fir-opt PRIVATE
|
|||
MLIRIR
|
||||
MLIRLLVMIR
|
||||
MLIRPass
|
||||
MLIRStandardToLLVM
|
||||
MLIRFuncToLLVM
|
||||
MLIRTransforms
|
||||
MLIRAffineToStandard
|
||||
MLIRAnalysis
|
||||
MLIRSCFToControlFlow
|
||||
MLIRParser
|
||||
MLIRStandardToLLVM
|
||||
MLIRSupport
|
||||
MLIRVectorToLLVM
|
||||
MLIROptLib
|
||||
|
|
|
@ -13,13 +13,12 @@ target_link_libraries(tco PRIVATE
|
|||
MLIRLLVMToLLVMIRTranslation
|
||||
MLIRTargetLLVMIRExport
|
||||
MLIRPass
|
||||
MLIRStandardToLLVM
|
||||
MLIRFuncToLLVM
|
||||
MLIRTransforms
|
||||
MLIRAffineToStandard
|
||||
MLIRAnalysis
|
||||
MLIRSCFToControlFlow
|
||||
MLIRParser
|
||||
MLIRStandardToLLVM
|
||||
MLIRSupport
|
||||
MLIRVectorToLLVM
|
||||
)
|
||||
|
|
|
@ -415,7 +415,7 @@ func @pointwise_add(memref<?x?xf32, #map0>, memref<?x?xf32, #map0>, memref<?x?xf
|
|||
Which, after lowering to LLVM resembles:
|
||||
|
||||
```mlir
|
||||
// Run: mlir-opt example4.mlir -convert-linalg-to-std | mlir-opt -convert-std-to-llvm
|
||||
// Run: mlir-opt example4.mlir -convert-linalg-to-std | mlir-opt -convert-func-to-llvm
|
||||
// Some generated code are omitted here.
|
||||
func @example(%arg0: !llvm<"float*">, ...) {
|
||||
...
|
||||
|
|
|
@ -670,13 +670,13 @@ options ::= '{' (key ('=' value)?)+ '}'
|
|||
For example, the following pipeline:
|
||||
|
||||
```shell
|
||||
$ mlir-opt foo.mlir -cse -canonicalize -convert-std-to-llvm='use-bare-ptr-memref-call-conv=1'
|
||||
$ mlir-opt foo.mlir -cse -canonicalize -convert-func-to-llvm='use-bare-ptr-memref-call-conv=1'
|
||||
```
|
||||
|
||||
Can also be specified as (via the `-pass-pipeline` flag):
|
||||
|
||||
```shell
|
||||
$ mlir-opt foo.mlir -pass-pipeline='builtin.func(cse,canonicalize),convert-std-to-llvm{use-bare-ptr-memref-call-conv=1}'
|
||||
$ mlir-opt foo.mlir -pass-pipeline='builtin.func(cse,canonicalize),convert-func-to-llvm{use-bare-ptr-memref-call-conv=1}'
|
||||
```
|
||||
|
||||
In order to support round-tripping a pass to the textual representation using
|
||||
|
@ -997,7 +997,7 @@ pipeline. This display mode is available in mlir-opt via
|
|||
`-mlir-timing-display=list`.
|
||||
|
||||
```shell
|
||||
$ mlir-opt foo.mlir -mlir-disable-threading -pass-pipeline='builtin.func(cse,canonicalize)' -convert-std-to-llvm -mlir-timing -mlir-timing-display=list
|
||||
$ mlir-opt foo.mlir -mlir-disable-threading -pass-pipeline='builtin.func(cse,canonicalize)' -convert-func-to-llvm -mlir-timing -mlir-timing-display=list
|
||||
|
||||
===-------------------------------------------------------------------------===
|
||||
... Pass execution timing report ...
|
||||
|
@ -1022,7 +1022,7 @@ the most time, and can also be used to identify when analyses are being
|
|||
invalidated and recomputed. This is the default display mode.
|
||||
|
||||
```shell
|
||||
$ mlir-opt foo.mlir -mlir-disable-threading -pass-pipeline='builtin.func(cse,canonicalize)' -convert-std-to-llvm -mlir-timing
|
||||
$ mlir-opt foo.mlir -mlir-disable-threading -pass-pipeline='builtin.func(cse,canonicalize)' -convert-func-to-llvm -mlir-timing
|
||||
|
||||
===-------------------------------------------------------------------------===
|
||||
... Pass execution timing report ...
|
||||
|
@ -1053,7 +1053,7 @@ perceived time, or clock time, whereas the `User Time` will display the total
|
|||
cpu time.
|
||||
|
||||
```shell
|
||||
$ mlir-opt foo.mlir -pass-pipeline='builtin.func(cse,canonicalize)' -convert-std-to-llvm -mlir-timing
|
||||
$ mlir-opt foo.mlir -pass-pipeline='builtin.func(cse,canonicalize)' -convert-func-to-llvm -mlir-timing
|
||||
|
||||
===-------------------------------------------------------------------------===
|
||||
... Pass execution timing report ...
|
||||
|
|
|
@ -97,7 +97,7 @@ multiple stages by relying on
|
|||
mlir::cf::populateSCFToControlFlowConversionPatterns(patterns, &getContext());
|
||||
mlir::arith::populateArithmeticToLLVMConversionPatterns(typeConverter,
|
||||
patterns);
|
||||
mlir::populateStdToLLVMConversionPatterns(typeConverter, patterns);
|
||||
mlir::populateFuncToLLVMConversionPatterns(typeConverter, patterns);
|
||||
mlir::cf::populateControlFlowToLLVMConversionPatterns(patterns, &getContext());
|
||||
|
||||
// The only remaining operation, to lower from the `toy` dialect, is the
|
||||
|
|
|
@ -28,12 +28,12 @@
|
|||
#include "mlir/Conversion/AffineToStandard/AffineToStandard.h"
|
||||
#include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
|
||||
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||
#include "mlir/Dialect/Arithmetic/IR/Arithmetic.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
|
@ -208,7 +208,7 @@ void ToyToLLVMLoweringPass::runOnOperation() {
|
|||
patterns);
|
||||
populateMemRefToLLVMConversionPatterns(typeConverter, patterns);
|
||||
cf::populateControlFlowToLLVMConversionPatterns(typeConverter, patterns);
|
||||
populateStdToLLVMConversionPatterns(typeConverter, patterns);
|
||||
populateFuncToLLVMConversionPatterns(typeConverter, patterns);
|
||||
|
||||
// The only remaining operation to lower from the `toy` dialect, is the
|
||||
// PrintOp.
|
||||
|
|
|
@ -28,12 +28,12 @@
|
|||
#include "mlir/Conversion/AffineToStandard/AffineToStandard.h"
|
||||
#include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
|
||||
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||
#include "mlir/Dialect/Arithmetic/IR/Arithmetic.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
|
@ -208,7 +208,7 @@ void ToyToLLVMLoweringPass::runOnOperation() {
|
|||
patterns);
|
||||
populateMemRefToLLVMConversionPatterns(typeConverter, patterns);
|
||||
cf::populateControlFlowToLLVMConversionPatterns(typeConverter, patterns);
|
||||
populateStdToLLVMConversionPatterns(typeConverter, patterns);
|
||||
populateFuncToLLVMConversionPatterns(typeConverter, patterns);
|
||||
|
||||
// The only remaining operation to lower from the `toy` dialect, is the
|
||||
// PrintOp.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
//===- ConvertStandardToLLVM.h - Convert to the LLVM dialect ----*- C++ -*-===//
|
||||
//===- ConvertFuncToLLVM.h - Convert Func to LLVM ---------------*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
|
@ -6,18 +6,16 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Provides a dialect conversion targeting the LLVM IR dialect. By default, it
|
||||
// converts Standard ops and types and provides hooks for dialect-specific
|
||||
// extensions to the conversion.
|
||||
// Provides a set of conversion patterns from the Func dialect to the LLVM IR
|
||||
// dialect.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef MLIR_CONVERSION_STANDARDTOLLVM_CONVERTSTANDARDTOLLVM_H
|
||||
#define MLIR_CONVERSION_STANDARDTOLLVM_CONVERTSTANDARDTOLLVM_H
|
||||
#ifndef MLIR_CONVERSION_FUNCTOLLVM_CONVERTFUNCTOLLVM_H
|
||||
#define MLIR_CONVERSION_FUNCTOLLVM_CONVERTFUNCTOLLVM_H
|
||||
|
||||
namespace mlir {
|
||||
|
||||
class MLIRContext;
|
||||
class LLVMTypeConverter;
|
||||
class RewritePatternSet;
|
||||
|
||||
|
@ -25,16 +23,16 @@ class RewritePatternSet;
|
|||
/// `emitCWrappers` is set, the pattern will also produce functions
|
||||
/// that pass memref descriptors by pointer-to-structure in addition to the
|
||||
/// default unpacked form.
|
||||
void populateStdToLLVMFuncOpConversionPattern(LLVMTypeConverter &converter,
|
||||
RewritePatternSet &patterns);
|
||||
void populateFuncToLLVMFuncOpConversionPattern(LLVMTypeConverter &converter,
|
||||
RewritePatternSet &patterns);
|
||||
|
||||
/// Collect the patterns to convert from the Standard dialect to LLVM. The
|
||||
/// Collect the patterns to convert from the Func dialect to LLVM. The
|
||||
/// conversion patterns capture the LLVMTypeConverter and the LowerToLLVMOptions
|
||||
/// by reference meaning the references have to remain alive during the entire
|
||||
/// pattern lifetime.
|
||||
void populateStdToLLVMConversionPatterns(LLVMTypeConverter &converter,
|
||||
RewritePatternSet &patterns);
|
||||
void populateFuncToLLVMConversionPatterns(LLVMTypeConverter &converter,
|
||||
RewritePatternSet &patterns);
|
||||
|
||||
} // namespace mlir
|
||||
|
||||
#endif // MLIR_CONVERSION_STANDARDTOLLVM_CONVERTSTANDARDTOLLVM_H
|
||||
#endif // MLIR_CONVERSION_FUNCTOLLVM_CONVERTFUNCTOLLVM_H
|
|
@ -0,0 +1,28 @@
|
|||
//===- ConvertFuncToLLVMPass.h - Pass entrypoint ----------------*- 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef MLIR_CONVERSION_FUNCTOLLVM_CONVERTFUNCTOLLVMPASS_H_
|
||||
#define MLIR_CONVERSION_FUNCTOLLVM_CONVERTFUNCTOLLVMPASS_H_
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace mlir {
|
||||
class LowerToLLVMOptions;
|
||||
class ModuleOp;
|
||||
template <typename T>
|
||||
class OperationPass;
|
||||
class Pass;
|
||||
|
||||
/// Creates a pass to convert the Func dialect into the LLVMIR dialect.
|
||||
std::unique_ptr<OperationPass<ModuleOp>> createConvertFuncToLLVMPass();
|
||||
std::unique_ptr<OperationPass<ModuleOp>>
|
||||
createConvertFuncToLLVMPass(const LowerToLLVMOptions &options);
|
||||
|
||||
} // namespace mlir
|
||||
|
||||
#endif // MLIR_CONVERSION_FUNCTOLLVM_CONVERTFUNCTOLLVMPASS_H_
|
|
@ -20,6 +20,7 @@
|
|||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRV.h"
|
||||
#include "mlir/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRVPass.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
|
||||
#include "mlir/Conversion/FuncToSPIRV/FuncToSPIRVPass.h"
|
||||
#include "mlir/Conversion/GPUCommon/GPUCommonPass.h"
|
||||
#include "mlir/Conversion/GPUToNVVM/GPUToNVVMPass.h"
|
||||
|
@ -45,7 +46,6 @@
|
|||
#include "mlir/Conversion/SCFToSPIRV/SCFToSPIRVPass.h"
|
||||
#include "mlir/Conversion/SPIRVToLLVM/SPIRVToLLVMPass.h"
|
||||
#include "mlir/Conversion/ShapeToStandard/ShapeToStandard.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
|
||||
#include "mlir/Conversion/TensorToSPIRV/TensorToSPIRVPass.h"
|
||||
#include "mlir/Conversion/TosaToLinalg/TosaToLinalg.h"
|
||||
#include "mlir/Conversion/TosaToSCF/TosaToSCF.h"
|
||||
|
|
|
@ -218,6 +218,54 @@ def ConvertControlFlowToSPIRV : Pass<"convert-cf-to-spirv", "ModuleOp"> {
|
|||
];
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// FuncToLLVM
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
def ConvertFuncToLLVM : Pass<"convert-func-to-llvm", "ModuleOp"> {
|
||||
let summary = "Convert from the Func dialect to the LLVM dialect";
|
||||
let description = [{
|
||||
Convert Func dialect operations into the LLVM IR dialect operations.
|
||||
|
||||
#### Input invariant
|
||||
|
||||
- no `tensor` types;
|
||||
- all `vector` are one-dimensional;
|
||||
- all blocks are reachable by following the successors of the first basic
|
||||
block;
|
||||
|
||||
If other operations are present and their results are required by the LLVM
|
||||
IR dialect operations, the pass will fail. Any LLVM IR operations or types
|
||||
already present in the IR will be kept as is.
|
||||
|
||||
#### Output IR
|
||||
|
||||
Functions converted to LLVM IR. Function arguments types are converted
|
||||
one-to-one. Function results are converted one-to-one and, in case more than
|
||||
1 value is returned, packed into an LLVM IR struct type. Function calls and
|
||||
returns are updated accordingly. Block argument types are updated to use
|
||||
LLVM IR types.
|
||||
}];
|
||||
let constructor = "mlir::createConvertFuncToLLVMPass()";
|
||||
let dependentDialects = ["LLVM::LLVMDialect"];
|
||||
let options = [
|
||||
Option<"useBarePtrCallConv", "use-bare-ptr-memref-call-conv", "bool",
|
||||
/*default=*/"false",
|
||||
"Replace FuncOp's MemRef arguments with bare pointers to the MemRef "
|
||||
"element types">,
|
||||
Option<"emitCWrappers", "emit-c-wrappers", "bool", /*default=*/"false",
|
||||
"Emit wrappers for C-compatible pointer-to-struct memref "
|
||||
"descriptors">,
|
||||
Option<"indexBitwidth", "index-bitwidth", "unsigned",
|
||||
/*default=kDeriveIndexBitwidthFromDataLayout*/"0",
|
||||
"Bitwidth of the index type, 0 to use size of machine word">,
|
||||
Option<"dataLayout", "data-layout", "std::string",
|
||||
/*default=*/"\"\"",
|
||||
"String description (LLVM format) of the data layout that is "
|
||||
"expected on the produced module">
|
||||
];
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// FuncToSPIRV
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -617,57 +665,6 @@ def ConvertSPIRVToLLVM : Pass<"convert-spirv-to-llvm", "ModuleOp"> {
|
|||
let dependentDialects = ["LLVM::LLVMDialect"];
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// StandardToLLVM
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
def ConvertStandardToLLVM : Pass<"convert-std-to-llvm", "ModuleOp"> {
|
||||
let summary = "Convert scalar and vector operations from the Standard to the "
|
||||
"LLVM dialect";
|
||||
let description = [{
|
||||
Convert standard operations into the LLVM IR dialect operations.
|
||||
|
||||
#### Input invariant
|
||||
|
||||
- operations including: arithmetic on integers and floats, constants,
|
||||
direct calls, returns and branches;
|
||||
- no `tensor` types;
|
||||
- all `vector` are one-dimensional;
|
||||
- all blocks are reachable by following the successors of the first basic
|
||||
block;
|
||||
|
||||
If other operations are present and their results are required by the LLVM
|
||||
IR dialect operations, the pass will fail. Any LLVM IR operations or types
|
||||
already present in the IR will be kept as is.
|
||||
|
||||
#### Output IR
|
||||
|
||||
Functions converted to LLVM IR. Function arguments types are converted
|
||||
one-to-one. Function results are converted one-to-one and, in case more than
|
||||
1 value is returned, packed into an LLVM IR struct type. Function calls and
|
||||
returns are updated accordingly. Block argument types are updated to use
|
||||
LLVM IR types.
|
||||
}];
|
||||
let constructor = "mlir::createLowerToLLVMPass()";
|
||||
let dependentDialects = ["LLVM::LLVMDialect"];
|
||||
let options = [
|
||||
Option<"useBarePtrCallConv", "use-bare-ptr-memref-call-conv", "bool",
|
||||
/*default=*/"false",
|
||||
"Replace FuncOp's MemRef arguments with bare pointers to the MemRef "
|
||||
"element types">,
|
||||
Option<"emitCWrappers", "emit-c-wrappers", "bool", /*default=*/"false",
|
||||
"Emit wrappers for C-compatible pointer-to-struct memref "
|
||||
"descriptors">,
|
||||
Option<"indexBitwidth", "index-bitwidth", "unsigned",
|
||||
/*default=kDeriveIndexBitwidthFromDataLayout*/"0",
|
||||
"Bitwidth of the index type, 0 to use size of machine word">,
|
||||
Option<"dataLayout", "data-layout", "std::string",
|
||||
/*default=*/"\"\"",
|
||||
"String description (LLVM format) of the data layout that is "
|
||||
"expected on the produced module">
|
||||
];
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// TensorToSPIRV
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -26,8 +26,8 @@ class OperationPass;
|
|||
/// This transformation creates a sequence of global variables that are later
|
||||
/// linked to the variables in the kernel module, and a series of copies to/from
|
||||
/// them to emulate the memory transfer from the host or to the device sides. It
|
||||
/// also converts the remaining Standard dialect into LLVM dialect, emitting C
|
||||
/// wrappers.
|
||||
/// also converts the remaining Arithmetic, Func, and MemRef dialects into LLVM
|
||||
/// dialect, emitting C wrappers.
|
||||
std::unique_ptr<OperationPass<ModuleOp>> createLowerHostCodeToLLVMPass();
|
||||
|
||||
/// Creates a pass to convert SPIR-V operations to the LLVMIR dialect.
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
//===- ConvertStandardToLLVMPass.h - Pass entrypoint ------------*- 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef MLIR_CONVERSION_STANDARDTOLLVM_CONVERTSTANDARDTOLLVMPASS_H_
|
||||
#define MLIR_CONVERSION_STANDARDTOLLVM_CONVERTSTANDARDTOLLVMPASS_H_
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace mlir {
|
||||
class LowerToLLVMOptions;
|
||||
class ModuleOp;
|
||||
template <typename T>
|
||||
class OperationPass;
|
||||
class Pass;
|
||||
|
||||
/// Creates a pass to convert the Standard dialect into the LLVMIR dialect.
|
||||
/// stdlib malloc/free is used by default for allocating memrefs allocated with
|
||||
/// memref.alloc, while LLVM's alloca is used for those allocated with
|
||||
/// memref.alloca.
|
||||
std::unique_ptr<OperationPass<ModuleOp>> createLowerToLLVMPass();
|
||||
std::unique_ptr<OperationPass<ModuleOp>>
|
||||
createLowerToLLVMPass(const LowerToLLVMOptions &options);
|
||||
|
||||
} // namespace mlir
|
||||
|
||||
#endif // MLIR_CONVERSION_STANDARDTOLLVM_CONVERTSTANDARDTOLLVMPASS_H_
|
|
@ -9,9 +9,9 @@
|
|||
#include "mlir/Conversion/AsyncToLLVM/AsyncToLLVM.h"
|
||||
|
||||
#include "../PassDetail.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Dialect/Arithmetic/IR/Arithmetic.h"
|
||||
#include "mlir/Dialect/Async/IR/Async.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
|
|
|
@ -13,9 +13,9 @@ add_mlir_conversion_library(MLIRAsyncToLLVM
|
|||
LINK_LIBS PUBLIC
|
||||
MLIRArithmetic
|
||||
MLIRAsync
|
||||
MLIRFuncToLLVM
|
||||
MLIRFuncTransforms
|
||||
MLIRLLVMCommonConversion
|
||||
MLIRLLVMIR
|
||||
MLIRStandardToLLVM
|
||||
MLIRTransforms
|
||||
)
|
||||
|
|
|
@ -8,6 +8,7 @@ add_subdirectory(ComplexToLLVM)
|
|||
add_subdirectory(ComplexToStandard)
|
||||
add_subdirectory(ControlFlowToLLVM)
|
||||
add_subdirectory(ControlFlowToSPIRV)
|
||||
add_subdirectory(FuncToLLVM)
|
||||
add_subdirectory(FuncToSPIRV)
|
||||
add_subdirectory(GPUCommon)
|
||||
add_subdirectory(GPUToNVVM)
|
||||
|
@ -34,7 +35,6 @@ add_subdirectory(SCFToOpenMP)
|
|||
add_subdirectory(SCFToSPIRV)
|
||||
add_subdirectory(ShapeToStandard)
|
||||
add_subdirectory(SPIRVToLLVM)
|
||||
add_subdirectory(StandardToLLVM)
|
||||
add_subdirectory(TensorToSPIRV)
|
||||
add_subdirectory(TosaToLinalg)
|
||||
add_subdirectory(TosaToSCF)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
add_mlir_conversion_library(MLIRStandardToLLVM
|
||||
StandardToLLVM.cpp
|
||||
add_mlir_conversion_library(MLIRFuncToLLVM
|
||||
FuncToLLVM.cpp
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/StandardToLLVM
|
||||
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/FuncToLLVM
|
||||
|
||||
DEPENDS
|
||||
MLIRConversionPassIncGen
|
||||
|
@ -19,6 +19,5 @@ add_mlir_conversion_library(MLIRStandardToLLVM
|
|||
MLIRFunc
|
||||
MLIRLLVMCommonConversion
|
||||
MLIRLLVMIR
|
||||
MLIRMath
|
||||
MLIRTransforms
|
||||
MLIRTransformUtils
|
||||
)
|
|
@ -1,4 +1,4 @@
|
|||
//===- StandardToLLVM.cpp - Standard to LLVM dialect conversion -----------===//
|
||||
//===- FuncToLLVM.cpp - Func to LLVM dialect conversion -------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
|
@ -6,7 +6,7 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements a pass to convert MLIR standard and builtin dialects
|
||||
// This file implements a pass to convert MLIR Func and builtin dialects
|
||||
// into the LLVM IR dialect.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -15,11 +15,11 @@
|
|||
#include "mlir/Analysis/DataLayoutAnalysis.h"
|
||||
#include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/Pattern.h"
|
||||
#include "mlir/Conversion/LLVMCommon/VectorPattern.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/LLVMIR/FunctionCallUtils.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
using namespace mlir;
|
||||
|
||||
#define PASS_NAME "convert-std-to-llvm"
|
||||
#define PASS_NAME "convert-func-to-llvm"
|
||||
|
||||
/// Only retain those attributes that are not constructed by
|
||||
/// `LLVMFuncOp::build`. If `filterArgAttrs` is set, also filter out argument
|
||||
|
@ -579,7 +579,7 @@ struct ReturnOpLowering : public ConvertOpToLLVMPattern<func::ReturnOp> {
|
|||
};
|
||||
} // namespace
|
||||
|
||||
void mlir::populateStdToLLVMFuncOpConversionPattern(
|
||||
void mlir::populateFuncToLLVMFuncOpConversionPattern(
|
||||
LLVMTypeConverter &converter, RewritePatternSet &patterns) {
|
||||
if (converter.getOptions().useBarePtrCallConv)
|
||||
patterns.add<BarePtrFuncOpConversion>(converter);
|
||||
|
@ -587,9 +587,9 @@ void mlir::populateStdToLLVMFuncOpConversionPattern(
|
|||
patterns.add<FuncOpConversion>(converter);
|
||||
}
|
||||
|
||||
void mlir::populateStdToLLVMConversionPatterns(LLVMTypeConverter &converter,
|
||||
RewritePatternSet &patterns) {
|
||||
populateStdToLLVMFuncOpConversionPattern(converter, patterns);
|
||||
void mlir::populateFuncToLLVMConversionPatterns(LLVMTypeConverter &converter,
|
||||
RewritePatternSet &patterns) {
|
||||
populateFuncToLLVMFuncOpConversionPattern(converter, patterns);
|
||||
// clang-format off
|
||||
patterns.add<
|
||||
CallIndirectOpLowering,
|
||||
|
@ -600,12 +600,13 @@ void mlir::populateStdToLLVMConversionPatterns(LLVMTypeConverter &converter,
|
|||
}
|
||||
|
||||
namespace {
|
||||
/// A pass converting MLIR operations into the LLVM IR dialect.
|
||||
struct LLVMLoweringPass : public ConvertStandardToLLVMBase<LLVMLoweringPass> {
|
||||
LLVMLoweringPass() = default;
|
||||
LLVMLoweringPass(bool useBarePtrCallConv, bool emitCWrappers,
|
||||
unsigned indexBitwidth, bool useAlignedAlloc,
|
||||
const llvm::DataLayout &dataLayout) {
|
||||
/// A pass converting Func operations into the LLVM IR dialect.
|
||||
struct ConvertFuncToLLVMPass
|
||||
: public ConvertFuncToLLVMBase<ConvertFuncToLLVMPass> {
|
||||
ConvertFuncToLLVMPass() = default;
|
||||
ConvertFuncToLLVMPass(bool useBarePtrCallConv, bool emitCWrappers,
|
||||
unsigned indexBitwidth, bool useAlignedAlloc,
|
||||
const llvm::DataLayout &dataLayout) {
|
||||
this->useBarePtrCallConv = useBarePtrCallConv;
|
||||
this->emitCWrappers = emitCWrappers;
|
||||
this->indexBitwidth = indexBitwidth;
|
||||
|
@ -644,7 +645,9 @@ struct LLVMLoweringPass : public ConvertStandardToLLVMBase<LLVMLoweringPass> {
|
|||
&dataLayoutAnalysis);
|
||||
|
||||
RewritePatternSet patterns(&getContext());
|
||||
populateStdToLLVMConversionPatterns(typeConverter, patterns);
|
||||
populateFuncToLLVMConversionPatterns(typeConverter, patterns);
|
||||
|
||||
// TODO: Remove these in favor of their dedicated conversion passes.
|
||||
arith::populateArithmeticToLLVMConversionPatterns(typeConverter, patterns);
|
||||
cf::populateControlFlowToLLVMConversionPatterns(typeConverter, patterns);
|
||||
|
||||
|
@ -658,20 +661,20 @@ struct LLVMLoweringPass : public ConvertStandardToLLVMBase<LLVMLoweringPass> {
|
|||
};
|
||||
} // namespace
|
||||
|
||||
std::unique_ptr<OperationPass<ModuleOp>> mlir::createLowerToLLVMPass() {
|
||||
return std::make_unique<LLVMLoweringPass>();
|
||||
std::unique_ptr<OperationPass<ModuleOp>> mlir::createConvertFuncToLLVMPass() {
|
||||
return std::make_unique<ConvertFuncToLLVMPass>();
|
||||
}
|
||||
|
||||
std::unique_ptr<OperationPass<ModuleOp>>
|
||||
mlir::createLowerToLLVMPass(const LowerToLLVMOptions &options) {
|
||||
mlir::createConvertFuncToLLVMPass(const LowerToLLVMOptions &options) {
|
||||
auto allocLowering = options.allocLowering;
|
||||
// There is no way to provide additional patterns for pass, so
|
||||
// AllocLowering::None will always fail.
|
||||
assert(allocLowering != LowerToLLVMOptions::AllocLowering::None &&
|
||||
"LLVMLoweringPass doesn't support AllocLowering::None");
|
||||
"ConvertFuncToLLVMPass doesn't support AllocLowering::None");
|
||||
bool useAlignedAlloc =
|
||||
(allocLowering == LowerToLLVMOptions::AllocLowering::AlignedAlloc);
|
||||
return std::make_unique<LLVMLoweringPass>(
|
||||
return std::make_unique<ConvertFuncToLLVMPass>(
|
||||
options.useBarePtrCallConv, options.emitCWrappers,
|
||||
options.getIndexBitwidth(), useAlignedAlloc, options.dataLayout);
|
||||
}
|
|
@ -32,6 +32,7 @@ add_mlir_conversion_library(MLIRGPUToGPURuntimeTransforms
|
|||
MLIRArithmeticToLLVM
|
||||
MLIRAsyncToLLVM
|
||||
MLIRControlFlowToLLVM
|
||||
MLIRFuncToLLVM
|
||||
MLIRGPUTransforms
|
||||
MLIRIR
|
||||
MLIRLLVMCommonConversion
|
||||
|
@ -39,6 +40,5 @@ add_mlir_conversion_library(MLIRGPUToGPURuntimeTransforms
|
|||
MLIRMemRefToLLVM
|
||||
MLIRPass
|
||||
MLIRSupport
|
||||
MLIRStandardToLLVM
|
||||
MLIRVectorToLLVM
|
||||
)
|
||||
|
|
|
@ -19,11 +19,11 @@
|
|||
#include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h"
|
||||
#include "mlir/Conversion/AsyncToLLVM/AsyncToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/Pattern.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
|
||||
#include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h"
|
||||
#include "mlir/Dialect/Async/IR/Async.h"
|
||||
#include "mlir/Dialect/GPU/GPUDialect.h"
|
||||
|
@ -374,7 +374,7 @@ void GpuToLLVMConversionPass::runOnOperation() {
|
|||
mlir::cf::populateControlFlowToLLVMConversionPatterns(converter, patterns);
|
||||
populateVectorToLLVMConversionPatterns(converter, patterns);
|
||||
populateMemRefToLLVMConversionPatterns(converter, patterns);
|
||||
populateStdToLLVMConversionPatterns(converter, patterns);
|
||||
populateFuncToLLVMConversionPatterns(converter, patterns);
|
||||
populateAsyncStructuralTypeConversionsAndLegality(converter, patterns,
|
||||
target);
|
||||
populateGpuToLLVMConversionPatterns(converter, patterns, gpuBinaryAnnotation);
|
||||
|
|
|
@ -12,6 +12,7 @@ add_mlir_conversion_library(MLIRGPUToNVVMTransforms
|
|||
|
||||
LINK_LIBS PUBLIC
|
||||
MLIRArithmeticToLLVM
|
||||
MLIRFuncToLLVM
|
||||
MLIRGPUOps
|
||||
MLIRGPUToGPURuntimeTransforms
|
||||
MLIRLLVMCommonConversion
|
||||
|
@ -19,6 +20,5 @@ add_mlir_conversion_library(MLIRGPUToNVVMTransforms
|
|||
MLIRMemRefToLLVM
|
||||
MLIRNVVMIR
|
||||
MLIRPass
|
||||
MLIRStandardToLLVM
|
||||
MLIRTransformUtils
|
||||
)
|
||||
|
|
|
@ -15,11 +15,11 @@
|
|||
|
||||
#include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/LoweringOptions.h"
|
||||
#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Dialect/Arithmetic/IR/Arithmetic.h"
|
||||
#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"
|
||||
#include "mlir/Dialect/GPU/GPUDialect.h"
|
||||
|
@ -264,7 +264,7 @@ struct LowerGpuOpsToNVVMOpsPass
|
|||
|
||||
arith::populateArithmeticToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
cf::populateControlFlowToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
populateStdToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
populateFuncToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
populateMemRefToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
populateGpuToNVVMConversionPatterns(converter, llvmPatterns);
|
||||
populateGpuWMMAToNVVMConversionPatterns(converter, llvmPatterns);
|
||||
|
|
|
@ -11,6 +11,7 @@ add_mlir_conversion_library(MLIRGPUToROCDLTransforms
|
|||
|
||||
LINK_LIBS PUBLIC
|
||||
MLIRArithmeticToLLVM
|
||||
MLIRFuncToLLVM
|
||||
MLIRGPUOps
|
||||
MLIRGPUToGPURuntimeTransforms
|
||||
MLIRLLVMCommonConversion
|
||||
|
@ -18,6 +19,5 @@ add_mlir_conversion_library(MLIRGPUToROCDLTransforms
|
|||
MLIRMemRefToLLVM
|
||||
MLIRROCDLIR
|
||||
MLIRPass
|
||||
MLIRStandardToLLVM
|
||||
MLIRVectorToROCDL
|
||||
)
|
||||
|
|
|
@ -15,11 +15,11 @@
|
|||
#include "mlir/Conversion/GPUToROCDL/GPUToROCDLPass.h"
|
||||
|
||||
#include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/LoweringOptions.h"
|
||||
#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h"
|
||||
#include "mlir/Conversion/VectorToROCDL/VectorToROCDL.h"
|
||||
#include "mlir/Dialect/GPU/GPUDialect.h"
|
||||
|
@ -80,7 +80,7 @@ struct LowerGpuOpsToROCDLOpsPass
|
|||
populateVectorToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
populateVectorToROCDLConversionPatterns(converter, llvmPatterns);
|
||||
cf::populateControlFlowToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
populateStdToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
populateFuncToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
populateMemRefToLLVMConversionPatterns(converter, llvmPatterns);
|
||||
populateGpuToROCDLConversionPatterns(converter, llvmPatterns, runtime);
|
||||
LLVMConversionTarget target(getContext());
|
||||
|
|
|
@ -13,11 +13,11 @@ add_mlir_conversion_library(MLIROpenMPToLLVM
|
|||
|
||||
LINK_LIBS PUBLIC
|
||||
MLIRArithmeticToLLVM
|
||||
MLIRFuncToLLVM
|
||||
MLIRIR
|
||||
MLIRLLVMCommonConversion
|
||||
MLIRLLVMIR
|
||||
MLIRMemRefToLLVM
|
||||
MLIROpenMP
|
||||
MLIRStandardToLLVM
|
||||
MLIRTransforms
|
||||
)
|
||||
|
|
|
@ -11,11 +11,11 @@
|
|||
#include "../PassDetail.h"
|
||||
#include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/Pattern.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
|
||||
|
||||
|
@ -70,7 +70,7 @@ void ConvertOpenMPToLLVMPass::runOnOperation() {
|
|||
arith::populateArithmeticToLLVMConversionPatterns(converter, patterns);
|
||||
cf::populateControlFlowToLLVMConversionPatterns(converter, patterns);
|
||||
populateMemRefToLLVMConversionPatterns(converter, patterns);
|
||||
populateStdToLLVMConversionPatterns(converter, patterns);
|
||||
populateFuncToLLVMConversionPatterns(converter, patterns);
|
||||
populateOpenMPToLLVMConversionPatterns(converter, patterns);
|
||||
|
||||
LLVMConversionTarget target(getContext());
|
||||
|
|
|
@ -12,13 +12,13 @@ add_mlir_conversion_library(MLIRSPIRVToLLVM
|
|||
|
||||
LINK_LIBS PUBLIC
|
||||
MLIRArithmeticToLLVM
|
||||
MLIRFuncToLLVM
|
||||
MLIRGPUOps
|
||||
MLIRSPIRV
|
||||
MLIRSPIRVUtils
|
||||
MLIRIR
|
||||
MLIRLLVMCommonConversion
|
||||
MLIRLLVMIR
|
||||
MLIRMemRefToLLVM
|
||||
MLIRStandardToLLVM
|
||||
MLIRIR
|
||||
MLIRSPIRV
|
||||
MLIRSPIRVUtils
|
||||
MLIRTransforms
|
||||
)
|
||||
|
|
|
@ -13,13 +13,13 @@
|
|||
|
||||
#include "../PassDetail.h"
|
||||
#include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/LLVMCommon/LoweringOptions.h"
|
||||
#include "mlir/Conversion/LLVMCommon/Pattern.h"
|
||||
#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/SPIRVToLLVM/SPIRVToLLVM.h"
|
||||
#include "mlir/Conversion/SPIRVToLLVM/SPIRVToLLVMPass.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Dialect/GPU/GPUDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/SPIRV/IR/SPIRVOps.h"
|
||||
|
@ -280,8 +280,7 @@ public:
|
|||
llvm::make_early_inc_range(module.getOps<gpu::GPUModuleOp>()))
|
||||
gpuModule.erase();
|
||||
|
||||
// Specify options to lower Standard to LLVM and pull in the conversion
|
||||
// patterns.
|
||||
// Specify options to lower to LLVM and pull in the conversion patterns.
|
||||
LowerToLLVMOptions options(module.getContext());
|
||||
options.emitCWrappers = true;
|
||||
auto *context = module.getContext();
|
||||
|
@ -290,7 +289,7 @@ public:
|
|||
mlir::arith::populateArithmeticToLLVMConversionPatterns(typeConverter,
|
||||
patterns);
|
||||
populateMemRefToLLVMConversionPatterns(typeConverter, patterns);
|
||||
populateStdToLLVMConversionPatterns(typeConverter, patterns);
|
||||
populateFuncToLLVMConversionPatterns(typeConverter, patterns);
|
||||
patterns.add<GPULaunchLowering>(typeConverter);
|
||||
|
||||
// Pull in SPIR-V type conversion patterns to convert SPIR-V global
|
||||
|
|
|
@ -12,10 +12,10 @@ add_mlir_conversion_library(MLIRVectorToROCDL
|
|||
Core
|
||||
|
||||
LINK_LIBS PUBLIC
|
||||
MLIRFuncToLLVM
|
||||
MLIRROCDLIR
|
||||
MLIRLLVMCommonConversion
|
||||
MLIRMemRefToLLVM
|
||||
MLIRStandardToLLVM
|
||||
MLIRVector
|
||||
MLIRTransforms
|
||||
)
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
#include "mlir/Conversion/VectorToROCDL/VectorToROCDL.h"
|
||||
|
||||
#include "../PassDetail.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
|
||||
#include "mlir/Conversion/LLVMCommon/Pattern.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||
#include "mlir/Dialect/GPU/GPUDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/ROCDLDialect.h"
|
||||
|
@ -165,7 +165,7 @@ void LowerVectorToROCDLPass::runOnOperation() {
|
|||
|
||||
populateVectorToROCDLConversionPatterns(converter, patterns);
|
||||
populateMemRefToLLVMConversionPatterns(converter, patterns);
|
||||
populateStdToLLVMConversionPatterns(converter, patterns);
|
||||
populateFuncToLLVMConversionPatterns(converter, patterns);
|
||||
|
||||
LLVMConversionTarget target(getContext());
|
||||
target.addLegalDialect<ROCDL::ROCDLDialect>();
|
||||
|
|
|
@ -40,6 +40,7 @@ add_mlir_dialect_library(MLIRLinalgTransforms
|
|||
MLIRBufferization
|
||||
MLIRComplex
|
||||
MLIRFunc
|
||||
MLIRFuncToLLVM
|
||||
MLIRFuncTransforms
|
||||
MLIRInferTypeOpInterface
|
||||
MLIRIR
|
||||
|
@ -53,7 +54,6 @@ add_mlir_dialect_library(MLIRLinalgTransforms
|
|||
MLIRSCFUtils
|
||||
MLIRPass
|
||||
MLIRSparseTensor
|
||||
MLIRStandardToLLVM
|
||||
MLIRTensor
|
||||
MLIRTensorTilingInterfaceImpl
|
||||
MLIRTensorTransforms
|
||||
|
|
|
@ -47,7 +47,7 @@ void mlir::sparse_tensor::buildSparseCompiler(
|
|||
pm.addPass(createConvertVectorToLLVMPass(options.lowerVectorToLLVMOptions()));
|
||||
pm.addPass(createMemRefToLLVMPass());
|
||||
pm.addNestedPass<FuncOp>(createConvertMathToLLVMPass());
|
||||
pm.addPass(createLowerToLLVMPass()); // --convert-std-to-llvm
|
||||
pm.addPass(createConvertFuncToLLVMPass());
|
||||
pm.addPass(createReconcileUnrealizedCastsPass());
|
||||
}
|
||||
|
||||
|
|
|
@ -78,12 +78,12 @@ add_mlir_library(MLIRJitRunner
|
|||
${dialect_libs}
|
||||
MLIRExecutionEngine
|
||||
MLIRFunc
|
||||
MLIRFuncToLLVM
|
||||
MLIRIR
|
||||
MLIRParser
|
||||
MLIRLLVMToLLVMIRTranslation
|
||||
MLIRTargetLLVMIRExport
|
||||
MLIRTransforms
|
||||
MLIRStandardToLLVM
|
||||
MLIRSupport
|
||||
)
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ void lowerModuleToLLVM(MlirContext ctx, MlirModule module) {
|
|||
MlirPassManager pm = mlirPassManagerCreate(ctx);
|
||||
MlirOpPassManager opm = mlirPassManagerGetNestedUnder(
|
||||
pm, mlirStringRefCreateFromCString("builtin.func"));
|
||||
mlirPassManagerAddOwnedPass(pm, mlirCreateConversionConvertStandardToLLVM());
|
||||
mlirPassManagerAddOwnedPass(pm, mlirCreateConversionConvertFuncToLLVM());
|
||||
mlirOpPassManagerAddOwnedPass(opm,
|
||||
mlirCreateConversionConvertArithmeticToLLVM());
|
||||
MlirLogicalResult status = mlirPassManagerRun(pm, module);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-complex-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | FileCheck %s
|
||||
// RUN: mlir-opt %s -convert-complex-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | FileCheck %s
|
||||
|
||||
// CHECK-LABEL: llvm.func @complex_div
|
||||
// CHECK-SAME: %[[LHS:.*]]: ![[C_TY:.*>]], %[[RHS:.*]]: ![[C_TY]]) -> ![[C_TY]]
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-complex-to-standard -convert-complex-to-llvm -convert-math-to-llvm -convert-arith-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | FileCheck %s
|
||||
// RUN: mlir-opt %s -convert-complex-to-standard -convert-complex-to-llvm -convert-math-to-llvm -convert-arith-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | FileCheck %s
|
||||
|
||||
// CHECK-LABEL: llvm.func @complex_abs
|
||||
// CHECK-SAME: %[[ARG:.*]]: ![[C_TY:.*]])
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: mlir-opt -convert-memref-to-llvm -convert-std-to-llvm='emit-c-wrappers=1' -reconcile-unrealized-casts %s | FileCheck %s
|
||||
// RUN: mlir-opt -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts %s | FileCheck %s --check-prefix=EMIT_C_ATTRIBUTE
|
||||
// RUN: mlir-opt -convert-memref-to-llvm -convert-func-to-llvm='emit-c-wrappers=1' -reconcile-unrealized-casts %s | FileCheck %s
|
||||
// RUN: mlir-opt -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts %s | FileCheck %s --check-prefix=EMIT_C_ATTRIBUTE
|
||||
|
||||
// This tests the default memref calling convention and the emission of C
|
||||
// wrappers. We don't need to separate runs because the wrapper-emission
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt -convert-std-to-llvm %s | FileCheck %s
|
||||
// RUN: mlir-opt -convert-func-to-llvm %s | FileCheck %s
|
||||
|
||||
// CHECK-LABEL: func @check_attributes
|
||||
// When expanding the memref to multiple arguments, argument attributes are replicated.
|
|
@ -0,0 +1,6 @@
|
|||
// RUN: mlir-opt -convert-func-to-llvm %s | FileCheck %s
|
||||
// RUN-32: mlir-opt -convert-func-to-llvm='data-layout=p:32:32:32' %s | FileCheck %s
|
||||
|
||||
// CHECK: module attributes {llvm.data_layout = ""}
|
||||
// CHECK-32: module attributes {llvm.data_layout ="p:32:32:32"}
|
||||
module {}
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt -convert-std-to-llvm -split-input-file -verify-diagnostics %s | FileCheck %s
|
||||
// RUN: mlir-opt -convert-func-to-llvm -split-input-file -verify-diagnostics %s | FileCheck %s
|
||||
|
||||
//CHECK: llvm.func @second_order_arg(!llvm.ptr<func<void ()>>)
|
||||
func private @second_order_arg(%arg0 : () -> ())
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: mlir-opt -convert-std-to-llvm -reconcile-unrealized-casts %s | FileCheck %s
|
||||
// RUN: mlir-opt -convert-std-to-llvm='use-bare-ptr-memref-call-conv=1' -split-input-file %s | FileCheck %s --check-prefix=BAREPTR
|
||||
// RUN: mlir-opt -convert-func-to-llvm -reconcile-unrealized-casts %s | FileCheck %s
|
||||
// RUN: mlir-opt -convert-func-to-llvm='use-bare-ptr-memref-call-conv=1' -split-input-file %s | FileCheck %s --check-prefix=BAREPTR
|
||||
|
||||
// These tests were separated from func-memref.mlir because applying
|
||||
// -reconcile-unrealized-casts resulted in `llvm.extractvalue` ops getting
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: mlir-opt -convert-arith-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts -split-input-file %s | FileCheck %s
|
||||
// RUN: mlir-opt -convert-arith-to-llvm -convert-std-to-llvm='use-bare-ptr-memref-call-conv=1' -reconcile-unrealized-casts -split-input-file %s | FileCheck %s --check-prefix=BAREPTR
|
||||
// RUN: mlir-opt -convert-arith-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts -split-input-file %s | FileCheck %s
|
||||
// RUN: mlir-opt -convert-arith-to-llvm -convert-func-to-llvm='use-bare-ptr-memref-call-conv=1' -reconcile-unrealized-casts -split-input-file %s | FileCheck %s --check-prefix=BAREPTR
|
||||
|
||||
// BAREPTR-LABEL: func @check_noalias
|
||||
// BAREPTR-SAME: %{{.*}}: !llvm.ptr<f32> {llvm.noalias}, %{{.*}}: !llvm.ptr<f32> {llvm.noalias}
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: mlir-opt -convert-math-to-llvm -convert-arith-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts %s -split-input-file | FileCheck %s
|
||||
// RUN: mlir-opt -convert-math-to-llvm -convert-arith-to-llvm='index-bitwidth=32' -convert-std-to-llvm='index-bitwidth=32' -reconcile-unrealized-casts %s -split-input-file | FileCheck --check-prefix=CHECK32 %s
|
||||
// RUN: mlir-opt -convert-math-to-llvm -convert-arith-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts %s -split-input-file | FileCheck %s
|
||||
// RUN: mlir-opt -convert-math-to-llvm -convert-arith-to-llvm='index-bitwidth=32' -convert-func-to-llvm='index-bitwidth=32' -reconcile-unrealized-casts %s -split-input-file | FileCheck --check-prefix=CHECK32 %s
|
||||
|
||||
// CHECK-LABEL: func @empty() {
|
||||
// CHECK-NEXT: llvm.return
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-std-to-llvm -verify-diagnostics -split-input-file
|
||||
// RUN: mlir-opt %s -convert-func-to-llvm -verify-diagnostics -split-input-file
|
||||
|
||||
// Should not crash on unsupported types in function signatures.
|
||||
func private @unsupported_signature() -> tensor<10 x i32>
|
|
@ -1,6 +0,0 @@
|
|||
// RUN: mlir-opt -convert-std-to-llvm %s | FileCheck %s
|
||||
// RUN-32: mlir-opt -convert-std-to-llvm='data-layout=p:32:32:32' %s | FileCheck %s
|
||||
|
||||
// CHECK: module attributes {llvm.data_layout = ""}
|
||||
// CHECK-32: module attributes {llvm.data_layout ="p:32:32:32"}
|
||||
module {}
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-llvm="enable-arm-sve" -convert-std-to-llvm -reconcile-unrealized-casts | mlir-opt | FileCheck %s
|
||||
// RUN: mlir-opt %s -convert-vector-to-llvm="enable-arm-sve" -convert-func-to-llvm -reconcile-unrealized-casts | mlir-opt | FileCheck %s
|
||||
|
||||
func @arm_sve_sdot(%a: vector<[16]xi8>,
|
||||
%b: vector<[16]xi8>,
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
// RUN: -memref-expand \
|
||||
// RUN: -convert-vector-to-llvm \
|
||||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O3 \
|
||||
|
@ -24,7 +24,7 @@
|
|||
// RUN: -convert-scf-to-cf \
|
||||
// RUN: -convert-vector-to-llvm \
|
||||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O3 \
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
// RUN: -memref-expand \
|
||||
// RUN: -convert-vector-to-llvm \
|
||||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O3 \
|
||||
|
@ -31,7 +31,7 @@
|
|||
// RUN: -memref-expand \
|
||||
// RUN: -convert-vector-to-llvm \
|
||||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O3 \
|
||||
|
@ -45,7 +45,7 @@
|
|||
// RUN: -convert-scf-to-cf \
|
||||
// RUN: -convert-vector-to-llvm \
|
||||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O3 \
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -arith-expand \
|
||||
// RUN: -memref-expand \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O0 \
|
||||
|
@ -23,7 +23,7 @@
|
|||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -arith-expand \
|
||||
// RUN: -memref-expand \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O0 \
|
||||
|
@ -42,7 +42,7 @@
|
|||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -arith-expand \
|
||||
// RUN: -memref-expand \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O0 \
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
// RUN: -convert-async-to-llvm \
|
||||
// RUN: -convert-scf-to-cf \
|
||||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O0 \
|
||||
|
@ -21,7 +21,7 @@
|
|||
// RUN: -convert-async-to-llvm \
|
||||
// RUN: -convert-scf-to-cf \
|
||||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O0 \
|
||||
|
@ -39,7 +39,7 @@
|
|||
// RUN: -convert-async-to-llvm \
|
||||
// RUN: -convert-scf-to-cf \
|
||||
// RUN: -convert-memref-to-llvm \
|
||||
// RUN: -convert-std-to-llvm \
|
||||
// RUN: -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-cpu-runner \
|
||||
// RUN: -e entry -entry-point-result=void -O0 \
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// RUN: mlir-opt -test-linalg-codegen-strategy="anchor-func=matmul anchor-op=memref.copy register-tile-sizes=4,32 vectorize" | \
|
||||
|
||||
// RUN: mlir-opt -canonicalize -convert-vector-to-scf -lower-affine -convert-linalg-to-loops | \
|
||||
// RUN: mlir-opt -canonicalize -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt -canonicalize -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -O3 -e main -entry-point-result=void \
|
||||
// Activate to dump assembly
|
||||
// R_UN: -dump-object-file -object-filename=/tmp/a.o \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -O3 -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -O3 -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: mlir-opt %s -linalg-bufferize \
|
||||
// RUN: -arith-bufferize -tensor-bufferize -func-bufferize \
|
||||
// RUN: -finalizing-bufferize -buffer-deallocation -convert-linalg-to-llvm \
|
||||
// RUN: -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// RUN: mlir-opt %s -canonicalize -cse -linalg-comprehensive-module-bufferize |\
|
||||
// RUN: mlir-opt -buffer-deallocation -convert-vector-to-scf -lower-affine -convert-linalg-to-loops |\
|
||||
// RUN: mlir-opt -canonicalize -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt -canonicalize -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
|
||||
// RUN: mlir-cpu-runner -O3 -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext,%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext |\
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// RUN: mlir-opt %s -linalg-tile="tile-sizes=4" -convert-linalg-to-loops -convert-scf-to-cf \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// RUN: mlir-opt %s -linalg-tile="tile-sizes=2,4" -convert-linalg-to-loops -convert-scf-to-cf \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// RUN: mlir-opt %s -linalg-tile="tile-sizes=2,2" -convert-linalg-to-loops -convert-scf-to-cf \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// RUN: mlir-opt %s -linalg-tile="tile-sizes=2,3,3,2" -convert-linalg-to-loops -convert-scf-to-cf \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// RUN: mlir-opt %s -linalg-tile="tile-sizes=2,2,2" -convert-linalg-to-loops -convert-scf-to-cf \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// RUN: mlir-opt %s -linalg-tile="tile-sizes=0,5,5,5" -convert-linalg-to-loops -convert-scf-to-cf \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: mlir-opt %s -convert-elementwise-to-linalg \
|
||||
// RUN: -arith-bufferize -linalg-bufferize -tensor-bufferize \
|
||||
// RUN: -func-bufferize -buffer-deallocation -convert-linalg-to-loops \
|
||||
// RUN: -convert-linalg-to-llvm --convert-memref-to-llvm -convert-std-to-llvm \
|
||||
// RUN: -convert-linalg-to-llvm --convert-memref-to-llvm -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: mlir-opt %s -linalg-bufferize \
|
||||
// RUN: -arith-bufferize -tensor-bufferize -func-bufferize \
|
||||
// RUN: -finalizing-bufferize -buffer-deallocation -convert-linalg-to-llvm \
|
||||
// RUN: -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: mlir-opt %s -test-linalg-transform-patterns=test-linalg-to-vector-patterns \
|
||||
// RUN: -linalg-bufferize -arith-bufferize -tensor-bufferize -func-bufferize \
|
||||
// RUN: -finalizing-bufferize -buffer-deallocation \
|
||||
// RUN: -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext,%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: mlir-opt %s -linalg-bufferize \
|
||||
// RUN: -arith-bufferize -tensor-bufferize -func-bufferize \
|
||||
// RUN: -finalizing-bufferize -buffer-deallocation \
|
||||
// RUN: -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext,%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: mlir-opt %s -linalg-bufferize \
|
||||
// RUN: -arith-bufferize -tensor-bufferize -func-bufferize \
|
||||
// RUN: -finalizing-bufferize -buffer-deallocation \
|
||||
// RUN: -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-loops -convert-scf-to-cf -convert-linalg-to-llvm --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// RUN: mlir-opt %s -arith-bufferize -linalg-bufferize \
|
||||
// RUN: -tensor-bufferize -func-bufferize -finalizing-bufferize -buffer-deallocation -convert-linalg-to-loops \
|
||||
// RUN: -convert-linalg-to-llvm --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-llvm --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// UNSUPPORTED: asan
|
||||
// RUN: mlir-opt %s -linalg-bufferize -arith-bufferize \
|
||||
// RUN: -tensor-bufferize -func-bufferize -finalizing-bufferize -buffer-deallocation -convert-linalg-to-loops -convert-scf-to-cf \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext,%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
@ -10,7 +10,7 @@
|
|||
// RUN: -scf-bufferize -arith-bufferize -tensor-bufferize \
|
||||
// RUN: -func-bufferize \
|
||||
// RUN: -finalizing-bufferize -convert-linalg-to-loops -convert-scf-to-cf -convert-scf-to-cf \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-linalg-to-llvm -lower-affine -convert-scf-to-cf --convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext,%mlir_integration_test_dir/libmlir_runner_utils%shlibext \
|
||||
// RUN: | FileCheck %s
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
// Compile the MLIR file to LLVM:
|
||||
// RUN: mlir-opt %t/input.mlir \
|
||||
// RUN: -lower-affine -convert-scf-to-cf -convert-memref-to-llvm \
|
||||
// RUN: -convert-std-to-llvm -reconcile-unrealized-casts \
|
||||
// RUN: -convert-func-to-llvm -reconcile-unrealized-casts \
|
||||
// RUN: | mlir-translate --mlir-to-llvmir -o %t.ll
|
||||
|
||||
// Generate an object file for the MLIR code
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf \
|
||||
// RUN: -memref-expand -arith-expand -convert-vector-to-llvm \
|
||||
// RUN: -convert-memref-to-llvm -convert-std-to-llvm \
|
||||
// RUN: -convert-memref-to-llvm -convert-func-to-llvm \
|
||||
// RUN: -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e main -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext | FileCheck %s
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf \
|
||||
// RUN: -arith-bufferize -convert-vector-to-llvm="enable-amx" \
|
||||
// RUN: -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate -mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="+amx-tile,+amx-int8,+amx-bf16" \
|
||||
// RUN: --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate -mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="+amx-tile,+amx-int8,+amx-bf16" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate -mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="+amx-tile,+amx-int8,+amx-bf16" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf \
|
||||
// RUN: -arith-bufferize -convert-vector-to-llvm="enable-amx" \
|
||||
// RUN: -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate -mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="+amx-tile,+amx-int8,+amx-bf16" \
|
||||
// RUN: --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate -mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="+amx-tile,+amx-int8,+amx-bf16" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate -mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="+amx-tile,+amx-int8,+amx-bf16" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-vector-to-scf -lower-affine -convert-scf-to-cf -convert-vector-to-llvm="enable-amx" -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate -mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="+amx-tile,+amx-int8,+amx-bf16" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm="enable-x86vector" -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm="enable-x86vector" -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate --mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="avx" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-vector-to-scf='full-unroll=true' -lower-affine -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-std-to-llvm='use-bare-ptr-memref-call-conv=1' -convert-arith-to-llvm -reconcile-unrealized-casts |\
|
||||
// RUN: mlir-opt %s -convert-linalg-to-loops -convert-vector-to-scf='full-unroll=true' -lower-affine -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-func-to-llvm='use-bare-ptr-memref-call-conv=1' -convert-arith-to-llvm -reconcile-unrealized-casts |\
|
||||
// RUN: mlir-translate --mlir-to-llvmir |\
|
||||
// RUN: %lli --entry-function=entry --mattr="avx512f" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext |\
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm="enable-x86vector" -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm="enable-x86vector" -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate --mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="avx512bw" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-llvm="enable-x86vector" -convert-std-to-llvm | \
|
||||
// RUN: mlir-opt %s -convert-vector-to-llvm="enable-x86vector" -convert-func-to-llvm | \
|
||||
// RUN: mlir-translate --mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="avx" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm="enable-x86vector" -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm="enable-x86vector" -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate --mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="avx512bw,avx512vp2intersect" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm="enable-x86vector" -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm="enable-x86vector" -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-translate --mlir-to-llvmir | \
|
||||
// RUN: %lli --entry-function=entry --mattr="avx512bw,avx512vp2intersect" --dlopen=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -lower-matrix-intrinsics -matrix-allow-contract -matrix-default-layout=column-major \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -lower-matrix-intrinsics -matrix-allow-contract -matrix-default-layout=row-major \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-scf-to-cf -convert-vector-to-llvm -convert-memref-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: mlir-opt %s -convert-vector-to-llvm -convert-std-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-opt %s -convert-vector-to-llvm -convert-func-to-llvm -reconcile-unrealized-casts | \
|
||||
// RUN: mlir-cpu-runner -e entry -entry-point-result=void \
|
||||
// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \
|
||||
// RUN: FileCheck %s
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue