[Mlir-commits] [mlir] [mlir][spirv][webgpu] Add lowering of IAddCarry to IAdd (PR #68495)
Jakub Kuderski
llvmlistbot at llvm.org
Tue Oct 10 23:11:27 PDT 2023
================
@@ -220,13 +178,26 @@ struct ExpandAddCarryPattern final : OpRewritePattern<IAddCarryOp> {
// Currently, WGSL only supports 32-bit integer types. Any other integer
// types should already have been promoted/demoted to i32.
- auto elemTy = cast<IntegerType>(getElementTypeOrSelf(lhs.getType()));
+ Type argTy = lhs.getType();
+ auto elemTy = cast<IntegerType>(getElementTypeOrSelf(argTy));
if (elemTy.getIntOrFloatBitWidth() != 32)
return rewriter.notifyMatchFailure(
loc,
llvm::formatv("Unexpected integer type for WebGPU: '{0}'", elemTy));
- Value add = lowerCarryAddition(op, rewriter, lhs, rhs);
+ Value one =
+ rewriter.create<ConstantOp>(loc, argTy, getScalarOrSplatAttr(argTy, 1));
+ Value zero =
+ rewriter.create<ConstantOp>(loc, argTy, getScalarOrSplatAttr(argTy, 0));
+
+ // Emulate 64-bit unsigned addition by allowing our addition to overflow,
----------------
kuhar wrote:
This doesn't emulate 64-bit addition, it performs addition and returns an extra carry result
https://github.com/llvm/llvm-project/pull/68495
More information about the Mlir-commits
mailing list