@@ -53,49 +53,22 @@ struct ConstrainedVectorConvertToLLVMPattern
5353 }
5454};
5555
56- template <typename SourceOp, typename TargetOp,
57- template <typename , typename > typename AttrConvert =
58- AttrConvertPassThrough>
59- struct DenormalOpConversionToLLVMPattern
60- : public VectorConvertToLLVMPattern<SourceOp, TargetOp, AttrConvert> {
61- using VectorConvertToLLVMPattern<SourceOp, TargetOp,
62- AttrConvert>::VectorConvertToLLVMPattern;
63-
64- LogicalResult
65- matchAndRewrite (SourceOp op, typename SourceOp::Adaptor adaptor,
66- ConversionPatternRewriter &rewriter) const override {
67- // TODO: Here, we need a legalization step. LLVM provides a function-level
68- // attribute for denormal; here, we need to move this information from the
69- // operation to the function, making sure all the operations in the same
70- // function are consistent.
71- if (op.getDenormalModeAttr ().getValue () != arith::DenormalMode::ieee)
72- return rewriter.notifyMatchFailure (
73- op, " only ieee denormal mode is supported at the moment" );
74-
75- StringRef arithDenormalAttrName = SourceOp::getDenormalModeAttrName ();
76- op->removeAttr (arithDenormalAttrName);
77- return VectorConvertToLLVMPattern<SourceOp, TargetOp,
78- AttrConvert>::matchAndRewrite (op, adaptor,
79- rewriter);
80- }
81- };
82-
8356// ===----------------------------------------------------------------------===//
8457// Straightforward Op Lowerings
8558// ===----------------------------------------------------------------------===//
8659
8760using AddFOpLowering =
88- DenormalOpConversionToLLVMPattern <arith::AddFOp, LLVM::FAddOp,
89- arith::AttrConvertFastMathToLLVM>;
61+ VectorConvertToLLVMPattern <arith::AddFOp, LLVM::FAddOp,
62+ arith::AttrConvertFastMathToLLVM>;
9063using AddIOpLowering =
9164 VectorConvertToLLVMPattern<arith::AddIOp, LLVM::AddOp,
9265 arith::AttrConvertOverflowToLLVM>;
9366using AndIOpLowering = VectorConvertToLLVMPattern<arith::AndIOp, LLVM::AndOp>;
9467using BitcastOpLowering =
9568 VectorConvertToLLVMPattern<arith::BitcastOp, LLVM::BitcastOp>;
9669using DivFOpLowering =
97- DenormalOpConversionToLLVMPattern <arith::DivFOp, LLVM::FDivOp,
98- arith::AttrConvertFastMathToLLVM>;
70+ VectorConvertToLLVMPattern <arith::DivFOp, LLVM::FDivOp,
71+ arith::AttrConvertFastMathToLLVM>;
9972using DivSIOpLowering =
10073 VectorConvertToLLVMPattern<arith::DivSIOp, LLVM::SDivOp>;
10174using DivUIOpLowering =
@@ -110,38 +83,38 @@ using FPToSIOpLowering =
11083using FPToUIOpLowering =
11184 VectorConvertToLLVMPattern<arith::FPToUIOp, LLVM::FPToUIOp>;
11285using MaximumFOpLowering =
113- DenormalOpConversionToLLVMPattern <arith::MaximumFOp, LLVM::MaximumOp,
114- arith::AttrConvertFastMathToLLVM>;
86+ VectorConvertToLLVMPattern <arith::MaximumFOp, LLVM::MaximumOp,
87+ arith::AttrConvertFastMathToLLVM>;
11588using MaxNumFOpLowering =
116- DenormalOpConversionToLLVMPattern <arith::MaxNumFOp, LLVM::MaxNumOp,
117- arith::AttrConvertFastMathToLLVM>;
89+ VectorConvertToLLVMPattern <arith::MaxNumFOp, LLVM::MaxNumOp,
90+ arith::AttrConvertFastMathToLLVM>;
11891using MaxSIOpLowering =
11992 VectorConvertToLLVMPattern<arith::MaxSIOp, LLVM::SMaxOp>;
12093using MaxUIOpLowering =
12194 VectorConvertToLLVMPattern<arith::MaxUIOp, LLVM::UMaxOp>;
12295using MinimumFOpLowering =
123- DenormalOpConversionToLLVMPattern <arith::MinimumFOp, LLVM::MinimumOp,
124- arith::AttrConvertFastMathToLLVM>;
96+ VectorConvertToLLVMPattern <arith::MinimumFOp, LLVM::MinimumOp,
97+ arith::AttrConvertFastMathToLLVM>;
12598using MinNumFOpLowering =
126- DenormalOpConversionToLLVMPattern <arith::MinNumFOp, LLVM::MinNumOp,
127- arith::AttrConvertFastMathToLLVM>;
99+ VectorConvertToLLVMPattern <arith::MinNumFOp, LLVM::MinNumOp,
100+ arith::AttrConvertFastMathToLLVM>;
128101using MinSIOpLowering =
129102 VectorConvertToLLVMPattern<arith::MinSIOp, LLVM::SMinOp>;
130103using MinUIOpLowering =
131104 VectorConvertToLLVMPattern<arith::MinUIOp, LLVM::UMinOp>;
132105using MulFOpLowering =
133- DenormalOpConversionToLLVMPattern <arith::MulFOp, LLVM::FMulOp,
134- arith::AttrConvertFastMathToLLVM>;
106+ VectorConvertToLLVMPattern <arith::MulFOp, LLVM::FMulOp,
107+ arith::AttrConvertFastMathToLLVM>;
135108using MulIOpLowering =
136109 VectorConvertToLLVMPattern<arith::MulIOp, LLVM::MulOp,
137110 arith::AttrConvertOverflowToLLVM>;
138111using NegFOpLowering =
139- DenormalOpConversionToLLVMPattern <arith::NegFOp, LLVM::FNegOp,
140- arith::AttrConvertFastMathToLLVM>;
112+ VectorConvertToLLVMPattern <arith::NegFOp, LLVM::FNegOp,
113+ arith::AttrConvertFastMathToLLVM>;
141114using OrIOpLowering = VectorConvertToLLVMPattern<arith::OrIOp, LLVM::OrOp>;
142115using RemFOpLowering =
143- DenormalOpConversionToLLVMPattern <arith::RemFOp, LLVM::FRemOp,
144- arith::AttrConvertFastMathToLLVM>;
116+ VectorConvertToLLVMPattern <arith::RemFOp, LLVM::FRemOp,
117+ arith::AttrConvertFastMathToLLVM>;
145118using RemSIOpLowering =
146119 VectorConvertToLLVMPattern<arith::RemSIOp, LLVM::SRemOp>;
147120using RemUIOpLowering =
@@ -158,8 +131,8 @@ using ShRUIOpLowering =
158131using SIToFPOpLowering =
159132 VectorConvertToLLVMPattern<arith::SIToFPOp, LLVM::SIToFPOp>;
160133using SubFOpLowering =
161- DenormalOpConversionToLLVMPattern <arith::SubFOp, LLVM::FSubOp,
162- arith::AttrConvertFastMathToLLVM>;
134+ VectorConvertToLLVMPattern <arith::SubFOp, LLVM::FSubOp,
135+ arith::AttrConvertFastMathToLLVM>;
163136using SubIOpLowering =
164137 VectorConvertToLLVMPattern<arith::SubIOp, LLVM::SubOp,
165138 arith::AttrConvertOverflowToLLVM>;
0 commit comments