@@ -573,53 +573,6 @@ void mlir::arith::registerConvertArithToLLVMInterface(
573573 });
574574}
575575
576- struct FancyAddFLowering : public ConvertOpToLLVMPattern <arith::AddFOp> {
577- using ConvertOpToLLVMPattern::ConvertOpToLLVMPattern;
578-
579- LogicalResult
580- matchAndRewrite (arith::AddFOp op, OpAdaptor adaptor,
581- ConversionPatternRewriter &rewriter) const override {
582- // Get APFloat adder function from runtime library.
583- auto parent = op->getParentOfType <ModuleOp>();
584- if (!parent)
585- return failure ();
586- if (!llvm::isa<Float8E5M2Type, Float8E4M3Type, Float8E4M3FNType,
587- Float8E5M2FNUZType, Float8E4M3FNUZType,
588- Float8E4M3B11FNUZType, Float8E3M4Type, Float4E2M1FNType,
589- Float6E2M3FNType, Float6E3M2FNType, Float8E8M0FNUType>(
590- op.getType ()))
591- return failure ();
592- auto floatTy = cast<FloatType>(op.getType ());
593- FailureOr<Operation *> adder =
594- LLVM::lookupOrCreateApFloatAddFFn (rewriter, parent);
595-
596- // Cast operands to 64-bit integers.
597- Location loc = op.getLoc ();
598- Value lhsBits = LLVM::ZExtOp::create (rewriter, loc, rewriter.getI64Type (),
599- adaptor.getLhs ());
600- Value rhsBits = LLVM::ZExtOp::create (rewriter, loc, rewriter.getI64Type (),
601- adaptor.getRhs ());
602-
603- // Call software implementation of floating point addition.
604- int32_t sem =
605- llvm::APFloatBase::SemanticsToEnum (floatTy.getFloatSemantics ());
606- Value semValue = LLVM::ConstantOp::create (
607- rewriter, loc, rewriter.getI32Type (),
608- rewriter.getIntegerAttr (rewriter.getI32Type (), sem));
609- SmallVector<Value> params = {semValue, lhsBits, rhsBits};
610- auto resultOp =
611- LLVM::CallOp::create (rewriter, loc, TypeRange (rewriter.getI64Type ()),
612- SymbolRefAttr::get (*adder), params);
613-
614- // Truncate result to the original width.
615- Value truncatedBits = LLVM::TruncOp::create (
616- rewriter, loc, rewriter.getIntegerType (floatTy.getWidth ()),
617- resultOp->getResult (0 ));
618- rewriter.replaceOp (op, truncatedBits);
619- return success ();
620- }
621- };
622-
623576// ===----------------------------------------------------------------------===//
624577// Pattern Population
625578// ===----------------------------------------------------------------------===//
@@ -635,7 +588,6 @@ void mlir::arith::populateArithToLLVMConversionPatterns(
635588 // clang-format off
636589 patterns.add <
637590 AddFOpLowering,
638- FancyAddFLowering,
639591 AddIOpLowering,
640592 AndIOpLowering,
641593 AddUIExtendedOpLowering,
0 commit comments