17
17
#include " llvm/ADT/SetVector.h"
18
18
#include " llvm/ADT/SmallString.h"
19
19
#include " mlir/IR/Builders.h"
20
+ #include " mlir/Support/LLVM.h"
20
21
#include " sequence.h"
21
22
#include " util.h"
22
23
@@ -106,7 +107,7 @@ const IterationSpace &IterationSpaceAnalysis::ComputeIterationSpace(
106
107
loop_names.reserve (num_loops);
107
108
108
109
for (mlir::Attribute attr : compute_op.Loops ()) {
109
- LoopAttr loop = attr. cast <LoopAttr>();
110
+ LoopAttr loop = mlir:: cast<LoopAttr>(attr );
110
111
loop_names.push_back (loop.name ());
111
112
exprs.push_back (loop.iter ());
112
113
}
@@ -265,10 +266,10 @@ mlir::LogicalResult VerifyLoopNestWellFormed(
265
266
int domain_size = shape.Dimensions ().size ();
266
267
267
268
for (int i = 0 , e = loop_nest.size (); i < e; ++i) {
268
- LoopAttr loop = loop_nest[i]. dyn_cast <LoopAttr>();
269
+ LoopAttr loop = mlir:: dyn_cast<LoopAttr>(loop_nest[i] );
269
270
// Ensure that symbols are unique in the loop nest.
270
271
for (int j = 0 ; j < i; ++j) {
271
- if (loop.name () == loop_nest[j]. cast <LoopAttr>().name ()) {
272
+ if (loop.name () == mlir:: cast<LoopAttr>(loop_nest[j] ).name ()) {
272
273
return mlir::emitError (loc)
273
274
<< " name " << loop.name () << " used twice in the same loop nest" ;
274
275
}
@@ -317,7 +318,7 @@ class LoopNestState {
317
318
int common_prefix_size = 0 ;
318
319
for (int e = std::min (loop_nest.size (), open_loops_.size ());
319
320
common_prefix_size < e; ++common_prefix_size) {
320
- LoopAttr loop = loop_nest[common_prefix_size]. cast <LoopAttr>();
321
+ LoopAttr loop = mlir:: cast<LoopAttr>(loop_nest[common_prefix_size] );
321
322
if (loop.name () != open_loops_[common_prefix_size]) break ;
322
323
}
323
324
@@ -326,7 +327,7 @@ class LoopNestState {
326
327
327
328
// Add remaining loops to the current fusion prefix.
328
329
for (mlir::Attribute attribute : loop_nest.drop_front (common_prefix_size)) {
329
- LoopAttr loop = attribute. cast <LoopAttr>();
330
+ LoopAttr loop = mlir:: cast<LoopAttr>(attribute );
330
331
331
332
if (closed_loops_.count (loop.name ()) > 0 ) {
332
333
return op.EmitError () << " occurrences of loop " << loop.name ()
@@ -500,7 +501,7 @@ static mlir::LogicalResult VerifyLoopRanges(
500
501
const LoopFusionAnalysis &fusion_analysis,
501
502
const SequenceAnalysis &sequence_analysis) {
502
503
for (mlir::Attribute attr : loop_nest) {
503
- LoopAttr loop = attr. cast <LoopAttr>();
504
+ LoopAttr loop = mlir:: cast<LoopAttr>(attr );
504
505
const LoopFusionClass &fusion_class = fusion_analysis.GetClass (loop.name ());
505
506
for (const auto &dimension : fusion_class.getDomain ()) {
506
507
if (sequence_analysis.IsBefore (op, dimension.value .defining_op ())) {
@@ -670,7 +671,7 @@ mlir::LogicalResult LoopFusionAnalysis::Init(
670
671
// Returns the unroll factor of the `pos`-th loop in the given compute op.
671
672
// Expects the op to have a well-formed loop nest attribute.
672
673
static unsigned ExtractUnrollFactor (const ComputeOpInstance &op, unsigned pos) {
673
- auto loop = op.Loops ()[pos]. cast <LoopAttr>( );
674
+ auto loop = mlir::cast<LoopAttr>( op.Loops ()[pos]);
674
675
if (mlir::IntegerAttr unroll_factor = loop.unroll ()) {
675
676
return unroll_factor.getInt ();
676
677
}
@@ -686,7 +687,7 @@ mlir::LogicalResult LoopFusionAnalysis::RegisterLoop(
686
687
loop_names.reserve (loop_pos);
687
688
iter_exprs.reserve (loop_pos);
688
689
for (int i = 0 ; i < loop_pos; ++i) {
689
- LoopAttr loop = op.Loops ()[i]. cast <LoopAttr>( );
690
+ LoopAttr loop = mlir::cast<LoopAttr>( op.Loops ()[i]);
690
691
loop_names.push_back (loop.name ());
691
692
iter_exprs.push_back (loop.iter ());
692
693
}
@@ -698,7 +699,7 @@ mlir::LogicalResult LoopFusionAnalysis::RegisterLoop(
698
699
auto loop_nest_mapping =
699
700
MappingAttr::get (op.context (), op.domain_size (), iter_exprs);
700
701
701
- LoopAttr loop = op.Loops ()[loop_pos]. cast <LoopAttr>( );
702
+ LoopAttr loop = mlir::cast<LoopAttr>( op.Loops ()[loop_pos]);
702
703
auto [it, was_inserted] =
703
704
fusion_classes_.try_emplace (loop.name (), loop.name (), op, loop_nest);
704
705
LoopFusionClass &fusion_class = it->second ;
0 commit comments