1! { dg-options "-std=legacy -floop-nest-optimize -O2" }
2
3MODULE dbcsr_mm_accdrv
4  INTEGER, SAVE :: accdrv_binning_nbins = 4096
5  INTEGER, SAVE :: accdrv_binning_binsize = 16
6  INTEGER, PARAMETER, PUBLIC :: dbcsr_ps_width = 7
7  CONTAINS
8  SUBROUTINE stack_binning(params_in, params_out, stack_size)
9    INTEGER, INTENT(IN)                      :: stack_size
10    INTEGER, DIMENSION(dbcsr_ps_width, &
11      stack_size), INTENT(OUT)               :: params_out
12    INTEGER, DIMENSION(dbcsr_ps_width, &
13      stack_size), INTENT(IN)                :: params_in
14    INTEGER, DIMENSION(accdrv_binning_nbins) :: bin_top
15    INTEGER, DIMENSION(dbcsr_ps_width)       :: val
16    INTEGER, DIMENSION(dbcsr_ps_width, &
17      accdrv_binning_binsize, &
18      accdrv_binning_nbins)                  :: bin_arr
19     DO i=1,stack_size
20        val(:) = params_in(:,i)
21        IF(bin_top(bin_id) > accdrv_binning_binsize) THEN
22           params_out(:, top:top+bin_top(bin_id)-2) = bin_arr(:, 1:bin_top(bin_id)-1, bin_id)
23        ENDIF
24        bin_arr(:, bin_top(bin_id), bin_id) =  val(:)
25        bin_top(bin_id) = bin_top(bin_id) + 1
26     END DO
27  END SUBROUTINE  stack_binning
28END MODULE
29