Lines Matching refs:create
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()
62 Value rhsSquared = b.create<complex::MulOp>(type, rhs, rhs); in matchAndRewrite()
63 Value lhsSquared = b.create<complex::MulOp>(type, lhs, lhs); in matchAndRewrite()
65 b.create<complex::AddOp>(type, rhsSquared, lhsSquared); in matchAndRewrite()
67 b.create<complex::SqrtOp>(type, rhsSquaredPlusLhsSquared); in matchAndRewrite()
70 b.create<arith::ConstantOp>(elementType, b.getZeroAttr(elementType)); in matchAndRewrite()
71 Value one = b.create<arith::ConstantOp>(elementType, in matchAndRewrite()
73 Value i = b.create<complex::CreateOp>(type, zero, one); in matchAndRewrite()
74 Value iTimesLhs = b.create<complex::MulOp>(i, lhs); in matchAndRewrite()
75 Value rhsPlusILhs = b.create<complex::AddOp>(rhs, iTimesLhs); in matchAndRewrite()
78 b.create<complex::DivOp>(rhsPlusILhs, sqrtOfRhsSquaredPlusLhsSquared); in matchAndRewrite()
79 Value logResult = b.create<complex::LogOp>(divResult); in matchAndRewrite()
81 Value negativeOne = b.create<arith::ConstantOp>( in matchAndRewrite()
83 Value negativeI = b.create<complex::CreateOp>(type, zero, negativeOne); 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()
135 Value realLhs = b.create<complex::ReOp>(elementType, adaptor.getLhs()); in matchAndRewrite()
136 Value realRhs = b.create<complex::ReOp>(elementType, adaptor.getRhs()); in matchAndRewrite()
138 b.create<BinaryStandardOp>(elementType, realLhs, realRhs); in matchAndRewrite()
139 Value imagLhs = b.create<complex::ImOp>(elementType, adaptor.getLhs()); in matchAndRewrite()
140 Value imagRhs = b.create<complex::ImOp>(elementType, adaptor.getRhs()); in matchAndRewrite()
142 b.create<BinaryStandardOp>(elementType, imagLhs, imagRhs); 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()
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()
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()
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()
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()
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()
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()
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()
469 Value exp = b.create<complex::ExpOp>(adaptor.getComplex()); in matchAndRewrite()
471 Value real = b.create<complex::ReOp>(elementType, exp); in matchAndRewrite()
472 Value one = b.create<arith::ConstantOp>(elementType, in matchAndRewrite()
474 Value realMinusOne = b.create<arith::SubFOp>(real, one); in matchAndRewrite()
475 Value imag = b.create<complex::ImOp>(elementType, exp); in matchAndRewrite()
493 Value abs = b.create<complex::AbsOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
494 Value resultReal = b.create<math::LogOp>(elementType, abs); in matchAndRewrite()
495 Value real = b.create<complex::ReOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
496 Value imag = b.create<complex::ImOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
497 Value resultImag = b.create<math::Atan2Op>(elementType, imag, real); in matchAndRewrite()
514 Value real = b.create<complex::ReOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
515 Value imag = b.create<complex::ImOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
516 Value one = b.create<arith::ConstantOp>(elementType, in matchAndRewrite()
518 Value realPlusOne = b.create<arith::AddFOp>(real, one); in matchAndRewrite()
519 Value newComplex = b.create<complex::CreateOp>(type, realPlusOne, imag); in matchAndRewrite()
535 Value lhsReal = b.create<complex::ReOp>(elementType, adaptor.getLhs()); in matchAndRewrite()
536 Value lhsRealAbs = b.create<math::AbsOp>(lhsReal); in matchAndRewrite()
537 Value lhsImag = b.create<complex::ImOp>(elementType, adaptor.getLhs()); in matchAndRewrite()
538 Value lhsImagAbs = b.create<math::AbsOp>(lhsImag); in matchAndRewrite()
539 Value rhsReal = b.create<complex::ReOp>(elementType, adaptor.getRhs()); in matchAndRewrite()
540 Value rhsRealAbs = b.create<math::AbsOp>(rhsReal); in matchAndRewrite()
541 Value rhsImag = b.create<complex::ImOp>(elementType, adaptor.getRhs()); in matchAndRewrite()
542 Value rhsImagAbs = b.create<math::AbsOp>(rhsImag); in matchAndRewrite()
544 Value lhsRealTimesRhsReal = b.create<arith::MulFOp>(lhsReal, rhsReal); in matchAndRewrite()
545 Value lhsRealTimesRhsRealAbs = b.create<math::AbsOp>(lhsRealTimesRhsReal); in matchAndRewrite()
546 Value lhsImagTimesRhsImag = b.create<arith::MulFOp>(lhsImag, rhsImag); in matchAndRewrite()
547 Value lhsImagTimesRhsImagAbs = b.create<math::AbsOp>(lhsImagTimesRhsImag); in matchAndRewrite()
549 b.create<arith::SubFOp>(lhsRealTimesRhsReal, lhsImagTimesRhsImag); in matchAndRewrite()
551 Value lhsImagTimesRhsReal = b.create<arith::MulFOp>(lhsImag, rhsReal); in matchAndRewrite()
552 Value lhsImagTimesRhsRealAbs = b.create<math::AbsOp>(lhsImagTimesRhsReal); in matchAndRewrite()
553 Value lhsRealTimesRhsImag = b.create<arith::MulFOp>(lhsReal, rhsImag); in matchAndRewrite()
554 Value lhsRealTimesRhsImagAbs = b.create<math::AbsOp>(lhsRealTimesRhsImag); in matchAndRewrite()
556 b.create<arith::AddFOp>(lhsImagTimesRhsReal, lhsRealTimesRhsImag); in matchAndRewrite()
560 b.create<arith::CmpFOp>(arith::CmpFPredicate::UNO, real, real); in matchAndRewrite()
562 b.create<arith::CmpFOp>(arith::CmpFPredicate::UNO, imag, imag); in matchAndRewrite()
563 Value isNan = b.create<arith::AndIOp>(realIsNan, imagIsNan); in matchAndRewrite()
565 Value inf = b.create<arith::ConstantOp>( in matchAndRewrite()
572 b.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, lhsRealAbs, inf); in matchAndRewrite()
574 b.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, lhsImagAbs, inf); in matchAndRewrite()
575 Value lhsIsInf = b.create<arith::OrIOp>(lhsRealIsInf, lhsImagIsInf); in matchAndRewrite()
577 b.create<arith::CmpFOp>(arith::CmpFPredicate::UNO, rhsReal, rhsReal); in matchAndRewrite()
579 b.create<arith::CmpFOp>(arith::CmpFPredicate::UNO, rhsImag, rhsImag); in matchAndRewrite()
581 b.create<arith::ConstantOp>(elementType, b.getZeroAttr(elementType)); in matchAndRewrite()
582 Value one = b.create<arith::ConstantOp>(elementType, in matchAndRewrite()
585 b.create<arith::SelectOp>(lhsRealIsInf, one, zero); in matchAndRewrite()
586 lhsReal = b.create<arith::SelectOp>( in matchAndRewrite()
587 lhsIsInf, b.create<math::CopySignOp>(lhsRealIsInfFloat, lhsReal), in matchAndRewrite()
590 b.create<arith::SelectOp>(lhsImagIsInf, one, zero); in matchAndRewrite()
591 lhsImag = b.create<arith::SelectOp>( in matchAndRewrite()
592 lhsIsInf, b.create<math::CopySignOp>(lhsImagIsInfFloat, lhsImag), in matchAndRewrite()
595 b.create<arith::AndIOp>(lhsIsInf, rhsRealIsNan); in matchAndRewrite()
596 rhsReal = b.create<arith::SelectOp>( in matchAndRewrite()
597 lhsIsInfAndRhsRealIsNan, b.create<math::CopySignOp>(zero, rhsReal), in matchAndRewrite()
600 b.create<arith::AndIOp>(lhsIsInf, rhsImagIsNan); in matchAndRewrite()
601 rhsImag = b.create<arith::SelectOp>( in matchAndRewrite()
602 lhsIsInfAndRhsImagIsNan, b.create<math::CopySignOp>(zero, rhsImag), in matchAndRewrite()
607 b.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, rhsRealAbs, inf); in matchAndRewrite()
609 b.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, rhsImagAbs, inf); in matchAndRewrite()
610 Value rhsIsInf = b.create<arith::OrIOp>(rhsRealIsInf, rhsImagIsInf); in matchAndRewrite()
612 b.create<arith::CmpFOp>(arith::CmpFPredicate::UNO, lhsReal, lhsReal); in matchAndRewrite()
614 b.create<arith::CmpFOp>(arith::CmpFPredicate::UNO, lhsImag, lhsImag); in matchAndRewrite()
616 b.create<arith::SelectOp>(rhsRealIsInf, one, zero); in matchAndRewrite()
617 rhsReal = b.create<arith::SelectOp>( in matchAndRewrite()
618 rhsIsInf, b.create<math::CopySignOp>(rhsRealIsInfFloat, rhsReal), in matchAndRewrite()
621 b.create<arith::SelectOp>(rhsImagIsInf, one, zero); in matchAndRewrite()
622 rhsImag = b.create<arith::SelectOp>( in matchAndRewrite()
623 rhsIsInf, b.create<math::CopySignOp>(rhsImagIsInfFloat, rhsImag), in matchAndRewrite()
626 b.create<arith::AndIOp>(rhsIsInf, lhsRealIsNan); in matchAndRewrite()
627 lhsReal = b.create<arith::SelectOp>( in matchAndRewrite()
628 rhsIsInfAndLhsRealIsNan, b.create<math::CopySignOp>(zero, lhsReal), in matchAndRewrite()
631 b.create<arith::AndIOp>(rhsIsInf, lhsImagIsNan); in matchAndRewrite()
632 lhsImag = b.create<arith::SelectOp>( in matchAndRewrite()
633 rhsIsInfAndLhsImagIsNan, b.create<math::CopySignOp>(zero, lhsImag), in matchAndRewrite()
635 Value recalc = b.create<arith::OrIOp>(lhsIsInf, rhsIsInf); in matchAndRewrite()
639 Value lhsRealTimesRhsRealIsInf = b.create<arith::CmpFOp>( in matchAndRewrite()
641 Value lhsImagTimesRhsImagIsInf = b.create<arith::CmpFOp>( in matchAndRewrite()
643 Value isSpecialCase = b.create<arith::OrIOp>(lhsRealTimesRhsRealIsInf, in matchAndRewrite()
645 Value lhsRealTimesRhsImagIsInf = b.create<arith::CmpFOp>( in matchAndRewrite()
648 b.create<arith::OrIOp>(isSpecialCase, lhsRealTimesRhsImagIsInf); in matchAndRewrite()
649 Value lhsImagTimesRhsRealIsInf = b.create<arith::CmpFOp>( in matchAndRewrite()
652 b.create<arith::OrIOp>(isSpecialCase, lhsImagTimesRhsRealIsInf); in matchAndRewrite()
654 Value notRecalc = b.create<arith::XOrIOp>( in matchAndRewrite()
656 b.create<arith::ConstantOp>(i1Type, b.getIntegerAttr(i1Type, 1))); in matchAndRewrite()
657 isSpecialCase = b.create<arith::AndIOp>(isSpecialCase, notRecalc); in matchAndRewrite()
659 b.create<arith::AndIOp>(isSpecialCase, lhsRealIsNan); in matchAndRewrite()
660 lhsReal = b.create<arith::SelectOp>( in matchAndRewrite()
661 isSpecialCaseAndLhsRealIsNan, b.create<math::CopySignOp>(zero, lhsReal), in matchAndRewrite()
664 b.create<arith::AndIOp>(isSpecialCase, lhsImagIsNan); in matchAndRewrite()
665 lhsImag = b.create<arith::SelectOp>( in matchAndRewrite()
666 isSpecialCaseAndLhsImagIsNan, b.create<math::CopySignOp>(zero, lhsImag), in matchAndRewrite()
669 b.create<arith::AndIOp>(isSpecialCase, rhsRealIsNan); in matchAndRewrite()
670 rhsReal = b.create<arith::SelectOp>( in matchAndRewrite()
671 isSpecialCaseAndRhsRealIsNan, b.create<math::CopySignOp>(zero, rhsReal), in matchAndRewrite()
674 b.create<arith::AndIOp>(isSpecialCase, rhsImagIsNan); in matchAndRewrite()
675 rhsImag = b.create<arith::SelectOp>( in matchAndRewrite()
676 isSpecialCaseAndRhsImagIsNan, b.create<math::CopySignOp>(zero, rhsImag), in matchAndRewrite()
678 recalc = b.create<arith::OrIOp>(recalc, isSpecialCase); in matchAndRewrite()
679 recalc = b.create<arith::AndIOp>(isNan, recalc); in matchAndRewrite()
682 lhsRealTimesRhsReal = b.create<arith::MulFOp>(lhsReal, rhsReal); in matchAndRewrite()
683 lhsImagTimesRhsImag = b.create<arith::MulFOp>(lhsImag, rhsImag); in matchAndRewrite()
685 b.create<arith::SubFOp>(lhsRealTimesRhsReal, lhsImagTimesRhsImag); in matchAndRewrite()
686 real = b.create<arith::SelectOp>( in matchAndRewrite()
687 recalc, b.create<arith::MulFOp>(inf, newReal), real); in matchAndRewrite()
690 lhsImagTimesRhsReal = b.create<arith::MulFOp>(lhsImag, rhsReal); in matchAndRewrite()
691 lhsRealTimesRhsImag = b.create<arith::MulFOp>(lhsReal, rhsImag); in matchAndRewrite()
693 b.create<arith::AddFOp>(lhsImagTimesRhsReal, lhsRealTimesRhsImag); in matchAndRewrite()
694 imag = b.create<arith::SelectOp>( in matchAndRewrite()
695 recalc, b.create<arith::MulFOp>(inf, newImag), imag); 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()
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()
760 b.create<arith::ConstantOp>(elementType, b.getZeroAttr(elementType)); in matchAndRewrite()
762 Value real = b.create<complex::ReOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
763 Value imag = b.create<complex::ImOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
765 Value absLhs = b.create<math::AbsOp>(real); in matchAndRewrite()
766 Value absArg = b.create<complex::AbsOp>(elementType, arg); in matchAndRewrite()
767 Value addAbs = b.create<arith::AddFOp>(absLhs, absArg); in matchAndRewrite()
769 Value half = b.create<arith::ConstantOp>(elementType, in matchAndRewrite()
771 Value halfAddAbs = b.create<arith::MulFOp>(addAbs, half); in matchAndRewrite()
772 Value sqrtAddAbs = b.create<math::SqrtOp>(halfAddAbs); in matchAndRewrite()
775 b.create<arith::CmpFOp>(arith::CmpFPredicate::OLT, real, zero); in matchAndRewrite()
777 b.create<arith::CmpFOp>(arith::CmpFPredicate::OLT, imag, zero); in matchAndRewrite()
781 Value imagDivTwoResultReal = b.create<arith::DivFOp>( in matchAndRewrite()
782 imag, b.create<arith::AddFOp>(resultReal, resultReal)); in matchAndRewrite()
784 Value negativeResultReal = b.create<arith::NegFOp>(resultReal); in matchAndRewrite()
786 Value resultImag = b.create<arith::SelectOp>( in matchAndRewrite()
788 b.create<arith::SelectOp>(imagIsNegative, negativeResultReal, in matchAndRewrite()
792 resultReal = b.create<arith::SelectOp>( in matchAndRewrite()
794 b.create<arith::DivFOp>( in matchAndRewrite()
795 imag, b.create<arith::AddFOp>(resultImag, resultImag)), in matchAndRewrite()
799 b.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, real, zero); in matchAndRewrite()
801 b.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, imag, zero); in matchAndRewrite()
802 Value argIsZero = b.create<arith::AndIOp>(realIsZero, imagIsZero); in matchAndRewrite()
804 resultReal = b.create<arith::SelectOp>(argIsZero, zero, resultReal); in matchAndRewrite()
805 resultImag = b.create<arith::SelectOp>(argIsZero, zero, resultImag); in matchAndRewrite()
823 Value real = b.create<complex::ReOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
824 Value imag = b.create<complex::ImOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
826 b.create<arith::ConstantOp>(elementType, b.getZeroAttr(elementType)); in matchAndRewrite()
828 b.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, real, zero); in matchAndRewrite()
830 b.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, imag, zero); in matchAndRewrite()
831 Value isZero = b.create<arith::AndIOp>(realIsZero, imagIsZero); in matchAndRewrite()
832 auto abs = b.create<complex::AbsOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
833 Value realSign = b.create<arith::DivFOp>(real, abs); in matchAndRewrite()
834 Value imagSign = b.create<arith::DivFOp>(imag, abs); in matchAndRewrite()
835 Value sign = b.create<complex::CreateOp>(type, realSign, imagSign); 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()
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()
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()
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()
918 Value aaPbb = builder.create<arith::AddFOp>( in powOpConversionImpl()
919 builder.create<arith::MulFOp>(a, a), builder.create<arith::MulFOp>(b, b)); in powOpConversionImpl()
920 Value half = builder.create<arith::ConstantOp>( in powOpConversionImpl()
922 Value halfC = builder.create<arith::MulFOp>(half, c); in powOpConversionImpl()
923 Value aaPbbTohalfC = builder.create<math::PowFOp>(aaPbb, halfC); in powOpConversionImpl()
926 Value negD = builder.create<arith::NegFOp>(d); in powOpConversionImpl()
927 Value argX = builder.create<math::Atan2Op>(b, a); in powOpConversionImpl()
928 Value negDArgX = builder.create<arith::MulFOp>(negD, argX); in powOpConversionImpl()
929 Value eToNegDArgX = builder.create<math::ExpOp>(negDArgX); in powOpConversionImpl()
932 Value coeff = builder.create<arith::MulFOp>(aaPbbTohalfC, eToNegDArgX); in powOpConversionImpl()
935 Value lnAaPbb = builder.create<math::LogOp>(aaPbb); in powOpConversionImpl()
936 Value halfD = builder.create<arith::MulFOp>(half, d); in powOpConversionImpl()
937 Value q = builder.create<arith::AddFOp>( in powOpConversionImpl()
938 builder.create<arith::MulFOp>(c, argX), in powOpConversionImpl()
939 builder.create<arith::MulFOp>(halfD, lnAaPbb)); in powOpConversionImpl()
941 Value cosQ = builder.create<math::CosOp>(q); in powOpConversionImpl()
942 Value sinQ = builder.create<math::SinOp>(q); in powOpConversionImpl()
943 Value zero = builder.create<arith::ConstantOp>( in powOpConversionImpl()
945 Value one = builder.create<arith::ConstantOp>( in powOpConversionImpl()
949 builder.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, aaPbb, zero); in powOpConversionImpl()
950 Value yGeZero = builder.create<arith::AndIOp>( in powOpConversionImpl()
951 builder.create<arith::CmpFOp>(arith::CmpFPredicate::OGE, c, zero), in powOpConversionImpl()
952 builder.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, d, zero)); in powOpConversionImpl()
954 builder.create<arith::CmpFOp>(arith::CmpFPredicate::OEQ, c, zero); in powOpConversionImpl()
955 Value complexZero = builder.create<complex::CreateOp>(type, zero, zero); in powOpConversionImpl()
956 Value complexOne = builder.create<complex::CreateOp>(type, one, zero); in powOpConversionImpl()
957 Value complexOther = builder.create<complex::CreateOp>( in powOpConversionImpl()
958 type, builder.create<arith::MulFOp>(coeff, cosQ), in powOpConversionImpl()
959 builder.create<arith::MulFOp>(coeff, sinQ)); in powOpConversionImpl()
964 return builder.create<arith::SelectOp>( in powOpConversionImpl()
965 builder.create<arith::AndIOp>(xEqZero, yGeZero), in powOpConversionImpl()
966 builder.create<arith::SelectOp>(cEqZero, complexOne, complexZero), in powOpConversionImpl()
980 Value a = builder.create<complex::ReOp>(elementType, adaptor.getLhs()); in matchAndRewrite()
981 Value b = builder.create<complex::ImOp>(elementType, adaptor.getLhs()); in matchAndRewrite()
982 Value c = builder.create<complex::ReOp>(elementType, adaptor.getRhs()); in matchAndRewrite()
983 Value d = builder.create<complex::ImOp>(elementType, adaptor.getRhs()); in matchAndRewrite()
1000 Value a = builder.create<complex::ReOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
1001 Value b = builder.create<complex::ImOp>(elementType, adaptor.getComplex()); in matchAndRewrite()
1002 Value c = builder.create<arith::ConstantOp>( in matchAndRewrite()
1004 Value d = builder.create<arith::ConstantOp>( in matchAndRewrite()
1022 rewriter.create<complex::ReOp>(loc, type, adaptor.getComplex()); in matchAndRewrite()
1024 rewriter.create<complex::ImOp>(loc, type, adaptor.getComplex()); in matchAndRewrite()