14
14
#include " mlir/Dialect/LLVMIR/LLVMDialect.h"
15
15
#include " mlir/Dialect/LLVMIR/LLVMTypes.h"
16
16
#include " mlir/IR/MLIRContext.h"
17
+ #include " mlir/Interfaces/DataLayoutInterfaces.h"
17
18
#include " mlir/Transforms/DialectConversion.h"
18
19
19
20
namespace cir {
20
21
namespace direct {
21
22
mlir::Value lowerCirAttrAsValue (mlir::Operation *parentOp, mlir::Attribute attr,
22
23
mlir::ConversionPatternRewriter &rewriter,
23
- const mlir::TypeConverter *converter);
24
+ const mlir::TypeConverter *converter,
25
+ mlir::DataLayout const &dataLayout);
24
26
25
27
mlir::LLVM::Linkage convertLinkage (cir::GlobalLinkageKind linkage);
26
28
@@ -271,7 +273,15 @@ class CIRToLLVMAllocaOpLowering
271
273
};
272
274
273
275
class CIRToLLVMLoadOpLowering : public mlir ::OpConversionPattern<cir::LoadOp> {
276
+ mlir::DataLayout const &dataLayout;
277
+
274
278
public:
279
+ CIRToLLVMLoadOpLowering (mlir::TypeConverter const &typeConverter,
280
+ mlir::DataLayout const &dataLayout,
281
+ mlir::MLIRContext *context)
282
+ : OpConversionPattern<cir::LoadOp>(typeConverter, context),
283
+ dataLayout (dataLayout) {}
284
+
275
285
using mlir::OpConversionPattern<cir::LoadOp>::OpConversionPattern;
276
286
277
287
mlir::LogicalResult
@@ -281,7 +291,15 @@ class CIRToLLVMLoadOpLowering : public mlir::OpConversionPattern<cir::LoadOp> {
281
291
282
292
class CIRToLLVMStoreOpLowering
283
293
: public mlir::OpConversionPattern<cir::StoreOp> {
294
+ mlir::DataLayout const &dataLayout;
295
+
284
296
public:
297
+ CIRToLLVMStoreOpLowering (mlir::TypeConverter const &typeConverter,
298
+ mlir::DataLayout const &dataLayout,
299
+ mlir::MLIRContext *context)
300
+ : OpConversionPattern<cir::StoreOp>(typeConverter, context),
301
+ dataLayout (dataLayout) {}
302
+
285
303
using mlir::OpConversionPattern<cir::StoreOp>::OpConversionPattern;
286
304
287
305
mlir::LogicalResult
@@ -291,7 +309,14 @@ class CIRToLLVMStoreOpLowering
291
309
292
310
class CIRToLLVMConstantOpLowering
293
311
: public mlir::OpConversionPattern<cir::ConstantOp> {
312
+ mlir::DataLayout const &dataLayout;
313
+
294
314
public:
315
+ CIRToLLVMConstantOpLowering (mlir::TypeConverter const &typeConverter,
316
+ mlir::DataLayout const &dataLayout,
317
+ mlir::MLIRContext *context)
318
+ : OpConversionPattern<cir::ConstantOp>(typeConverter, context),
319
+ dataLayout (dataLayout) {}
295
320
using mlir::OpConversionPattern<cir::ConstantOp>::OpConversionPattern;
296
321
297
322
mlir::LogicalResult
@@ -490,7 +515,15 @@ class CIRToLLVMSwitchFlatOpLowering
490
515
491
516
class CIRToLLVMGlobalOpLowering
492
517
: public mlir::OpConversionPattern<cir::GlobalOp> {
518
+ mlir::DataLayout const &dataLayout;
519
+
493
520
public:
521
+ CIRToLLVMGlobalOpLowering (mlir::TypeConverter const &typeConverter,
522
+ mlir::DataLayout const &dataLayout,
523
+ mlir::MLIRContext *context)
524
+ : OpConversionPattern<cir::GlobalOp>(typeConverter, context),
525
+ dataLayout (dataLayout) {}
526
+
494
527
using mlir::OpConversionPattern<cir::GlobalOp>::OpConversionPattern;
495
528
496
529
mlir::LogicalResult
0 commit comments