anchor.diff:    IF (0.NE.check) THEN
       WRITE(*, "(1A,A,F10.1,A)") CHAR(9), "diff:       ", MAXVAL((c(:,:) - d(:,:)) * (c(:,:) - d(:,:)))
     END IF
  -  c(:,:) = 0
  -
  -  f = libxsmm_dispatch(m, n, k, T)
  -  IF (C_ASSOCIATED(f)) THEN
  -    CALL C_F_PROCPOINTER(f, xmm)
  +
  +  CALL libxsmm_dispatch(xmm, m, n, k)
  +  IF (libxsmm_available(xmm)) THEN
  +    c(:,:) = 0
       WRITE(*, "(A)") "Streamed... (specialized)"
  -    !$OMP PARALLEL PRIVATE(i, start) !DEFAULT(NONE) SHARED(m, n, a, b, c, duration, xmm)
  -    ALLOCATE(tmp(libxsmm_align_value(libxsmm_ld(m,n),T,LIBXSMM_ALIGNED_STORES),libxsmm_ld(n,m)))
  +    !$OMP PARALLEL REDUCTION(+:c) PRIVATE(i, start) !DEFAULT(NONE) SHARED(m, n, a, b, duration, xmm)
  +    ALLOCATE(tmp(libxsmm_align_value(libxsmm_ld(m,n),8,LIBXSMM_ALIGNMENT),libxsmm_ld(n,m)))
       tmp(:,:) = 0
       !$OMP MASTER
       start = libxsmm_timer_tick()
       !$OMP END MASTER
       !$OMP DO
       DO i = LBOUND(a, 3), UBOUND(a, 3)
  -      CALL xmm(a(:,:,i), b(:,:,i), tmp)
  +      !CALL libxsmm_call(xmm, a(:,:,i), b(:,:,i), tmp) ! gfortran issue
  +      CALL libxsmm_dcall_abc(xmm, a(:,:,i), b(:,:,i), tmp)
       END DO
       !$OMP MASTER
       duration = libxsmm_timer_duration(start, libxsmm_timer_tick())
       !$OMP END MASTER
  -    !$OMP CRITICAL
       c(:,:) = c(:,:) + tmp(:UBOUND(c,1),:)
  -    !$OMP END CRITICAL
       ! Deallocate thread-local arrays
       DEALLOCATE(tmp)
       !$OMP END PARALLEL
  
positive.code:   !$OMP MASTER
    duration = libxsmm_timer_duration(start, libxsmm_timer_tick())
    !$OMP END MASTER
    !$OMP CRITICAL
    c(:,:) = c(:,:) + tmp(:UBOUND(c,1),:)
    !$OMP END CRITICAL
    ! Deallocate thread-local arrays
    DEALLOCATE(tmp)
    !$OMP END PARALLEL
  
negative.code:         (2D0 * s * m * n * k * 1D-9 / duration), " GFLOPS/s"
        WRITE(*, "(1A,A,F10.1,A)") CHAR(9), "bandwidth:  ", &
          (s * (m * k + k * n) * T / (duration * ISHFT(1_8, 30))), " GB/s"
      END IF
      WRITE(*, "(1A,A,F10.1,A)") CHAR(9), "duration:   ", 1D3 * duration, " ms"
    END SUBROUTINE
  END PROGRAM
  