SPV_AnyStruct:$result
);
+ let builders = [
+ OpBuilder<(ins "Value":$operand1, "Value":$operand2), [{
+ build($_builder, $_state,
+ ::mlir::spirv::StructType::get({operand1.getType(), operand1.getType()}),
+ operand1, operand2);
+ }]>
+ ];
+
let hasVerifier = 1;
}
SPV_AnyStruct:$result
);
+ let builders = [
+ OpBuilder<(ins "Value":$operand1, "Value":$operand2), [{
+ build($_builder, $_state,
+ ::mlir::spirv::StructType::get({operand1.getType(), operand1.getType()}),
+ operand1, operand2);
+ }]>
+ ];
+
let hasVerifier = 1;
}
AddICarryOpPattern::matchAndRewrite(arith::AddUICarryOp op, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter) const {
Type dstElemTy = adaptor.getLhs().getType();
- auto resultTy = spirv::StructType::get({dstElemTy, dstElemTy});
-
Location loc = op->getLoc();
Value result = rewriter.create<spirv::IAddCarryOp>(
- loc, resultTy, adaptor.getLhs(), adaptor.getRhs());
+ loc, adaptor.getLhs(), adaptor.getRhs());
Value sumResult = rewriter.create<spirv::CompositeExtractOp>(
loc, result, llvm::makeArrayRef(0));