blob: 24b85e3b0d63be6c5b239ae25246d5ba0f893d48 [file] [log] [blame]
! { dg-options "-floop-nest-optimize -O2" }
MODULE dbcsr_index_operations
INTERFACE dbcsr_build_row_index
END INTERFACE
CONTAINS
SUBROUTINE merge_index_arrays (new_row_i, new_col_i, new_blk_p, new_size,&
old_row_i, old_col_i, old_blk_p, old_size,&
add_ip, add_size, new_blk_d, old_blk_d,&
added_size_offset, added_sizes, added_size, added_nblks, error)
INTEGER, DIMENSION(new_size), &
INTENT(OUT) :: new_blk_p, new_col_i, &
new_row_i
INTEGER, INTENT(IN) :: old_size
INTEGER, DIMENSION(old_size), INTENT(IN) :: old_blk_p, old_col_i, &
old_row_i
INTEGER, DIMENSION(new_size), &
INTENT(OUT), OPTIONAL :: new_blk_d
INTEGER, DIMENSION(old_size), &
INTENT(IN), OPTIONAL :: old_blk_d
INTEGER, DIMENSION(:), INTENT(IN), &
OPTIONAL :: added_sizes
INTEGER, INTENT(OUT), OPTIONAL :: added_size, added_nblks
LOGICAL :: multidata
IF (add_size .GT. 0) THEN
IF (old_size .EQ. 0) THEN
IF (PRESENT (added_size)) added_size = SUM (added_sizes)
ENDIF
ELSE
new_row_i(1:old_size) = old_row_i(1:old_size)
new_col_i(1:old_size) = old_col_i(1:old_size)
new_blk_p(1:old_size) = old_blk_p(1:old_size)
IF (multidata) new_blk_d(1:old_size) = old_blk_d(1:old_size)
ENDIF
END SUBROUTINE merge_index_arrays
END MODULE dbcsr_index_operations