tree 0133d5adb4317d160218088dea7665aa89c1c2d3
parent c3ce5684a8b408220eed983d065edba0e6ed5016
author Kareem Ergawy <kareem.ergawy@amd.com> 1746615145 +0200
committer GitHub <noreply@github.com> 1746615145 +0200
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJoGztpCRC1aQ7uu5UhlAAAYewQAGEouHo/3KD8U6K5JYbO/jCU
 eGDx4yZIgy5lG2KQRZvQTJC2Ld9aXa+KMw9IMEX/nw5bZEHl9UqixENg/ytcDJKb
 spOJzbD95Ouabbf4oDND3Zk7MHih8VBrBPWqVPcJEJol9mw2qEc/D3OV0o3LxmuS
 hvHr/8z9X8IPVTbFvZ7cwzsAeVNyjYgrSI8TXqPnbYbtWDXfnTkrGBDiszhma3aS
 hkVAvddy2aDTJmqi2jzEit5acyk+Wp4reUMaY+rG6LeeKW4nN9AJx1IFNOtdhGWK
 zcxkhbhrbFFXBVPy/iqr/JD33opOCyDVBtoRJD2RX+XQ2tuAJpoJnN/WzPSgjwmL
 HyhHZIPBvmEXiI+RMtNRX+XdoVoxLIekv/FWlyEQ7vC/VqZZRHU1FUgNialzp/VD
 OfslevaPoZO76/j25d3SwB9fT5rVftGbLGY5a2CV5Qi3OUuKY9+iI5RqDORnV1L0
 BcQip9PyUuiqReMhjYRCwDhszfrBgj73BbCzOmT6OW7LDyvUuX2Sqa5T7HDtOqoA
 pBGt6UoGajQ7a0YlVoUE1tIiNRHIma7PQOgPxaw0vCgF5kYiaOXcztGhFBw76pcO
 J0MYbwvbKq9IX8w1q36NjEi8pAygGKSvA7KadA4ZmTFeJ1i7be29na0OSln1kTEs
 tQBx4uRjiCccFH1ius3W
 =fuGJ
 -----END PGP SIGNATURE-----
 

[flang][fir] Lower `do concurrent` loop nests to `fir.do_concurrent` (#137928)

Adds support for lowering `do concurrent` nests from PFT to the new
`fir.do_concurrent` MLIR op as well as its special terminator
`fir.do_concurrent.loop` which models the actual loop nest.

To that end, this PR emits the allocations for the iteration variables
within the block of the `fir.do_concurrent` op and creates a region for
the `fir.do_concurrent.loop` op that accepts arguments equal in number
to the number of the input `do concurrent` iteration ranges.

For example, given the following input:
```fortran
   do concurrent(i=1:10, j=11:20)
   end do
```
the changes in this PR emit the following MLIR:
```mlir
    fir.do_concurrent {
      %22 = fir.alloca i32 {bindc_name = "i"}
      %23:2 = hlfir.declare %22 {uniq_name = "_QFsub1Ei"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
      %24 = fir.alloca i32 {bindc_name = "j"}
      %25:2 = hlfir.declare %24 {uniq_name = "_QFsub1Ej"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
      fir.do_concurrent.loop (%arg1, %arg2) = (%18, %20) to (%19, %21) step (%c1, %c1_0) {
        %26 = fir.convert %arg1 : (index) -> i32
        fir.store %26 to %23#0 : !fir.ref<i32>
        %27 = fir.convert %arg2 : (index) -> i32
        fir.store %27 to %25#0 : !fir.ref<i32>
      }
    }
```