anchor.diff:        !$OMP END MASTER
         !$OMP DO
         DO i = LBOUND(a, 1), UBOUND(a, 1)
  -        CALL libxsmm_imm(m, n, k, a(i,:,:), b(i,:,:), tmp)
  +        CALL libxsmm_imm(m, n, k, a(i)%matrix, b(i)%matrix, tmp)
         END DO
         !$OMP MASTER
         !$ duration = duration + omp_get_wtime()
  
positive.code:   END IF
  
    ! Deallocate global arrays
    DEALLOCATE(a)
    DEALLOCATE(b)
    DEALLOCATE(c)
  
negative.code:   END IF
    s = LSHIFT(INT8(MAX(i, 0)), 30) / ((m * k + k * n + m * n) * T)
  
    ALLOCATE(c(m,n))
    ALLOCATE(a(s))
    ALLOCATE(b(s))
  
    ! Initialize a, b
    !@TODO figure out how to allocate a,b matrices cont. without
    ! 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
      ALLOCATE( a(i)%matrix(m, k) )
      CALL init(42, a(i)%matrix(:, :), i - 1)
      ALLOCATE( b(i)%matrix(k, n) )
      CALL init(24, b(i)%matrix(:, :), i - 1)
    END DO 
    c(:,:) = 0
  
    WRITE (*, "(A,I3,A,I3,A,I3,A,I6)") "m=", m, " n=", n, " k=", k, " size=", UBOUND(a, 1) 
  