diff options
Diffstat (limited to 'mlir/lib/Conversion/IndexToSPIRV/IndexToSPIRV.cpp')
-rw-r--r-- | mlir/lib/Conversion/IndexToSPIRV/IndexToSPIRV.cpp | 85 |
1 files changed, 43 insertions, 42 deletions
diff --git a/mlir/lib/Conversion/IndexToSPIRV/IndexToSPIRV.cpp b/mlir/lib/Conversion/IndexToSPIRV/IndexToSPIRV.cpp index 4821962..36cfe9d 100644 --- a/mlir/lib/Conversion/IndexToSPIRV/IndexToSPIRV.cpp +++ b/mlir/lib/Conversion/IndexToSPIRV/IndexToSPIRV.cpp @@ -111,33 +111,33 @@ struct ConvertIndexCeilDivSPattern final : OpConversionPattern<CeilDivSOp> { Value m = adaptor.getRhs(); // Define the constants - Value zero = rewriter.create<spirv::ConstantOp>( - loc, n_type, IntegerAttr::get(n_type, 0)); - Value posOne = rewriter.create<spirv::ConstantOp>( - loc, n_type, IntegerAttr::get(n_type, 1)); - Value negOne = rewriter.create<spirv::ConstantOp>( - loc, n_type, IntegerAttr::get(n_type, -1)); + Value zero = spirv::ConstantOp::create(rewriter, loc, n_type, + IntegerAttr::get(n_type, 0)); + Value posOne = spirv::ConstantOp::create(rewriter, loc, n_type, + IntegerAttr::get(n_type, 1)); + Value negOne = spirv::ConstantOp::create(rewriter, loc, n_type, + IntegerAttr::get(n_type, -1)); // Compute `x`. - Value mPos = rewriter.create<spirv::SGreaterThanOp>(loc, m, zero); - Value x = rewriter.create<spirv::SelectOp>(loc, mPos, negOne, posOne); + Value mPos = spirv::SGreaterThanOp::create(rewriter, loc, m, zero); + Value x = spirv::SelectOp::create(rewriter, loc, mPos, negOne, posOne); // Compute the positive result. - Value nPlusX = rewriter.create<spirv::IAddOp>(loc, n, x); - Value nPlusXDivM = rewriter.create<spirv::SDivOp>(loc, nPlusX, m); - Value posRes = rewriter.create<spirv::IAddOp>(loc, nPlusXDivM, posOne); + Value nPlusX = spirv::IAddOp::create(rewriter, loc, n, x); + Value nPlusXDivM = spirv::SDivOp::create(rewriter, loc, nPlusX, m); + Value posRes = spirv::IAddOp::create(rewriter, loc, nPlusXDivM, posOne); // Compute the negative result. - Value negN = rewriter.create<spirv::ISubOp>(loc, zero, n); - Value negNDivM = rewriter.create<spirv::SDivOp>(loc, negN, m); - Value negRes = rewriter.create<spirv::ISubOp>(loc, zero, negNDivM); + Value negN = spirv::ISubOp::create(rewriter, loc, zero, n); + Value negNDivM = spirv::SDivOp::create(rewriter, loc, negN, m); + Value negRes = spirv::ISubOp::create(rewriter, loc, zero, negNDivM); // Pick the positive result if `n` and `m` have the same sign and `n` is // non-zero, i.e. `(n > 0) == (m > 0) && n != 0`. - Value nPos = rewriter.create<spirv::SGreaterThanOp>(loc, n, zero); - Value sameSign = rewriter.create<spirv::LogicalEqualOp>(loc, nPos, mPos); - Value nNonZero = rewriter.create<spirv::INotEqualOp>(loc, n, zero); - Value cmp = rewriter.create<spirv::LogicalAndOp>(loc, sameSign, nNonZero); + Value nPos = spirv::SGreaterThanOp::create(rewriter, loc, n, zero); + Value sameSign = spirv::LogicalEqualOp::create(rewriter, loc, nPos, mPos); + Value nNonZero = spirv::INotEqualOp::create(rewriter, loc, n, zero); + Value cmp = spirv::LogicalAndOp::create(rewriter, loc, sameSign, nNonZero); rewriter.replaceOpWithNewOp<spirv::SelectOp>(op, cmp, posRes, negRes); return success(); } @@ -161,18 +161,18 @@ struct ConvertIndexCeilDivUPattern final : OpConversionPattern<CeilDivUOp> { Value m = adaptor.getRhs(); // Define the constants - Value zero = rewriter.create<spirv::ConstantOp>( - loc, n_type, IntegerAttr::get(n_type, 0)); - Value one = rewriter.create<spirv::ConstantOp>(loc, n_type, - IntegerAttr::get(n_type, 1)); + Value zero = spirv::ConstantOp::create(rewriter, loc, n_type, + IntegerAttr::get(n_type, 0)); + Value one = spirv::ConstantOp::create(rewriter, loc, n_type, + IntegerAttr::get(n_type, 1)); // Compute the non-zero result. - Value minusOne = rewriter.create<spirv::ISubOp>(loc, n, one); - Value quotient = rewriter.create<spirv::UDivOp>(loc, minusOne, m); - Value plusOne = rewriter.create<spirv::IAddOp>(loc, quotient, one); + Value minusOne = spirv::ISubOp::create(rewriter, loc, n, one); + Value quotient = spirv::UDivOp::create(rewriter, loc, minusOne, m); + Value plusOne = spirv::IAddOp::create(rewriter, loc, quotient, one); // Pick the result - Value cmp = rewriter.create<spirv::IEqualOp>(loc, n, zero); + Value cmp = spirv::IEqualOp::create(rewriter, loc, n, zero); rewriter.replaceOpWithNewOp<spirv::SelectOp>(op, cmp, zero, plusOne); return success(); } @@ -197,32 +197,33 @@ struct ConvertIndexFloorDivSPattern final : OpConversionPattern<FloorDivSOp> { Value m = adaptor.getRhs(); // Define the constants - Value zero = rewriter.create<spirv::ConstantOp>( - loc, n_type, IntegerAttr::get(n_type, 0)); - Value posOne = rewriter.create<spirv::ConstantOp>( - loc, n_type, IntegerAttr::get(n_type, 1)); - Value negOne = rewriter.create<spirv::ConstantOp>( - loc, n_type, IntegerAttr::get(n_type, -1)); + Value zero = spirv::ConstantOp::create(rewriter, loc, n_type, + IntegerAttr::get(n_type, 0)); + Value posOne = spirv::ConstantOp::create(rewriter, loc, n_type, + IntegerAttr::get(n_type, 1)); + Value negOne = spirv::ConstantOp::create(rewriter, loc, n_type, + IntegerAttr::get(n_type, -1)); // Compute `x`. - Value mNeg = rewriter.create<spirv::SLessThanOp>(loc, m, zero); - Value x = rewriter.create<spirv::SelectOp>(loc, mNeg, posOne, negOne); + Value mNeg = spirv::SLessThanOp::create(rewriter, loc, m, zero); + Value x = spirv::SelectOp::create(rewriter, loc, mNeg, posOne, negOne); // Compute the negative result - Value xMinusN = rewriter.create<spirv::ISubOp>(loc, x, n); - Value xMinusNDivM = rewriter.create<spirv::SDivOp>(loc, xMinusN, m); - Value negRes = rewriter.create<spirv::ISubOp>(loc, negOne, xMinusNDivM); + Value xMinusN = spirv::ISubOp::create(rewriter, loc, x, n); + Value xMinusNDivM = spirv::SDivOp::create(rewriter, loc, xMinusN, m); + Value negRes = spirv::ISubOp::create(rewriter, loc, negOne, xMinusNDivM); // Compute the positive result. - Value posRes = rewriter.create<spirv::SDivOp>(loc, n, m); + Value posRes = spirv::SDivOp::create(rewriter, loc, n, m); // Pick the negative result if `n` and `m` have different signs and `n` is // non-zero, i.e. `(n < 0) != (m < 0) && n != 0`. - Value nNeg = rewriter.create<spirv::SLessThanOp>(loc, n, zero); - Value diffSign = rewriter.create<spirv::LogicalNotEqualOp>(loc, nNeg, mNeg); - Value nNonZero = rewriter.create<spirv::INotEqualOp>(loc, n, zero); + Value nNeg = spirv::SLessThanOp::create(rewriter, loc, n, zero); + Value diffSign = + spirv::LogicalNotEqualOp::create(rewriter, loc, nNeg, mNeg); + Value nNonZero = spirv::INotEqualOp::create(rewriter, loc, n, zero); - Value cmp = rewriter.create<spirv::LogicalAndOp>(loc, diffSign, nNonZero); + Value cmp = spirv::LogicalAndOp::create(rewriter, loc, diffSign, nNonZero); rewriter.replaceOpWithNewOp<spirv::SelectOp>(op, cmp, posRes, negRes); return success(); } |