1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
! { dg-options "-O3 -floop-block" }
MODULE util
INTEGER, PARAMETER :: int_4=4
INTERFACE sort
MODULE PROCEDURE sort_int_4v
END INTERFACE
CONTAINS
SUBROUTINE sort_int_4v ( arr, n, index )
INTEGER(KIND=int_4), INTENT(INOUT) :: arr(1:n)
INTEGER, INTENT(OUT) :: INDEX(1:n)
DO i = 1, n
INDEX(i) = i
END DO
1 IF (ir-l<m) THEN
DO j = l + 1, ir
DO i = j - 1, 1, -1
IF (arr(i)<=a) GO TO 2
arr(i+1) = arr(i)
INDEX(i+1) = INDEX(i)
END DO
2 arr(i+1) = a
END DO
END IF
END SUBROUTINE sort_int_4v
SUBROUTINE create_destination_list(list)
INTEGER, DIMENSION(:, :, :), POINTER :: list
INTEGER :: icpu, ncpu, stat, ultimate_max
INTEGER, ALLOCATABLE, DIMENSION(:) :: index, sublist
ultimate_max=7
ALLOCATE(INDEX(ultimate_max),STAT=stat)
CALL t(stat==0)
ALLOCATE(sublist(ultimate_max),STAT=stat)
DO icpu=0,ncpu-1
CALL sort(sublist,ultimate_max,index)
list(1,:,icpu)=sublist
list(2,:,icpu)=0
ENDDO
END SUBROUTINE create_destination_list
END MODULE
|