@@ -209,6 +209,129 @@ class CIRCosOpLowering : public mlir::OpConversionPattern<mlir::cir::CosOp> {
209
209
}
210
210
};
211
211
212
+ class CIRSqrtOpLowering : public mlir ::OpConversionPattern<mlir::cir::SqrtOp> {
213
+ public:
214
+ using mlir::OpConversionPattern<mlir::cir::SqrtOp>::OpConversionPattern;
215
+
216
+ mlir::LogicalResult
217
+ matchAndRewrite (mlir::cir::SqrtOp op, OpAdaptor adaptor,
218
+ mlir::ConversionPatternRewriter &rewriter) const override {
219
+ rewriter.replaceOpWithNewOp <mlir::math::SqrtOp>(op, adaptor.getSrc ());
220
+ return mlir::LogicalResult::success ();
221
+ }
222
+ };
223
+
224
+ class CIRFAbsOpLowering : public mlir ::OpConversionPattern<mlir::cir::FAbsOp> {
225
+ public:
226
+ using mlir::OpConversionPattern<mlir::cir::FAbsOp>::OpConversionPattern;
227
+
228
+ mlir::LogicalResult
229
+ matchAndRewrite (mlir::cir::FAbsOp op, OpAdaptor adaptor,
230
+ mlir::ConversionPatternRewriter &rewriter) const override {
231
+ rewriter.replaceOpWithNewOp <mlir::math::AbsFOp>(op, adaptor.getSrc ());
232
+ return mlir::LogicalResult::success ();
233
+ }
234
+ };
235
+
236
+ class CIRFloorOpLowering
237
+ : public mlir::OpConversionPattern<mlir::cir::FloorOp> {
238
+ public:
239
+ using mlir::OpConversionPattern<mlir::cir::FloorOp>::OpConversionPattern;
240
+
241
+ mlir::LogicalResult
242
+ matchAndRewrite (mlir::cir::FloorOp op, OpAdaptor adaptor,
243
+ mlir::ConversionPatternRewriter &rewriter) const override {
244
+ rewriter.replaceOpWithNewOp <mlir::math::FloorOp>(op, adaptor.getSrc ());
245
+ return mlir::LogicalResult::success ();
246
+ }
247
+ };
248
+
249
+ class CIRCeilOpLowering : public mlir ::OpConversionPattern<mlir::cir::CeilOp> {
250
+ public:
251
+ using mlir::OpConversionPattern<mlir::cir::CeilOp>::OpConversionPattern;
252
+
253
+ mlir::LogicalResult
254
+ matchAndRewrite (mlir::cir::CeilOp op, OpAdaptor adaptor,
255
+ mlir::ConversionPatternRewriter &rewriter) const override {
256
+ rewriter.replaceOpWithNewOp <mlir::math::CeilOp>(op, adaptor.getSrc ());
257
+ return mlir::LogicalResult::success ();
258
+ }
259
+ };
260
+
261
+ class CIRLog10OpLowering
262
+ : public mlir::OpConversionPattern<mlir::cir::Log10Op> {
263
+ public:
264
+ using mlir::OpConversionPattern<mlir::cir::Log10Op>::OpConversionPattern;
265
+
266
+ mlir::LogicalResult
267
+ matchAndRewrite (mlir::cir::Log10Op op, OpAdaptor adaptor,
268
+ mlir::ConversionPatternRewriter &rewriter) const override {
269
+ rewriter.replaceOpWithNewOp <mlir::math::Log10Op>(op, adaptor.getSrc ());
270
+ return mlir::LogicalResult::success ();
271
+ }
272
+ };
273
+
274
+ class CIRLogOpLowering : public mlir ::OpConversionPattern<mlir::cir::LogOp> {
275
+ public:
276
+ using mlir::OpConversionPattern<mlir::cir::LogOp>::OpConversionPattern;
277
+
278
+ mlir::LogicalResult
279
+ matchAndRewrite (mlir::cir::LogOp op, OpAdaptor adaptor,
280
+ mlir::ConversionPatternRewriter &rewriter) const override {
281
+ rewriter.replaceOpWithNewOp <mlir::math::LogOp>(op, adaptor.getSrc ());
282
+ return mlir::LogicalResult::success ();
283
+ }
284
+ };
285
+
286
+ class CIRLog2OpLowering : public mlir ::OpConversionPattern<mlir::cir::Log2Op> {
287
+ public:
288
+ using mlir::OpConversionPattern<mlir::cir::Log2Op>::OpConversionPattern;
289
+
290
+ mlir::LogicalResult
291
+ matchAndRewrite (mlir::cir::Log2Op op, OpAdaptor adaptor,
292
+ mlir::ConversionPatternRewriter &rewriter) const override {
293
+ rewriter.replaceOpWithNewOp <mlir::math::Log2Op>(op, adaptor.getSrc ());
294
+ return mlir::LogicalResult::success ();
295
+ }
296
+ };
297
+
298
+ class CIRRoundOpLowering
299
+ : public mlir::OpConversionPattern<mlir::cir::RoundOp> {
300
+ public:
301
+ using mlir::OpConversionPattern<mlir::cir::RoundOp>::OpConversionPattern;
302
+
303
+ mlir::LogicalResult
304
+ matchAndRewrite (mlir::cir::RoundOp op, OpAdaptor adaptor,
305
+ mlir::ConversionPatternRewriter &rewriter) const override {
306
+ rewriter.replaceOpWithNewOp <mlir::math::RoundOp>(op, adaptor.getSrc ());
307
+ return mlir::LogicalResult::success ();
308
+ }
309
+ };
310
+
311
+ class CIRExpOpLowering : public mlir ::OpConversionPattern<mlir::cir::ExpOp> {
312
+ public:
313
+ using mlir::OpConversionPattern<mlir::cir::ExpOp>::OpConversionPattern;
314
+
315
+ mlir::LogicalResult
316
+ matchAndRewrite (mlir::cir::ExpOp op, OpAdaptor adaptor,
317
+ mlir::ConversionPatternRewriter &rewriter) const override {
318
+ rewriter.replaceOpWithNewOp <mlir::math::ExpOp>(op, adaptor.getSrc ());
319
+ return mlir::LogicalResult::success ();
320
+ }
321
+ };
322
+
323
+ class CIRExp2OpLowering : public mlir ::OpConversionPattern<mlir::cir::Exp2Op> {
324
+ public:
325
+ using mlir::OpConversionPattern<mlir::cir::Exp2Op>::OpConversionPattern;
326
+
327
+ mlir::LogicalResult
328
+ matchAndRewrite (mlir::cir::Exp2Op op, OpAdaptor adaptor,
329
+ mlir::ConversionPatternRewriter &rewriter) const override {
330
+ rewriter.replaceOpWithNewOp <mlir::math::Exp2Op>(op, adaptor.getSrc ());
331
+ return mlir::LogicalResult::success ();
332
+ }
333
+ };
334
+
212
335
class CIRSinOpLowering : public mlir ::OpConversionPattern<mlir::cir::SinOp> {
213
336
public:
214
337
using mlir::OpConversionPattern<mlir::cir::SinOp>::OpConversionPattern;
@@ -1000,14 +1123,18 @@ void populateCIRToMLIRConversionPatterns(mlir::RewritePatternSet &patterns,
1000
1123
mlir::TypeConverter &converter) {
1001
1124
patterns.add <CIRReturnLowering, CIRBrOpLowering>(patterns.getContext ());
1002
1125
1003
- patterns.add <CIRCmpOpLowering, CIRCallOpLowering, CIRUnaryOpLowering,
1004
- CIRBinOpLowering, CIRLoadOpLowering, CIRConstantOpLowering,
1005
- CIRStoreOpLowering, CIRAllocaOpLowering, CIRFuncOpLowering,
1006
- CIRScopeOpLowering, CIRBrCondOpLowering, CIRTernaryOpLowering,
1007
- CIRYieldOpLowering, CIRCosOpLowering, CIRGlobalOpLowering,
1008
- CIRGetGlobalOpLowering, CIRCastOpLowering,
1009
- CIRPtrStrideOpLowering, CIRSinOpLowering>(converter,
1010
- patterns.getContext ());
1126
+ patterns
1127
+ .add <CIRCmpOpLowering, CIRCallOpLowering, CIRUnaryOpLowering,
1128
+ CIRBinOpLowering, CIRLoadOpLowering, CIRConstantOpLowering,
1129
+ CIRStoreOpLowering, CIRAllocaOpLowering, CIRFuncOpLowering,
1130
+ CIRScopeOpLowering, CIRBrCondOpLowering, CIRTernaryOpLowering,
1131
+ CIRYieldOpLowering, CIRCosOpLowering, CIRGlobalOpLowering,
1132
+ CIRGetGlobalOpLowering, CIRCastOpLowering, CIRPtrStrideOpLowering,
1133
+ CIRSqrtOpLowering, CIRCeilOpLowering, CIRExp2OpLowering,
1134
+ CIRExpOpLowering, CIRFAbsOpLowering, CIRFloorOpLowering,
1135
+ CIRLog10OpLowering, CIRLog2OpLowering, CIRLogOpLowering,
1136
+ CIRRoundOpLowering, CIRPtrStrideOpLowering, CIRSinOpLowering>(
1137
+ converter, patterns.getContext ());
1011
1138
}
1012
1139
1013
1140
static mlir::TypeConverter prepareTypeConverter () {
0 commit comments