Lines Matching refs:rewriter

30                   ConversionPatternRewriter &rewriter) const override {  in matchAndRewrite()
35 rewriter.create<complex::ReOp>(loc, type, adaptor.getComplex()); in matchAndRewrite()
37 rewriter.create<complex::ImOp>(loc, type, adaptor.getComplex()); in matchAndRewrite()
38 Value realSqr = rewriter.create<arith::MulFOp>(loc, real, real); in matchAndRewrite()
39 Value imagSqr = rewriter.create<arith::MulFOp>(loc, imag, imag); in matchAndRewrite()
40 Value sqNorm = rewriter.create<arith::AddFOp>(loc, realSqr, imagSqr); in matchAndRewrite()
42 rewriter.replaceOpWithNewOp<math::SqrtOp>(op, sqNorm); in matchAndRewrite()
53 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
54 mlir::ImplicitLocOpBuilder b(op.getLoc(), rewriter); in matchAndRewrite()
85 rewriter.replaceOpWithNewOp<complex::MulOp>(op, negativeI, logResult); in matchAndRewrite()
99 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
106 Value realLhs = rewriter.create<complex::ReOp>(loc, type, adaptor.getLhs()); in matchAndRewrite()
107 Value imagLhs = rewriter.create<complex::ImOp>(loc, type, adaptor.getLhs()); in matchAndRewrite()
108 Value realRhs = rewriter.create<complex::ReOp>(loc, type, adaptor.getRhs()); in matchAndRewrite()
109 Value imagRhs = rewriter.create<complex::ImOp>(loc, type, adaptor.getRhs()); in matchAndRewrite()
111 rewriter.create<arith::CmpFOp>(loc, p, realLhs, realRhs); in matchAndRewrite()
113 rewriter.create<arith::CmpFOp>(loc, p, imagLhs, imagRhs); in matchAndRewrite()
115 rewriter.replaceOpWithNewOp<ResultCombiner>(op, realComparison, in matchAndRewrite()
130 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
133 mlir::ImplicitLocOpBuilder b(op.getLoc(), rewriter); in matchAndRewrite()
143 rewriter.replaceOpWithNewOp<complex::CreateOp>(op, type, resultReal, in matchAndRewrite()
157 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
163 rewriter.create<complex::ReOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
165 rewriter.create<complex::ImOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
170 Value half = rewriter.create<arith::ConstantOp>( in matchAndRewrite()
171 loc, elementType, rewriter.getFloatAttr(elementType, 0.5)); in matchAndRewrite()
172 Value exp = rewriter.create<math::ExpOp>(loc, imag); in matchAndRewrite()
173 Value scaledExp = rewriter.create<arith::MulFOp>(loc, half, exp); in matchAndRewrite()
174 Value reciprocalExp = rewriter.create<arith::DivFOp>(loc, half, exp); in matchAndRewrite()
175 Value sin = rewriter.create<math::SinOp>(loc, real); in matchAndRewrite()
176 Value cos = rewriter.create<math::CosOp>(loc, real); in matchAndRewrite()
179 combine(loc, scaledExp, reciprocalExp, sin, cos, rewriter); in matchAndRewrite()
181 rewriter.replaceOpWithNewOp<complex::CreateOp>(op, type, resultPair.first, in matchAndRewrite()
188 Value cos, ConversionPatternRewriter &rewriter) const = 0;
196 Value cos, ConversionPatternRewriter &rewriter) const override { in combine()
206 Value sum = rewriter.create<arith::AddFOp>(loc, reciprocalExp, scaledExp); in combine()
207 Value resultReal = rewriter.create<arith::MulFOp>(loc, sum, cos); in combine()
208 Value diff = rewriter.create<arith::SubFOp>(loc, reciprocalExp, scaledExp); in combine()
209 Value resultImag = rewriter.create<arith::MulFOp>(loc, diff, sin); in combine()
219 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
225 rewriter.create<complex::ReOp>(loc, elementType, adaptor.getLhs()); in matchAndRewrite()
227 rewriter.create<complex::ImOp>(loc, elementType, adaptor.getLhs()); in matchAndRewrite()
229 rewriter.create<complex::ReOp>(loc, elementType, adaptor.getRhs()); in matchAndRewrite()
231 rewriter.create<complex::ImOp>(loc, elementType, adaptor.getRhs()); in matchAndRewrite()
256 rewriter.create<arith::DivFOp>(loc, rhsReal, rhsImag); in matchAndRewrite()
257 Value rhsRealImagDenom = rewriter.create<arith::AddFOp>( in matchAndRewrite()
259 rewriter.create<arith::MulFOp>(loc, rhsRealImagRatio, rhsReal)); in matchAndRewrite()
260 Value realNumerator1 = rewriter.create<arith::AddFOp>( in matchAndRewrite()
261 loc, rewriter.create<arith::MulFOp>(loc, lhsReal, rhsRealImagRatio), in matchAndRewrite()
264 rewriter.create<arith::DivFOp>(loc, realNumerator1, rhsRealImagDenom); in matchAndRewrite()
265 Value imagNumerator1 = rewriter.create<arith::SubFOp>( in matchAndRewrite()
266 loc, rewriter.create<arith::MulFOp>(loc, lhsImag, rhsRealImagRatio), in matchAndRewrite()
269 rewriter.create<arith::DivFOp>(loc, imagNumerator1, rhsRealImagDenom); in matchAndRewrite()
272 rewriter.create<arith::DivFOp>(loc, rhsImag, rhsReal); in matchAndRewrite()
273 Value rhsImagRealDenom = rewriter.create<arith::AddFOp>( in matchAndRewrite()
275 rewriter.create<arith::MulFOp>(loc, rhsImagRealRatio, rhsImag)); in matchAndRewrite()
276 Value realNumerator2 = rewriter.create<arith::AddFOp>( in matchAndRewrite()
278 rewriter.create<arith::MulFOp>(loc, lhsImag, rhsImagRealRatio)); in matchAndRewrite()
280 rewriter.create<arith::DivFOp>(loc, realNumerator2, rhsImagRealDenom); in matchAndRewrite()
281 Value imagNumerator2 = rewriter.create<arith::SubFOp>( in matchAndRewrite()
283 rewriter.create<arith::MulFOp>(loc, lhsReal, rhsImagRealRatio)); in matchAndRewrite()
285 rewriter.create<arith::DivFOp>(loc, imagNumerator2, rhsImagRealDenom); in matchAndRewrite()
289 Value zero = rewriter.create<arith::ConstantOp>( in matchAndRewrite()
290 loc, elementType, rewriter.getZeroAttr(elementType)); in matchAndRewrite()
291 Value rhsRealAbs = rewriter.create<math::AbsOp>(loc, rhsReal); in matchAndRewrite()
292 Value rhsRealIsZero = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
294 Value rhsImagAbs = rewriter.create<math::AbsOp>(loc, rhsImag); in matchAndRewrite()
295 Value rhsImagIsZero = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
297 Value lhsRealIsNotNaN = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
299 Value lhsImagIsNotNaN = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
302 rewriter.create<arith::OrIOp>(loc, lhsRealIsNotNaN, lhsImagIsNotNaN); in matchAndRewrite()
303 Value resultIsInfinity = rewriter.create<arith::AndIOp>( in matchAndRewrite()
305 rewriter.create<arith::AndIOp>(loc, rhsRealIsZero, rhsImagIsZero)); in matchAndRewrite()
306 Value inf = rewriter.create<arith::ConstantOp>( in matchAndRewrite()
308 rewriter.getFloatAttr( in matchAndRewrite()
311 rewriter.create<math::CopySignOp>(loc, inf, rhsReal); in matchAndRewrite()
313 rewriter.create<arith::MulFOp>(loc, infWithSignOfRhsReal, lhsReal); in matchAndRewrite()
315 rewriter.create<arith::MulFOp>(loc, infWithSignOfRhsReal, lhsImag); in matchAndRewrite()
318 Value rhsRealFinite = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
320 Value rhsImagFinite = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
323 rewriter.create<arith::AndIOp>(loc, rhsRealFinite, rhsImagFinite); in matchAndRewrite()
324 Value lhsRealAbs = rewriter.create<math::AbsOp>(loc, lhsReal); in matchAndRewrite()
325 Value lhsRealInfinite = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
327 Value lhsImagAbs = rewriter.create<math::AbsOp>(loc, lhsImag); in matchAndRewrite()
328 Value lhsImagInfinite = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
331 rewriter.create<arith::OrIOp>(loc, lhsRealInfinite, lhsImagInfinite); in matchAndRewrite()
333 rewriter.create<arith::AndIOp>(loc, lhsInfinite, rhsFinite); in matchAndRewrite()
334 Value one = rewriter.create<arith::ConstantOp>( in matchAndRewrite()
335 loc, elementType, rewriter.getFloatAttr(elementType, 1)); in matchAndRewrite()
336 Value lhsRealIsInfWithSign = rewriter.create<math::CopySignOp>( in matchAndRewrite()
337 loc, rewriter.create<arith::SelectOp>(loc, lhsRealInfinite, one, zero), in matchAndRewrite()
339 Value lhsImagIsInfWithSign = rewriter.create<math::CopySignOp>( in matchAndRewrite()
340 loc, rewriter.create<arith::SelectOp>(loc, lhsImagInfinite, one, zero), in matchAndRewrite()
343 rewriter.create<arith::MulFOp>(loc, lhsRealIsInfWithSign, rhsReal); in matchAndRewrite()
345 rewriter.create<arith::MulFOp>(loc, lhsImagIsInfWithSign, rhsImag); in matchAndRewrite()
346 Value resultReal3 = rewriter.create<arith::MulFOp>( in matchAndRewrite()
348 rewriter.create<arith::AddFOp>(loc, lhsRealIsInfWithSignTimesRhsReal, in matchAndRewrite()
351 rewriter.create<arith::MulFOp>(loc, lhsRealIsInfWithSign, rhsImag); in matchAndRewrite()
353 rewriter.create<arith::MulFOp>(loc, lhsImagIsInfWithSign, rhsReal); in matchAndRewrite()
354 Value resultImag3 = rewriter.create<arith::MulFOp>( in matchAndRewrite()
356 rewriter.create<arith::SubFOp>(loc, lhsImagIsInfWithSignTimesRhsReal, in matchAndRewrite()
360 Value lhsRealFinite = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
362 Value lhsImagFinite = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
365 rewriter.create<arith::AndIOp>(loc, lhsRealFinite, lhsImagFinite); in matchAndRewrite()
366 Value rhsRealInfinite = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
368 Value rhsImagInfinite = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
371 rewriter.create<arith::OrIOp>(loc, rhsRealInfinite, rhsImagInfinite); in matchAndRewrite()
373 rewriter.create<arith::AndIOp>(loc, lhsFinite, rhsInfinite); in matchAndRewrite()
374 Value rhsRealIsInfWithSign = rewriter.create<math::CopySignOp>( in matchAndRewrite()
375 loc, rewriter.create<arith::SelectOp>(loc, rhsRealInfinite, one, zero), in matchAndRewrite()
377 Value rhsImagIsInfWithSign = rewriter.create<math::CopySignOp>( in matchAndRewrite()
378 loc, rewriter.create<arith::SelectOp>(loc, rhsImagInfinite, one, zero), in matchAndRewrite()
381 rewriter.create<arith::MulFOp>(loc, lhsReal, rhsRealIsInfWithSign); in matchAndRewrite()
383 rewriter.create<arith::MulFOp>(loc, lhsImag, rhsImagIsInfWithSign); in matchAndRewrite()
384 Value resultReal4 = rewriter.create<arith::MulFOp>( in matchAndRewrite()
386 rewriter.create<arith::AddFOp>(loc, rhsRealIsInfWithSignTimesLhsReal, in matchAndRewrite()
389 rewriter.create<arith::MulFOp>(loc, lhsImag, rhsRealIsInfWithSign); in matchAndRewrite()
391 rewriter.create<arith::MulFOp>(loc, lhsReal, rhsImagIsInfWithSign); in matchAndRewrite()
392 Value resultImag4 = rewriter.create<arith::MulFOp>( in matchAndRewrite()
394 rewriter.create<arith::SubFOp>(loc, rhsRealIsInfWithSignTimesLhsImag, in matchAndRewrite()
397 Value realAbsSmallerThanImagAbs = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
399 Value resultReal = rewriter.create<arith::SelectOp>( in matchAndRewrite()
401 Value resultImag = rewriter.create<arith::SelectOp>( in matchAndRewrite()
403 Value resultRealSpecialCase3 = rewriter.create<arith::SelectOp>( in matchAndRewrite()
405 Value resultImagSpecialCase3 = rewriter.create<arith::SelectOp>( in matchAndRewrite()
407 Value resultRealSpecialCase2 = rewriter.create<arith::SelectOp>( in matchAndRewrite()
409 Value resultImagSpecialCase2 = rewriter.create<arith::SelectOp>( in matchAndRewrite()
411 Value resultRealSpecialCase1 = rewriter.create<arith::SelectOp>( in matchAndRewrite()
413 Value resultImagSpecialCase1 = rewriter.create<arith::SelectOp>( in matchAndRewrite()
416 Value resultRealIsNaN = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
418 Value resultImagIsNaN = rewriter.create<arith::CmpFOp>( in matchAndRewrite()
421 rewriter.create<arith::AndIOp>(loc, resultRealIsNaN, resultImagIsNaN); in matchAndRewrite()
422 Value resultRealWithSpecialCases = rewriter.create<arith::SelectOp>( in matchAndRewrite()
424 Value resultImagWithSpecialCases = rewriter.create<arith::SelectOp>( in matchAndRewrite()
427 rewriter.replaceOpWithNewOp<complex::CreateOp>( in matchAndRewrite()
438 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
444 rewriter.create<complex::ReOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
446 rewriter.create<complex::ImOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
447 Value expReal = rewriter.create<math::ExpOp>(loc, real); in matchAndRewrite()
448 Value cosImag = rewriter.create<math::CosOp>(loc, imag); in matchAndRewrite()
449 Value resultReal = rewriter.create<arith::MulFOp>(loc, expReal, cosImag); in matchAndRewrite()
450 Value sinImag = rewriter.create<math::SinOp>(loc, imag); in matchAndRewrite()
451 Value resultImag = rewriter.create<arith::MulFOp>(loc, expReal, sinImag); in matchAndRewrite()
453 rewriter.replaceOpWithNewOp<complex::CreateOp>(op, type, resultReal, in matchAndRewrite()
464 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
468 mlir::ImplicitLocOpBuilder b(op.getLoc(), rewriter); in matchAndRewrite()
477 rewriter.replaceOpWithNewOp<complex::CreateOp>(op, type, realMinusOne, in matchAndRewrite()
488 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
491 mlir::ImplicitLocOpBuilder b(op.getLoc(), rewriter); in matchAndRewrite()
498 rewriter.replaceOpWithNewOp<complex::CreateOp>(op, type, resultReal, in matchAndRewrite()
509 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
512 mlir::ImplicitLocOpBuilder b(op.getLoc(), rewriter); in matchAndRewrite()
520 rewriter.replaceOpWithNewOp<complex::LogOp>(op, type, newComplex); in matchAndRewrite()
530 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
531 mlir::ImplicitLocOpBuilder b(op.getLoc(), rewriter); in matchAndRewrite()
697 rewriter.replaceOpWithNewOp<complex::CreateOp>(op, type, real, imag); in matchAndRewrite()
707 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
713 rewriter.create<complex::ReOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
715 rewriter.create<complex::ImOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
716 Value negReal = rewriter.create<arith::NegFOp>(loc, real); in matchAndRewrite()
717 Value negImag = rewriter.create<arith::NegFOp>(loc, imag); in matchAndRewrite()
718 rewriter.replaceOpWithNewOp<complex::CreateOp>(op, type, negReal, negImag); in matchAndRewrite()
728 Value cos, ConversionPatternRewriter &rewriter) const override { in combine()
738 Value sum = rewriter.create<arith::AddFOp>(loc, scaledExp, reciprocalExp); in combine()
739 Value resultReal = rewriter.create<arith::MulFOp>(loc, sum, sin); in combine()
740 Value diff = rewriter.create<arith::SubFOp>(loc, scaledExp, reciprocalExp); in combine()
741 Value resultImag = rewriter.create<arith::MulFOp>(loc, diff, cos); in combine()
752 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
753 mlir::ImplicitLocOpBuilder b(op.getLoc(), rewriter); in matchAndRewrite()
807 rewriter.replaceOpWithNewOp<complex::CreateOp>(op, type, resultReal, in matchAndRewrite()
818 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
821 mlir::ImplicitLocOpBuilder b(op.getLoc(), rewriter); in matchAndRewrite()
836 rewriter.replaceOpWithNewOp<arith::SelectOp>(op, isZero, in matchAndRewrite()
847 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
849 Value cos = rewriter.create<complex::CosOp>(loc, adaptor.getComplex()); in matchAndRewrite()
850 Value sin = rewriter.create<complex::SinOp>(loc, adaptor.getComplex()); in matchAndRewrite()
851 rewriter.replaceOpWithNewOp<complex::DivOp>(op, sin, cos); in matchAndRewrite()
861 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
870 rewriter.create<complex::ReOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
872 rewriter.create<complex::ImOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
873 Value tanhA = rewriter.create<math::TanhOp>(loc, real); in matchAndRewrite()
874 Value cosB = rewriter.create<math::CosOp>(loc, imag); in matchAndRewrite()
875 Value sinB = rewriter.create<math::SinOp>(loc, imag); in matchAndRewrite()
876 Value tanB = rewriter.create<arith::DivFOp>(loc, sinB, cosB); in matchAndRewrite()
878 rewriter.create<complex::CreateOp>(loc, type, tanhA, tanB); in matchAndRewrite()
879 Value one = rewriter.create<arith::ConstantOp>( in matchAndRewrite()
880 loc, elementType, rewriter.getFloatAttr(elementType, 1)); in matchAndRewrite()
881 Value mul = rewriter.create<arith::MulFOp>(loc, tanhA, tanB); in matchAndRewrite()
882 Value denominator = rewriter.create<complex::CreateOp>(loc, type, one, mul); in matchAndRewrite()
883 rewriter.replaceOpWithNewOp<complex::DivOp>(op, numerator, denominator); in matchAndRewrite()
893 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
898 rewriter.create<complex::ReOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
900 rewriter.create<complex::ImOp>(loc, elementType, adaptor.getComplex()); in matchAndRewrite()
901 Value negImag = rewriter.create<arith::NegFOp>(loc, elementType, imag); in matchAndRewrite()
903 rewriter.replaceOpWithNewOp<complex::CreateOp>(op, type, real, negImag); in matchAndRewrite()
975 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
976 mlir::ImplicitLocOpBuilder builder(op.getLoc(), rewriter); in matchAndRewrite()
985 rewriter.replaceOp(op, {powOpConversionImpl(builder, type, a, b, c, d)}); in matchAndRewrite()
995 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
996 mlir::ImplicitLocOpBuilder builder(op.getLoc(), rewriter); in matchAndRewrite()
1007 rewriter.replaceOp(op, {powOpConversionImpl(builder, type, a, b, c, d)}); in matchAndRewrite()
1017 ConversionPatternRewriter &rewriter) const override { in matchAndRewrite()
1022 rewriter.create<complex::ReOp>(loc, type, adaptor.getComplex()); in matchAndRewrite()
1024 rewriter.create<complex::ImOp>(loc, type, adaptor.getComplex()); in matchAndRewrite()
1026 rewriter.replaceOpWithNewOp<math::Atan2Op>(op, imag, real); in matchAndRewrite()