Skip to content

Commit c28bbc2

Browse files
Use UnitAttr instead of I32Attr
1 parent 9557cd0 commit c28bbc2

File tree

3 files changed

+16
-14
lines changed

3 files changed

+16
-14
lines changed

flang/include/flang/Optimizer/Dialect/FIROps.td

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -368,15 +368,15 @@ def fir_PrefetchOp : fir_Op<"prefetch", []> {
368368

369369
/// `memref' is the address to be prefetched
370370
/// `rw' : rw specifier >
371-
/// read is 0, write is 1
371+
/// read is 0 (default), write is 1
372372
/// `localityHint': temporal locality specifier >
373373
/// value ranging from 0 - no locality to 3 - extremely local
374374
/// `cacheType' : cache type specifier >
375-
/// instruction cache is 0, data cache is 1
376-
let arguments = (ins AnyReferenceLike:$memref,
377-
ConfinedAttr<I32Attr, [IntMinValue<0>, IntMaxValue<1>]>:$rw,
375+
/// instruction cache is 0 (default), data cache is 1
376+
/// NOTE: The numerical values used here is in reference to the LLVM LangRef
377+
let arguments = (ins AnyReferenceLike:$memref, UnitAttr:$rw,
378378
ConfinedAttr<I32Attr, [IntMinValue<0>, IntMaxValue<3>]>:$localityHint,
379-
ConfinedAttr<I32Attr, [IntMinValue<0>, IntMaxValue<1>]>:$cacheType);
379+
UnitAttr:$cacheType);
380380

381381
let assemblyFormat = "$memref attr-dict `:` type(operands)";
382382
}
@@ -974,7 +974,7 @@ def fir_ReboxAssumedRankOp : fir_Op<"rebox_assumed_rank",
974974
Example:
975975
```
976976
fir.rebox_assumed_rank %1 lbs zeroes : (!fir.box<!fir.array<*:f32>>) -> !fir.box<!fir.array<*:f32>>
977-
```
977+
```
978978
}];
979979

980980
let arguments = (ins

flang/lib/Optimizer/CodeGen/CodeGen.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3353,9 +3353,11 @@ struct PrefetchOpConversion : public fir::FIROpConversion<fir::PrefetchOp> {
33533353
llvm::LogicalResult
33543354
matchAndRewrite(fir::PrefetchOp prefetch, OpAdaptor adaptor,
33553355
mlir::ConversionPatternRewriter &rewriter) const override {
3356-
mlir::IntegerAttr rw = prefetch.getRwAttr();
3356+
mlir::IntegerAttr rw = mlir::IntegerAttr::get(rewriter.getI32Type(),
3357+
prefetch.getRwAttr() ? 1 : 0);
33573358
mlir::IntegerAttr localityHint = prefetch.getLocalityHintAttr();
3358-
mlir::IntegerAttr cacheType = prefetch.getCacheTypeAttr();
3359+
mlir::IntegerAttr cacheType = mlir::IntegerAttr::get(
3360+
rewriter.getI32Type(), prefetch.getCacheTypeAttr() ? 1 : 0);
33593361
mlir::LLVM::Prefetch::create(rewriter, prefetch.getLoc(),
33603362
adaptor.getOperands().front(), rw,
33613363
localityHint, cacheType);

flang/test/Lower/HLFIR/prefetch.f90

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ subroutine test_prefetch_01()
1818

1919
a = 23
2020

21-
! HLFIR: fir.prefetch %[[H_A]]#0 {cacheType = 1 : i32, localityHint = 3 : i32, rw = 0 : i32} : !fir.ref<!fir.array<256xi32>>
21+
! HLFIR: fir.prefetch %[[H_A]]#0 {cacheType, localityHint = 3 : i32} : !fir.ref<!fir.array<256xi32>>
2222
!dir$ prefetch a
2323
i = sum(a)
2424

@@ -28,8 +28,8 @@ subroutine test_prefetch_01()
2828
! HLFIR: %[[H_CON:.*]] = fir.convert %[[H_ADD]] : (i32) -> i64
2929
! HLFIR: %[[H_DESIG:.*]] = hlfir.designate %[[H_A]]#0 (%[[H_CON]]) : (!fir.ref<!fir.array<256xi32>>, i64) -> !fir.ref<i32>
3030

31-
! HLFIR: fir.prefetch %[[H_DESIG]] {cacheType = 1 : i32, localityHint = 3 : i32, rw = 0 : i32} : !fir.ref<i32>
32-
! HLFIR: fir.prefetch %[[H_J]]#0 {cacheType = 1 : i32, localityHint = 3 : i32, rw = 0 : i32} : !fir.ref<i32>
31+
! HLFIR: fir.prefetch %[[H_DESIG]] {cacheType, localityHint = 3 : i32} : !fir.ref<i32>
32+
! HLFIR: fir.prefetch %[[H_J]]#0 {cacheType, localityHint = 3 : i32} : !fir.ref<i32>
3333

3434
do i = 1, (256 - 64)
3535
!dir$ prefetch a(i+64), j
@@ -45,17 +45,17 @@ subroutine test_prefetch_02(t1)
4545
integer, allocatable :: a(:, :)
4646

4747
! HLFIR: %[[H_DESIG_01:.*]] = hlfir.designate %[[H_ARG0]]#0{"a"} shape {{.*}}
48-
! HLFIR: fir.prefetch %[[H_DESIG_01]] {cacheType = 1 : i32, localityHint = 3 : i32, rw = 0 : i32} : !fir.ref<!fir.array<256x256xi32>>
48+
! HLFIR: fir.prefetch %[[H_DESIG_01]] {cacheType, localityHint = 3 : i32} : !fir.ref<!fir.array<256x256xi32>>
4949
!dir$ prefetch t1%a
5050
a = t1%a ** 2
5151

5252
do i = 1, 256
53-
! HLFIR: fir.prefetch %[[H_A]]#0 {cacheType = 1 : i32, localityHint = 3 : i32, rw = 0 : i32} : !fir.ref<!fir.box<!fir.heap<!fir.array<?x?xi32>>>>
53+
! HLFIR: fir.prefetch %[[H_A]]#0 {cacheType, localityHint = 3 : i32} : !fir.ref<!fir.box<!fir.heap<!fir.array<?x?xi32>>>>
5454
!dir$ prefetch a
5555
a(i, :) = a(i, :) + i
5656
do j = 1, 256
5757
! HLFIR: %[[H_DESIG_02:.*]] = hlfir.designate %[[H_ARG0]]#0{"a"} {{.*}}
58-
! HLFIR: fir.prefetch %[[H_DESIG_02]] {cacheType = 1 : i32, localityHint = 3 : i32, rw = 0 : i32} : !fir.ref<i32>
58+
! HLFIR: fir.prefetch %[[H_DESIG_02]] {cacheType, localityHint = 3 : i32} : !fir.ref<i32>
5959
!dir$ prefetch t1%a(i, j)
6060
t1%a(i, j) = (a(i, j) + i*j) / t1%a(i, j)
6161
end do

0 commit comments

Comments
 (0)