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