|
| 1 | +! RUN: %python %S/test_folding.py %s %flang_fc1 |
| 2 | +! Tests folding of FINDLOC, MAXLOC, & MINLOC |
| 3 | +module m1 |
| 4 | + integer, parameter :: ia1(2:6) = [1, 2, 3, 2, 1] |
| 5 | + integer, parameter :: ia2(2:3,2:4) = reshape([1, 2, 3, 3, 2, 1], shape(ia2)) |
| 6 | + |
| 7 | + logical, parameter :: test_fi1a = all(findloc(ia1, 1) == 1) |
| 8 | + logical, parameter :: test_fi1ar = rank(findloc(ia1, 1)) == 1 |
| 9 | + logical, parameter :: test_fi1ak = kind(findloc(ia1, 1, kind=2)) == 2 |
| 10 | + logical, parameter :: test_fi1ad = findloc(ia1, 1, dim=1) == 1 |
| 11 | + logical, parameter :: test_fi1adr = rank(findloc(ia1, 1, dim=1)) == 0 |
| 12 | + logical, parameter :: test_fi1b = all(findloc(ia1, 1, back=.true.) == 5) |
| 13 | + logical, parameter :: test_fi1c = all(findloc(ia1, 2, mask=[.false., .false., .true., .true., .true.]) == 4) |
| 14 | + |
| 15 | + logical, parameter :: test_fi2a = all(findloc(ia2, 1) == [1, 1]) |
| 16 | + logical, parameter :: test_fi2ar = rank(findloc(ia2, 1)) == 1 |
| 17 | + logical, parameter :: test_fi2b = all(findloc(ia2, 1, back=.true.) == [2, 3]) |
| 18 | + logical, parameter :: test_fi2c = all(findloc(ia2, 2, mask=reshape([.false., .false., .true., .true., .true., .false.], shape(ia2))) == [1, 3]) |
| 19 | + logical, parameter :: test_fi2d = all(findloc(ia2, 1, dim=1) == [1, 0, 2]) |
| 20 | + logical, parameter :: test_fi2e = all(findloc(ia2, 1, dim=2) == [1, 3]) |
| 21 | + |
| 22 | + logical, parameter :: test_xi1a = all(maxloc(ia1) == 3) |
| 23 | + logical, parameter :: test_xi1ar = rank(maxloc(ia1)) == 1 |
| 24 | + logical, parameter :: test_xi1ak = kind(maxloc(ia1, kind=2)) == 2 |
| 25 | + logical, parameter :: test_xi1ad = maxloc(ia1, dim=1) == 3 |
| 26 | + logical, parameter :: test_xi1adr = rank(maxloc(ia1, dim=1)) == 0 |
| 27 | + logical, parameter :: test_xi1b = all(maxloc(ia1, back=.true.) == 3) |
| 28 | + logical, parameter :: test_xi1c = all(maxloc(ia1, mask=[.false., .true., .false., .true., .true.]) == 2) |
| 29 | + logical, parameter :: test_xi1d = all(maxloc(ia1, mask=[.false., .true., .false., .true., .true.], back=.true.) == 4) |
| 30 | + |
| 31 | + logical, parameter :: test_xi2a = all(maxloc(ia2) == [1, 2]) |
| 32 | + logical, parameter :: test_xi2ar = rank(maxloc(ia2)) == 1 |
| 33 | + logical, parameter :: test_xi2b = all(maxloc(ia2, back=.true.) == [2, 2]) |
| 34 | + logical, parameter :: test_xi2c = all(maxloc(ia2, mask=reshape([.false., .true., .true., .true., .true., .true.], shape(ia2))) == [1, 2]) |
| 35 | + logical, parameter :: test_xi2d = all(maxloc(ia2, mask=reshape([.false., .true., .true., .true., .true., .true.], shape(ia2)), back=.true.) == [2, 2]) |
| 36 | + logical, parameter :: test_xi2e = all(maxloc(ia2, dim=1) == [2, 1, 1]) |
| 37 | + logical, parameter :: test_xi2f = all(maxloc(ia2, dim=1, back=.true.) == [2, 2, 1]) |
| 38 | + logical, parameter :: test_xi2g = all(maxloc(ia2, dim=2) == [2, 2]) |
| 39 | + |
| 40 | + logical, parameter :: test_ni1a = all(minloc(ia1) == 1) |
| 41 | + logical, parameter :: test_ni1ar = rank(minloc(ia1)) == 1 |
| 42 | + logical, parameter :: test_ni1ak = kind(minloc(ia1, kind=2)) == 2 |
| 43 | + logical, parameter :: test_ni1ad = minloc(ia1, dim=1) == 1 |
| 44 | + logical, parameter :: test_ni1adr = rank(minloc(ia1, dim=1)) == 0 |
| 45 | + logical, parameter :: test_ni1b = all(minloc(ia1, back=.true.) == 5) |
| 46 | + logical, parameter :: test_ni1c = all(minloc(ia1, mask=[.false., .true., .true., .true., .false.]) == 2) |
| 47 | + logical, parameter :: test_ni1d = all(minloc(ia1, mask=[.false., .true., .true., .true., .false.], back=.true.) == 4) |
| 48 | + |
| 49 | + logical, parameter :: test_ni2a = all(minloc(ia2) == [1, 1]) |
| 50 | + logical, parameter :: test_ni2ar = rank(minloc(ia2)) == 1 |
| 51 | + logical, parameter :: test_ni2b = all(minloc(ia2, back=.true.) == [2, 3]) |
| 52 | + logical, parameter :: test_ni2c = all(minloc(ia2, mask=reshape([.false., .true., .true., .false., .true., .false.], shape(ia2))) == [2, 1]) |
| 53 | + logical, parameter :: test_ni2d = all(minloc(ia2, mask=reshape([.false., .true., .true., .false., .true., .false.], shape(ia2)), back=.true.) == [1, 3]) |
| 54 | + logical, parameter :: test_ni2e = all(minloc(ia2, dim=1) == [1, 1, 2]) |
| 55 | + logical, parameter :: test_ni2f = all(minloc(ia2, dim=1, back=.true.) == [1, 2, 2]) |
| 56 | + logical, parameter :: test_ni2g = all(minloc(ia2, dim=2) == [1, 3]) |
| 57 | +end module |
0 commit comments