aboutsummaryrefslogtreecommitdiff
path: root/mlir/lib/Conversion/IndexToSPIRV/IndexToSPIRV.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mlir/lib/Conversion/IndexToSPIRV/IndexToSPIRV.cpp')
-rw-r--r--mlir/lib/Conversion/IndexToSPIRV/IndexToSPIRV.cpp85
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();
}