1 ! { dg-options "-std=legacy -floop-nest-optimize -O2" }
4 INTEGER, SAVE :: accdrv_binning_nbins
= 4096
5 INTEGER, SAVE :: accdrv_binning_binsize
= 16
6 INTEGER, PARAMETER, PUBLIC
:: dbcsr_ps_width
= 7
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
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
)
24 bin_arr(:, bin_top(bin_id
), bin_id
) = val(:)
25 bin_top(bin_id
) = bin_top(bin_id
) + 1
27 END SUBROUTINE stack_binning