anchor.diff:    INTEGER, PARAMETER :: T = LIBXSMM_DOUBLE_PRECISION
     INTEGER, PARAMETER :: MAX_NTHREADS = 512
   
  -  TYPE :: libxsmm_matrix
  -    REAL(T), POINTER :: matrix(:,:)
  -  END TYPE libxsmm_matrix
  -
  -  TYPE(libxsmm_matrix), ALLOCATABLE, TARGET :: a(:), b(:)
  +  REAL(T), ALLOCATABLE, TARGET :: a(:,:,:), b(:,:,:)
     REAL(T), ALLOCATABLE, TARGET :: c(:,:), d(:,:)
     REAL(T), ALLOCATABLE, TARGET, SAVE :: tmp(:,:)
     !DIR$ ATTRIBUTES ALIGN:LIBXSMM_ALIGNED_MAX :: a, b, c, tmp
     !$OMP THREADPRIVATE(tmp)
  -!  PROCEDURE(LIBXSMM_XMM_FUNCTION), POINTER :: xmm     ! Fully ploymorph variant
  -  PROCEDURE(LIBXSMM_DMM_FUNCTION), POINTER :: dmm
  +  PROCEDURE(LIBXSMM_XMM_FUNCTION), POINTER :: xmm     ! Fully ploymorph variant
  +  PROCEDURE(LIBXSMM_DMM_FUNCTION), POINTER :: dmm     ! double precision variant
     INTEGER :: argc, m, n, k, ld, routine, check
     INTEGER(8) :: i, s
     CHARACTER(32) :: argv
  
positive.code:   ELSE
      f = MERGE(libxsmm_mm_dispatch(m, n, k, T), C_NULL_FUNPTR, 0.EQ.routine)
      IF (C_ASSOCIATED(f)) THEN
  !      CALL C_F_PROCPOINTER(f, xmm)     ! Fully polymorph variant
        CALL C_F_PROCPOINTER(f, dmm)
        WRITE(*, "(A)") "Streamed... (specialized)"
        !$OMP PARALLEL PRIVATE(i) !DEFAULT(NONE) SHARED(duration, a, b, c, m, n, dmm)
        ALLOCATE(tmp(libxsmm_align_value(libxsmm_ld(m,n),T,LIBXSMM_ALIGNED_STORES),libxsmm_ld(n,m)))
        tmp(:,:) = 0
        !$OMP MASTER
        !$ duration = -omp_get_wtime()
        !$OMP END MASTER
        !$OMP DO
        DO i = LBOUND(a, 1), UBOUND(a, 1)
  !        This in case of a polymorph call, we need C_LOC :-(, however the next line
  !        violates Fortran standard :-(
  !        CALL xmm(C_LOC(a(i)%matrix(:,:)), C_LOC(b(i)%matrix(:,:)), C_LOC(tmp))
          CALL dmm(a(i)%matrix, b(i)%matrix, tmp)
        END DO
        !$OMP MASTER
        !$ duration = duration + omp_get_wtime()
  
negative.code:   s = LSHIFT(INT8(MAX(i, 0)), 30) / ((m * k + k * n + m * n) * T)
  
    ALLOCATE(c(m,n))
    ALLOCATE(a(m,k,s))
    ALLOCATE(b(k,n,s))
  
    ! Initialize a, b
    ! additional copies when call LIBXSMM in the F90 compiler
    !$OMP PARALLEL DO PRIVATE(i) DEFAULT(NONE) SHARED(a, b, m, n, k, s)
    DO i = 1, s
      CALL init(42, a(:, :, i), i - 1)
      CALL init(24, b(:, :, i), i - 1)
    END DO 
    c(:,:) = 0
  
  