1 //===- AsyncToLLVM.h - Convert Async to LLVM dialect ------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef MLIR_CONVERSION_ASYNCTOLLVM_ASYNCTOLLVM_H 10 #define MLIR_CONVERSION_ASYNCTOLLVM_ASYNCTOLLVM_H 11 12 #include <memory> 13 14 namespace mlir { 15 16 class ConversionTarget; 17 class Pass; 18 class MLIRContext; 19 class TypeConverter; 20 class RewritePatternSet; 21 22 #define GEN_PASS_DECL_CONVERTASYNCTOLLVMPASS 23 #include "mlir/Conversion/Passes.h.inc" 24 25 /// Populates patterns for async structural type conversions. 26 /// 27 /// A "structural" type conversion is one where the underlying ops are 28 /// completely agnostic to the actual types involved and simply need to update 29 /// their types. An example of this is async.execute -- the async.execute op and 30 /// the corresponding async.yield ops need to update their types accordingly to 31 /// the TypeConverter, but otherwise don't care what type conversions are 32 /// happening. 33 void populateAsyncStructuralTypeConversionsAndLegality( 34 TypeConverter &typeConverter, RewritePatternSet &patterns, 35 ConversionTarget &target); 36 37 } // namespace mlir 38 39 #endif // MLIR_CONVERSION_ASYNCTOLLVM_ASYNCTOLLVM_H 40