Lines Matching refs:rewriter

19                          PatternRewriter &rewriter) {  in createConst()  argument
20 return rewriter.create<arith::ConstantOp>( in createConst()
21 loc, rewriter.getIntegerAttr(type, value)); in createConst()
31 PatternRewriter &rewriter) const final { in matchAndRewrite()
35 Value zero = createConst(loc, a.getType(), 0, rewriter); in matchAndRewrite()
37 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::eq, a, zero); in matchAndRewrite()
38 Value one = createConst(loc, a.getType(), 1, rewriter); in matchAndRewrite()
39 Value minusOne = rewriter.create<arith::SubIOp>(loc, a, one); in matchAndRewrite()
40 Value quotient = rewriter.create<arith::DivUIOp>(loc, minusOne, b); in matchAndRewrite()
41 Value plusOne = rewriter.create<arith::AddIOp>(loc, quotient, one); in matchAndRewrite()
42 rewriter.replaceOpWithNewOp<arith::SelectOp>(op, compare, zero, plusOne); in matchAndRewrite()
53 PatternRewriter &rewriter) const final { in matchAndRewrite()
58 Value plusOne = createConst(loc, type, 1, rewriter); in matchAndRewrite()
59 Value zero = createConst(loc, type, 0, rewriter); in matchAndRewrite()
60 Value minusOne = createConst(loc, type, -1, rewriter); in matchAndRewrite()
63 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::sgt, b, zero); in matchAndRewrite()
64 Value x = rewriter.create<arith::SelectOp>(loc, compare, minusOne, plusOne); in matchAndRewrite()
66 Value xPlusA = rewriter.create<arith::AddIOp>(loc, x, a); in matchAndRewrite()
67 Value xPlusADivB = rewriter.create<arith::DivSIOp>(loc, xPlusA, b); in matchAndRewrite()
68 Value posRes = rewriter.create<arith::AddIOp>(loc, plusOne, xPlusADivB); in matchAndRewrite()
70 Value minusA = rewriter.create<arith::SubIOp>(loc, zero, a); in matchAndRewrite()
71 Value minusADivB = rewriter.create<arith::DivSIOp>(loc, minusA, b); in matchAndRewrite()
72 Value negRes = rewriter.create<arith::SubIOp>(loc, zero, minusADivB); in matchAndRewrite()
81 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::slt, a, zero); in matchAndRewrite()
83 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::sgt, a, zero); in matchAndRewrite()
85 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::slt, b, zero); in matchAndRewrite()
87 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::sgt, b, zero); in matchAndRewrite()
88 Value firstTerm = rewriter.create<arith::AndIOp>(loc, aNeg, bNeg); in matchAndRewrite()
89 Value secondTerm = rewriter.create<arith::AndIOp>(loc, aPos, bPos); in matchAndRewrite()
91 rewriter.create<arith::OrIOp>(loc, firstTerm, secondTerm); in matchAndRewrite()
93 rewriter.replaceOpWithNewOp<arith::SelectOp>(op, compareRes, posRes, in matchAndRewrite()
105 PatternRewriter &rewriter) const final { in matchAndRewrite()
110 Value plusOne = createConst(loc, type, 1, rewriter); in matchAndRewrite()
111 Value zero = createConst(loc, type, 0, rewriter); in matchAndRewrite()
112 Value minusOne = createConst(loc, type, -1, rewriter); in matchAndRewrite()
115 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::slt, b, zero); in matchAndRewrite()
116 Value x = rewriter.create<arith::SelectOp>(loc, compare, plusOne, minusOne); in matchAndRewrite()
118 Value xMinusA = rewriter.create<arith::SubIOp>(loc, x, a); in matchAndRewrite()
119 Value xMinusADivB = rewriter.create<arith::DivSIOp>(loc, xMinusA, b); in matchAndRewrite()
120 Value negRes = rewriter.create<arith::SubIOp>(loc, minusOne, xMinusADivB); in matchAndRewrite()
122 Value posRes = rewriter.create<arith::DivSIOp>(loc, a, b); in matchAndRewrite()
131 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::slt, a, zero); in matchAndRewrite()
133 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::sgt, a, zero); in matchAndRewrite()
135 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::slt, b, zero); in matchAndRewrite()
137 rewriter.create<arith::CmpIOp>(loc, arith::CmpIPredicate::sgt, b, zero); in matchAndRewrite()
138 Value firstTerm = rewriter.create<arith::AndIOp>(loc, aNeg, bPos); in matchAndRewrite()
139 Value secondTerm = rewriter.create<arith::AndIOp>(loc, aPos, bNeg); in matchAndRewrite()
141 rewriter.create<arith::OrIOp>(loc, firstTerm, secondTerm); in matchAndRewrite()
143 rewriter.replaceOpWithNewOp<arith::SelectOp>(op, compareRes, negRes, in matchAndRewrite()
155 PatternRewriter &rewriter) const final { in matchAndRewrite()
164 Value cmp = rewriter.create<arith::CmpFOp>(loc, pred, lhs, rhs); in matchAndRewrite()
165 Value select = rewriter.create<arith::SelectOp>(loc, cmp, lhs, rhs); in matchAndRewrite()
168 Value isNaN = rewriter.create<arith::CmpFOp>(loc, arith::CmpFPredicate::UNO, in matchAndRewrite()
170 rewriter.replaceOpWithNewOp<arith::SelectOp>(op, isNaN, rhs, select); in matchAndRewrite()
180 PatternRewriter &rewriter) const final { in matchAndRewrite()
185 Value cmp = rewriter.create<arith::CmpIOp>(loc, pred, lhs, rhs); in matchAndRewrite()
186 rewriter.replaceOpWithNewOp<arith::SelectOp>(op, cmp, lhs, rhs); in matchAndRewrite()