@@ -126,9 +126,8 @@ static mlir::ParseResult parseAllocatableOp(FN wrapResultType,
126
126
parser.emitError (parser.getNameLoc (), " invalid allocate type: " ) << intype;
127
127
return mlir::failure ();
128
128
}
129
- result.addAttribute (
130
- " operand_segment_sizes" ,
131
- builder.getDenseI32ArrayAttr ({typeparamsSize, shapeSize}));
129
+ result.addAttribute (" operand_segment_sizes" ,
130
+ builder.getI32VectorAttr ({typeparamsSize, shapeSize}));
132
131
if (parser.parseOptionalAttrDict (result.attributes ) ||
133
132
parser.addTypeToList (restype, result.types ))
134
133
return mlir::failure ();
@@ -2432,8 +2431,8 @@ static mlir::ParseResult parseIntegralSwitchTerminator(
2432
2431
sumArgs += argSize;
2433
2432
}
2434
2433
result.addAttribute (operandSegmentAttr,
2435
- bld.getDenseI32ArrayAttr ({1 , 0 , sumArgs}));
2436
- result.addAttribute (getTargetOffsetAttr (), bld.getDenseI32ArrayAttr (argOffs));
2434
+ bld.getI32VectorAttr ({1 , 0 , sumArgs}));
2435
+ result.addAttribute (getTargetOffsetAttr (), bld.getI32VectorAttr (argOffs));
2437
2436
return mlir::success ();
2438
2437
}
2439
2438
@@ -2481,12 +2480,13 @@ void fir::SelectOp::print(mlir::OpAsmPrinter &p) {
2481
2480
}
2482
2481
2483
2482
template <typename A, typename ... AdditionalArgs>
2484
- static A getSubOperands (unsigned pos, A allArgs, mlir::DenseI32ArrayAttr ranges,
2483
+ static A getSubOperands (unsigned pos, A allArgs,
2484
+ mlir::DenseIntElementsAttr ranges,
2485
2485
AdditionalArgs &&...additionalArgs) {
2486
2486
unsigned start = 0 ;
2487
2487
for (unsigned i = 0 ; i < pos; ++i)
2488
- start += ranges[i] ;
2489
- return allArgs.slice (start, ranges[ pos] ,
2488
+ start += (*( ranges. begin () + i)). getZExtValue () ;
2489
+ return allArgs.slice (start, (*( ranges. begin () + pos)). getZExtValue () ,
2490
2490
std::forward<AdditionalArgs>(additionalArgs)...);
2491
2491
}
2492
2492
@@ -2498,10 +2498,14 @@ getMutableSuccessorOperands(unsigned pos, mlir::MutableOperandRange operands,
2498
2498
*owner->getAttrDictionary ().getNamed (offsetAttr);
2499
2499
return getSubOperands (
2500
2500
pos, operands,
2501
- targetOffsetAttr.getValue ().cast <mlir::DenseI32ArrayAttr >(),
2501
+ targetOffsetAttr.getValue ().cast <mlir::DenseIntElementsAttr >(),
2502
2502
mlir::MutableOperandRange::OperandSegment (pos, targetOffsetAttr));
2503
2503
}
2504
2504
2505
+ static unsigned denseElementsSize (mlir::DenseIntElementsAttr attr) {
2506
+ return attr.getNumElements ();
2507
+ }
2508
+
2505
2509
llvm::Optional<mlir::OperandRange> fir::SelectOp::getCompareOperands (unsigned ) {
2506
2510
return {};
2507
2511
}
@@ -2520,25 +2524,24 @@ llvm::Optional<llvm::ArrayRef<mlir::Value>>
2520
2524
fir::SelectOp::getSuccessorOperands (llvm::ArrayRef<mlir::Value> operands,
2521
2525
unsigned oper) {
2522
2526
auto a =
2523
- (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(getTargetOffsetAttr ());
2524
- auto segments = (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(
2527
+ (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(getTargetOffsetAttr ());
2528
+ auto segments = (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(
2525
2529
getOperandSegmentSizeAttr ());
2526
2530
return {getSubOperands (oper, getSubOperands (2 , operands, segments), a)};
2527
2531
}
2528
2532
2529
2533
llvm::Optional<mlir::ValueRange>
2530
2534
fir::SelectOp::getSuccessorOperands (mlir::ValueRange operands, unsigned oper) {
2531
2535
auto a =
2532
- (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(getTargetOffsetAttr ());
2533
- auto segments = (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(
2536
+ (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(getTargetOffsetAttr ());
2537
+ auto segments = (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(
2534
2538
getOperandSegmentSizeAttr ());
2535
2539
return {getSubOperands (oper, getSubOperands (2 , operands, segments), a)};
2536
2540
}
2537
2541
2538
2542
unsigned fir::SelectOp::targetOffsetSize () {
2539
- return (*this )
2540
- ->getAttrOfType <mlir::DenseI32ArrayAttr>(getTargetOffsetAttr ())
2541
- .size ();
2543
+ return denseElementsSize ((*this )->getAttrOfType <mlir::DenseIntElementsAttr>(
2544
+ getTargetOffsetAttr ()));
2542
2545
}
2543
2546
2544
2547
// ===----------------------------------------------------------------------===//
@@ -2547,27 +2550,27 @@ unsigned fir::SelectOp::targetOffsetSize() {
2547
2550
2548
2551
llvm::Optional<mlir::OperandRange>
2549
2552
fir::SelectCaseOp::getCompareOperands (unsigned cond) {
2550
- auto a =
2551
- (* this )-> getAttrOfType <mlir::DenseI32ArrayAttr>( getCompareOffsetAttr ());
2553
+ auto a = (* this )-> getAttrOfType <mlir::DenseIntElementsAttr>(
2554
+ getCompareOffsetAttr ());
2552
2555
return {getSubOperands (cond, getCompareArgs (), a)};
2553
2556
}
2554
2557
2555
2558
llvm::Optional<llvm::ArrayRef<mlir::Value>>
2556
2559
fir::SelectCaseOp::getCompareOperands (llvm::ArrayRef<mlir::Value> operands,
2557
2560
unsigned cond) {
2558
- auto a =
2559
- (* this )-> getAttrOfType <mlir::DenseI32ArrayAttr>( getCompareOffsetAttr ());
2560
- auto segments = (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(
2561
+ auto a = (* this )-> getAttrOfType <mlir::DenseIntElementsAttr>(
2562
+ getCompareOffsetAttr ());
2563
+ auto segments = (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(
2561
2564
getOperandSegmentSizeAttr ());
2562
2565
return {getSubOperands (cond, getSubOperands (1 , operands, segments), a)};
2563
2566
}
2564
2567
2565
2568
llvm::Optional<mlir::ValueRange>
2566
2569
fir::SelectCaseOp::getCompareOperands (mlir::ValueRange operands,
2567
2570
unsigned cond) {
2568
- auto a =
2569
- (* this )-> getAttrOfType <mlir::DenseI32ArrayAttr>( getCompareOffsetAttr ());
2570
- auto segments = (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(
2571
+ auto a = (* this )-> getAttrOfType <mlir::DenseIntElementsAttr>(
2572
+ getCompareOffsetAttr ());
2573
+ auto segments = (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(
2571
2574
getOperandSegmentSizeAttr ());
2572
2575
return {getSubOperands (cond, getSubOperands (1 , operands, segments), a)};
2573
2576
}
@@ -2581,8 +2584,8 @@ llvm::Optional<llvm::ArrayRef<mlir::Value>>
2581
2584
fir::SelectCaseOp::getSuccessorOperands (llvm::ArrayRef<mlir::Value> operands,
2582
2585
unsigned oper) {
2583
2586
auto a =
2584
- (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(getTargetOffsetAttr ());
2585
- auto segments = (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(
2587
+ (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(getTargetOffsetAttr ());
2588
+ auto segments = (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(
2586
2589
getOperandSegmentSizeAttr ());
2587
2590
return {getSubOperands (oper, getSubOperands (2 , operands, segments), a)};
2588
2591
}
@@ -2591,8 +2594,8 @@ llvm::Optional<mlir::ValueRange>
2591
2594
fir::SelectCaseOp::getSuccessorOperands (mlir::ValueRange operands,
2592
2595
unsigned oper) {
2593
2596
auto a =
2594
- (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(getTargetOffsetAttr ());
2595
- auto segments = (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(
2597
+ (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(getTargetOffsetAttr ());
2598
+ auto segments = (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(
2596
2599
getOperandSegmentSizeAttr ());
2597
2600
return {getSubOperands (oper, getSubOperands (2 , operands, segments), a)};
2598
2601
}
@@ -2665,11 +2668,9 @@ mlir::ParseResult fir::SelectCaseOp::parse(mlir::OpAsmParser &parser,
2665
2668
}
2666
2669
auto &bld = parser.getBuilder ();
2667
2670
result.addAttribute (fir::SelectCaseOp::getOperandSegmentSizeAttr (),
2668
- bld.getDenseI32ArrayAttr ({1 , offSize, toffSize}));
2669
- result.addAttribute (getCompareOffsetAttr (),
2670
- bld.getDenseI32ArrayAttr (argOffs));
2671
- result.addAttribute (getTargetOffsetAttr (),
2672
- bld.getDenseI32ArrayAttr (targOffs));
2671
+ bld.getI32VectorAttr ({1 , offSize, toffSize}));
2672
+ result.addAttribute (getCompareOffsetAttr (), bld.getI32VectorAttr (argOffs));
2673
+ result.addAttribute (getTargetOffsetAttr (), bld.getI32VectorAttr (targOffs));
2673
2674
return mlir::success ();
2674
2675
}
2675
2676
@@ -2702,15 +2703,13 @@ void fir::SelectCaseOp::print(mlir::OpAsmPrinter &p) {
2702
2703
}
2703
2704
2704
2705
unsigned fir::SelectCaseOp::compareOffsetSize () {
2705
- return (*this )
2706
- ->getAttrOfType <mlir::DenseI32ArrayAttr>(getCompareOffsetAttr ())
2707
- .size ();
2706
+ return denseElementsSize ((*this )->getAttrOfType <mlir::DenseIntElementsAttr>(
2707
+ getCompareOffsetAttr ()));
2708
2708
}
2709
2709
2710
2710
unsigned fir::SelectCaseOp::targetOffsetSize () {
2711
- return (*this )
2712
- ->getAttrOfType <mlir::DenseI32ArrayAttr>(getTargetOffsetAttr ())
2713
- .size ();
2711
+ return denseElementsSize ((*this )->getAttrOfType <mlir::DenseIntElementsAttr>(
2712
+ getTargetOffsetAttr ()));
2714
2713
}
2715
2714
2716
2715
void fir::SelectCaseOp::build (mlir::OpBuilder &builder,
@@ -2739,7 +2738,7 @@ void fir::SelectCaseOp::build(mlir::OpBuilder &builder,
2739
2738
for (auto ops : cmpOperands)
2740
2739
result.addOperands (ops);
2741
2740
result.addAttribute (getCompareOffsetAttr (),
2742
- builder.getDenseI32ArrayAttr (operOffs));
2741
+ builder.getI32VectorAttr (operOffs));
2743
2742
const auto count = destinations.size ();
2744
2743
for (auto d : destinations)
2745
2744
result.addSuccessors (d);
@@ -2757,9 +2756,8 @@ void fir::SelectCaseOp::build(mlir::OpBuilder &builder,
2757
2756
}
2758
2757
}
2759
2758
result.addAttribute (getOperandSegmentSizeAttr (),
2760
- builder.getDenseI32ArrayAttr ({1 , operSize, sumArgs}));
2761
- result.addAttribute (getTargetOffsetAttr (),
2762
- builder.getDenseI32ArrayAttr (argOffs));
2759
+ builder.getI32VectorAttr ({1 , operSize, sumArgs}));
2760
+ result.addAttribute (getTargetOffsetAttr (), builder.getI32VectorAttr (argOffs));
2763
2761
result.addAttributes (attributes);
2764
2762
}
2765
2763
@@ -2856,8 +2854,8 @@ llvm::Optional<llvm::ArrayRef<mlir::Value>>
2856
2854
fir::SelectRankOp::getSuccessorOperands (llvm::ArrayRef<mlir::Value> operands,
2857
2855
unsigned oper) {
2858
2856
auto a =
2859
- (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(getTargetOffsetAttr ());
2860
- auto segments = (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(
2857
+ (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(getTargetOffsetAttr ());
2858
+ auto segments = (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(
2861
2859
getOperandSegmentSizeAttr ());
2862
2860
return {getSubOperands (oper, getSubOperands (2 , operands, segments), a)};
2863
2861
}
@@ -2866,16 +2864,15 @@ llvm::Optional<mlir::ValueRange>
2866
2864
fir::SelectRankOp::getSuccessorOperands (mlir::ValueRange operands,
2867
2865
unsigned oper) {
2868
2866
auto a =
2869
- (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(getTargetOffsetAttr ());
2870
- auto segments = (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(
2867
+ (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(getTargetOffsetAttr ());
2868
+ auto segments = (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(
2871
2869
getOperandSegmentSizeAttr ());
2872
2870
return {getSubOperands (oper, getSubOperands (2 , operands, segments), a)};
2873
2871
}
2874
2872
2875
2873
unsigned fir::SelectRankOp::targetOffsetSize () {
2876
- return (*this )
2877
- ->getAttrOfType <mlir::DenseI32ArrayAttr>(getTargetOffsetAttr ())
2878
- .size ();
2874
+ return denseElementsSize ((*this )->getAttrOfType <mlir::DenseIntElementsAttr>(
2875
+ getTargetOffsetAttr ()));
2879
2876
}
2880
2877
2881
2878
// ===----------------------------------------------------------------------===//
@@ -2901,8 +2898,8 @@ llvm::Optional<llvm::ArrayRef<mlir::Value>>
2901
2898
fir::SelectTypeOp::getSuccessorOperands (llvm::ArrayRef<mlir::Value> operands,
2902
2899
unsigned oper) {
2903
2900
auto a =
2904
- (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(getTargetOffsetAttr ());
2905
- auto segments = (*this )->getAttrOfType <mlir::DenseI32ArrayAttr >(
2901
+ (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(getTargetOffsetAttr ());
2902
+ auto segments = (*this )->getAttrOfType <mlir::DenseIntElementsAttr >(
2906
2903
getOperandSegmentSizeAttr ());
2907
2904
return {getSubOperands (oper, getSubOperands (2 , operands, segments), a)};
2908
2905
}
@@ -2947,15 +2944,14 @@ mlir::ParseResult fir::SelectTypeOp::parse(mlir::OpAsmParser &parser,
2947
2944
offSize += argSize;
2948
2945
}
2949
2946
result.addAttribute (fir::SelectTypeOp::getOperandSegmentSizeAttr (),
2950
- bld.getDenseI32ArrayAttr ({1 , 0 , offSize}));
2951
- result.addAttribute (getTargetOffsetAttr (), bld.getDenseI32ArrayAttr (argOffs));
2947
+ bld.getI32VectorAttr ({1 , 0 , offSize}));
2948
+ result.addAttribute (getTargetOffsetAttr (), bld.getI32VectorAttr (argOffs));
2952
2949
return mlir::success ();
2953
2950
}
2954
2951
2955
2952
unsigned fir::SelectTypeOp::targetOffsetSize () {
2956
- return (*this )
2957
- ->getAttrOfType <mlir::DenseI32ArrayAttr>(getTargetOffsetAttr ())
2958
- .size ();
2953
+ return denseElementsSize ((*this )->getAttrOfType <mlir::DenseIntElementsAttr>(
2954
+ getTargetOffsetAttr ()));
2959
2955
}
2960
2956
2961
2957
void fir::SelectTypeOp::print (mlir::OpAsmPrinter &p) {
@@ -3025,9 +3021,8 @@ void fir::SelectTypeOp::build(mlir::OpBuilder &builder,
3025
3021
}
3026
3022
}
3027
3023
result.addAttribute (getOperandSegmentSizeAttr (),
3028
- builder.getDenseI32ArrayAttr ({1 , 0 , sumArgs}));
3029
- result.addAttribute (getTargetOffsetAttr (),
3030
- builder.getDenseI32ArrayAttr (argOffs));
3024
+ builder.getI32VectorAttr ({1 , 0 , sumArgs}));
3025
+ result.addAttribute (getTargetOffsetAttr (), builder.getI32VectorAttr (argOffs));
3031
3026
result.addAttributes (attributes);
3032
3027
}
3033
3028
0 commit comments