blob: e68d6e71118d77a0a4fcd7b796d544ce2ce13ea4 [file] [log] [blame]
! { 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