Skip to content

Commit 40f5f90

Browse files
authored
[mlir][openacc][flang] Simplify gang, vector and worker representation (#77667)
The IR representation for gang, vector and worker has grown with the support for device_type. This patch simplify the IR representation for gang, vector and worker information on the acc.loop operation. When the only the keyword is present without any values, the information is printed at the same place than when there is values. The device_type is omitted if there is no values and it is equal to None. Otherwise the full information is displayed. First the keyword only device_type information and then the values with their device_type.
1 parent 37c1a5e commit 40f5f90

File tree

7 files changed

+287
-102
lines changed

7 files changed

+287
-102
lines changed

flang/test/Lower/OpenACC/acc-kernels-loop.f90

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -497,10 +497,10 @@ subroutine acc_kernels_loop
497497
END DO
498498

499499
! CHECK: acc.kernels {
500-
! CHECK: acc.loop {
500+
! CHECK: acc.loop gang {
501501
! CHECK: fir.do_loop
502502
! CHECK: acc.yield
503-
! CHECK-NEXT: } attributes {gang = [#acc.device_type<none>]}{{$}}
503+
! CHECK-NEXT: }{{$}}
504504
! CHECK: acc.terminator
505505
! CHECK-NEXT: }{{$}}
506506

@@ -550,10 +550,10 @@ subroutine acc_kernels_loop
550550
a(i) = b(i)
551551
END DO
552552
! CHECK: acc.kernels {
553-
! CHECK: acc.loop {
553+
! CHECK: acc.loop vector {
554554
! CHECK: fir.do_loop
555555
! CHECK: acc.yield
556-
! CHECK-NEXT: } attributes {vector = [#acc.device_type<none>]}{{$}}
556+
! CHECK-NEXT: }{{$}}
557557
! CHECK: acc.terminator
558558
! CHECK-NEXT: }{{$}}
559559

@@ -591,10 +591,10 @@ subroutine acc_kernels_loop
591591
END DO
592592

593593
! CHECK: acc.kernels {
594-
! CHECK: acc.loop {
594+
! CHECK: acc.loop worker {
595595
! CHECK: fir.do_loop
596596
! CHECK: acc.yield
597-
! CHECK-NEXT: } attributes {worker = [#acc.device_type<none>]}{{$}}
597+
! CHECK-NEXT: }{{$}}
598598
! CHECK: acc.terminator
599599
! CHECK-NEXT: }{{$}}
600600

flang/test/Lower/OpenACC/acc-loop.f90

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ program acc_loop
6767
a(i) = b(i)
6868
END DO
6969

70-
!CHECK: acc.loop {
70+
!CHECK: acc.loop gang {
7171
!CHECK: fir.do_loop
7272
!CHECK: acc.yield
73-
!CHECK-NEXT: } attributes {gang = [#acc.device_type<none>]}{{$}}
73+
!CHECK-NEXT: }{{$}}
7474

7575
!$acc loop gang(num: 8)
7676
DO i = 1, n
@@ -109,10 +109,10 @@ program acc_loop
109109
a(i) = b(i)
110110
END DO
111111

112-
!CHECK: acc.loop {
112+
!CHECK: acc.loop vector {
113113
!CHECK: fir.do_loop
114114
!CHECK: acc.yield
115-
!CHECK-NEXT: } attributes {vector = [#acc.device_type<none>]}{{$}}
115+
!CHECK-NEXT: }{{$}}
116116

117117
!$acc loop vector(128)
118118
DO i = 1, n
@@ -141,10 +141,10 @@ program acc_loop
141141
a(i) = b(i)
142142
END DO
143143

144-
!CHECK: acc.loop {
144+
!CHECK: acc.loop worker {
145145
!CHECK: fir.do_loop
146146
!CHECK: acc.yield
147-
!CHECK-NEXT: } attributes {worker = [#acc.device_type<none>]}{{$}}
147+
!CHECK-NEXT: }{{$}}
148148

149149
!$acc loop worker(128)
150150
DO i = 1, n
@@ -320,4 +320,10 @@ program acc_loop
320320
! CHECK: acc.loop
321321
! CHECK: fir.do_loop
322322

323+
!$acc loop gang device_type(nvidia) gang(8)
324+
DO i = 1, n
325+
END DO
326+
327+
! CHECK: acc.loop gang([#acc.device_type<none>], {num=%c8{{.*}} : i32} [#acc.device_type<nvidia>])
328+
323329
end program

flang/test/Lower/OpenACC/acc-parallel-loop.f90

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -512,10 +512,10 @@ subroutine acc_parallel_loop
512512
END DO
513513

514514
! CHECK: acc.parallel {
515-
! CHECK: acc.loop {
515+
! CHECK: acc.loop gang {
516516
! CHECK: fir.do_loop
517517
! CHECK: acc.yield
518-
! CHECK-NEXT: } attributes {gang = [#acc.device_type<none>]}{{$}}
518+
! CHECK-NEXT: }{{$}}
519519
! CHECK: acc.yield
520520
! CHECK-NEXT: }{{$}}
521521

@@ -565,10 +565,10 @@ subroutine acc_parallel_loop
565565
a(i) = b(i)
566566
END DO
567567
! CHECK: acc.parallel {
568-
! CHECK: acc.loop {
568+
! CHECK: acc.loop vector {
569569
! CHECK: fir.do_loop
570570
! CHECK: acc.yield
571-
! CHECK-NEXT: } attributes {vector = [#acc.device_type<none>]}{{$}}
571+
! CHECK-NEXT: }{{$}}
572572
! CHECK: acc.yield
573573
! CHECK-NEXT: }{{$}}
574574

@@ -606,10 +606,10 @@ subroutine acc_parallel_loop
606606
END DO
607607

608608
! CHECK: acc.parallel {
609-
! CHECK: acc.loop {
609+
! CHECK: acc.loop worker {
610610
! CHECK: fir.do_loop
611611
! CHECK: acc.yield
612-
! CHECK-NEXT: } attributes {worker = [#acc.device_type<none>]}{{$}}
612+
! CHECK-NEXT: }{{$}}
613613
! CHECK: acc.yield
614614
! CHECK-NEXT: }{{$}}
615615

flang/test/Lower/OpenACC/acc-serial-loop.f90

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -447,10 +447,10 @@ subroutine acc_serial_loop
447447
END DO
448448

449449
! CHECK: acc.serial {
450-
! CHECK: acc.loop {
450+
! CHECK: acc.loop gang {
451451
! CHECK: fir.do_loop
452452
! CHECK: acc.yield
453-
! CHECK-NEXT: } attributes {gang = [#acc.device_type<none>]}{{$}}
453+
! CHECK-NEXT: }{{$}}
454454
! CHECK: acc.yield
455455
! CHECK-NEXT: }{{$}}
456456

@@ -500,10 +500,10 @@ subroutine acc_serial_loop
500500
a(i) = b(i)
501501
END DO
502502
! CHECK: acc.serial {
503-
! CHECK: acc.loop {
503+
! CHECK: acc.loop vector {
504504
! CHECK: fir.do_loop
505505
! CHECK: acc.yield
506-
! CHECK-NEXT: } attributes {vector = [#acc.device_type<none>]}{{$}}
506+
! CHECK-NEXT: }{{$}}
507507
! CHECK: acc.yield
508508
! CHECK-NEXT: }{{$}}
509509

@@ -541,10 +541,10 @@ subroutine acc_serial_loop
541541
END DO
542542

543543
! CHECK: acc.serial {
544-
! CHECK: acc.loop {
544+
! CHECK: acc.loop worker {
545545
! CHECK: fir.do_loop
546546
! CHECK: acc.yield
547-
! CHECK-NEXT: } attributes {worker = [#acc.device_type<none>]}{{$}}
547+
! CHECK-NEXT: }{{$}}
548548
! CHECK: acc.yield
549549
! CHECK-NEXT: }{{$}}
550550

mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1483,7 +1483,7 @@ def OpenACC_LoopOp : OpenACC_Op<"loop",
14831483
Example:
14841484

14851485
```mlir
1486-
acc.loop {
1486+
acc.loop gang vector {
14871487
scf.for %arg3 = %c0 to %c10 step %c1 {
14881488
scf.for %arg4 = %c0 to %c10 step %c1 {
14891489
scf.for %arg5 = %c0 to %c10 step %c1 {
@@ -1492,10 +1492,7 @@ def OpenACC_LoopOp : OpenACC_Op<"loop",
14921492
}
14931493
}
14941494
acc.yield
1495-
} attributes {
1496-
collapse = [3], gang = [#acc.device_type<none>],
1497-
vector = [#acc.device_type<none>]
1498-
}
1495+
} attributes { collapse = [3] }
14991496
```
15001497
}];
15011498

@@ -1613,13 +1610,14 @@ def OpenACC_LoopOp : OpenACC_Op<"loop",
16131610
let hasCustomAssemblyFormat = 1;
16141611
let assemblyFormat = [{
16151612
oilist(
1616-
`gang` `` `(` custom<GangClause>($gangOperands, type($gangOperands),
1613+
`gang` `` custom<GangClause>($gangOperands, type($gangOperands),
16171614
$gangOperandsArgType, $gangOperandsDeviceType,
1618-
$gangOperandsSegments) `)`
1619-
| `worker` `` `(` custom<DeviceTypeOperands>($workerNumOperands,
1620-
type($workerNumOperands), $workerNumOperandsDeviceType) `)`
1621-
| `vector` `` `(` custom<DeviceTypeOperands>($vectorOperands,
1622-
type($vectorOperands), $vectorOperandsDeviceType) `)`
1615+
$gangOperandsSegments, $gang)
1616+
| `worker` `` custom<DeviceTypeOperandsWithKeywordOnly>(
1617+
$workerNumOperands, type($workerNumOperands),
1618+
$workerNumOperandsDeviceType, $worker)
1619+
| `vector` `` custom<DeviceTypeOperandsWithKeywordOnly>($vectorOperands,
1620+
type($vectorOperands), $vectorOperandsDeviceType, $vector)
16231621
| `private` `(` custom<SymOperandList>(
16241622
$privateOperands, type($privateOperands), $privatizations) `)`
16251623
| `tile` `(` custom<DeviceTypeOperandsWithSegment>($tileOperands,

0 commit comments

Comments
 (0)