mirror of
https://github.com/autc04/Retro68.git
synced 2024-06-30 10:29:39 +00:00
29 lines
1.1 KiB
Fortran
29 lines
1.1 KiB
Fortran
! { dg-options "-std=legacy -floop-nest-optimize -O2" }
|
|
|
|
MODULE dbcsr_mm_accdrv
|
|
INTEGER, SAVE :: accdrv_binning_nbins = 4096
|
|
INTEGER, SAVE :: accdrv_binning_binsize = 16
|
|
INTEGER, PARAMETER, PUBLIC :: dbcsr_ps_width = 7
|
|
CONTAINS
|
|
SUBROUTINE stack_binning(params_in, params_out, stack_size)
|
|
INTEGER, INTENT(IN) :: stack_size
|
|
INTEGER, DIMENSION(dbcsr_ps_width, &
|
|
stack_size), INTENT(OUT) :: params_out
|
|
INTEGER, DIMENSION(dbcsr_ps_width, &
|
|
stack_size), INTENT(IN) :: params_in
|
|
INTEGER, DIMENSION(accdrv_binning_nbins) :: bin_top
|
|
INTEGER, DIMENSION(dbcsr_ps_width) :: val
|
|
INTEGER, DIMENSION(dbcsr_ps_width, &
|
|
accdrv_binning_binsize, &
|
|
accdrv_binning_nbins) :: bin_arr
|
|
DO i=1,stack_size
|
|
val(:) = params_in(:,i)
|
|
IF(bin_top(bin_id) > accdrv_binning_binsize) THEN
|
|
params_out(:, top:top+bin_top(bin_id)-2) = bin_arr(:, 1:bin_top(bin_id)-1, bin_id)
|
|
ENDIF
|
|
bin_arr(:, bin_top(bin_id), bin_id) = val(:)
|
|
bin_top(bin_id) = bin_top(bin_id) + 1
|
|
END DO
|
|
END SUBROUTINE stack_binning
|
|
END MODULE
|