anchor.diff:          INTEGER(LIBXSMM_INT_KIND), PARAMETER ::                         &
        &    LIBXSMM_ALIGNMENT = $ALIGNMENT
           INTEGER(LIBXSMM_INT_KIND), PARAMETER ::                         &
  -     &    LIBXSMM_ALIGNED_STORES = $ALIGNED_STORES
  -        INTEGER(LIBXSMM_INT_KIND), PARAMETER ::                         &
  -     &    LIBXSMM_ALIGNED_LOADS = $ALIGNED_LOADS
  -        INTEGER(LIBXSMM_INT_KIND), PARAMETER ::                         &
  -     &    LIBXSMM_ALIGNED_MAX = $ALIGNED_MAX
  -        INTEGER(LIBXSMM_INT_KIND), PARAMETER ::                         &
        &    LIBXSMM_PREFETCH = $PREFETCH
           INTEGER(LIBXSMM_INT_KIND), PARAMETER ::                         &
        &    LIBXSMM_ROW_MAJOR = $ROW_MAJOR
  
positive.code:      &    LIBXSMM_PREFETCH_AL2BL2_VIA_C_AHEAD = IOR(                    &
       &        LIBXSMM_PREFETCH_BL2_VIA_C, LIBXSMM_PREFETCH_AL2_AHEAD)
  
          ! Structure providing the actual/extended arguments of an SGEMM call.
          TYPE, BIND(C) :: LIBXSMM_SGEMM_XARGS
            ! The Alpha and Beta arguments.
            REAL(C_FLOAT) :: alpha, beta
            ! The prefetch arguments.
            TYPE(C_PTR) :: pa, pb, pc
          END TYPE
          ! Constructs an actual/extended argument set for an SGEMM call.
          INTERFACE LIBXSMM_SGEMM_XARGS_INTERFACE
            MODULE PROCEDURE LIBXSMM_SGEMM_XARGS_CTOR
          END INTERFACE
  
          ! Structure providing the actual/extended arguments of a DGEMM call.
          TYPE, BIND(C) :: LIBXSMM_DGEMM_XARGS
            ! The Alpha and Beta arguments.
            REAL(C_DOUBLE) :: alpha, beta
            ! The prefetch arguments.
            TYPE(C_PTR) :: pa, pb, pc
          END TYPE
          ! Constructs an actual/extended argument set for an SGEMM call.
          INTERFACE LIBXSMM_DGEMM_XARGS_INTERFACE
            MODULE PROCEDURE LIBXSMM_DGEMM_XARGS_CTOR
          END INTERFACE
  
          ! Overloaded dispatch/JIT routines (single/double precision).
          INTERFACE libxsmm_dispatch
            MODULE PROCEDURE sdispatch, ddispatch, xdispatch
          END INTERFACE
  
          ! Overloaded BLAS routines (single/double precision).
          INTERFACE libxsmm_blasmm
            MODULE PROCEDURE libxsmm_sblasmm, libxsmm_dblasmm
          END INTERFACE
  
          ! Overloaded auto-dispatch routines (single/double precision).
          INTERFACE libxsmm_mm
            MODULE PROCEDURE libxsmm_smm, libxsmm_dmm
          END INTERFACE
  
          ! Type of a function generated for a specific M, N, K, and Alpha, Beta.
          ABSTRACT INTERFACE
            PURE SUBROUTINE LIBXSMM_SMM_FUNCTION(a, b, c, xargs) BIND(C)
              IMPORT :: C_FLOAT, LIBXSMM_SGEMM_XARGS
              REAL(C_FLOAT), INTENT(IN) :: a(*), b(*)
              REAL(C_FLOAT), INTENT(INOUT) :: c(*)
              TYPE(LIBXSMM_SGEMM_XARGS), INTENT(IN) :: xargs
            END SUBROUTINE
            PURE SUBROUTINE LIBXSMM_DMM_FUNCTION(a, b, c, xargs) BIND(C)
              IMPORT :: C_DOUBLE, LIBXSMM_DGEMM_XARGS
              REAL(C_DOUBLE), INTENT(IN) :: a(*), b(*)
              REAL(C_DOUBLE), INTENT(INOUT) :: c(*)
              TYPE(LIBXSMM_DGEMM_XARGS), INTENT(IN) :: xargs
            END SUBROUTINE
          END INTERFACE
  
          !DIR$ ATTRIBUTES OFFLOAD:MIC :: sgemm, dgemm
          !DIR$ ATTRIBUTES OFFLOAD:MIC :: libxsmm_init, libxsmm_sdispatch, libxsmm_ddispatch
          !DIR$ ATTRIBUTES OFFLOAD:MIC :: libxsmm_timer_tick, libxsmm_timer_duration
          INTERFACE
            SUBROUTINE sgemm(                                             &
  
negative.code: 
            ! Query or JIT-generate a function; return zero if it does not exist,
            ! or if JIT is not supported (single-precision).
            TYPE(C_FUNPTR) PURE FUNCTION libxsmm_sdispatch0(              &
       &    m, n, k, lda, ldb, ldc, flags)                                &
       &    BIND(C, NAME="libxsmm_sdispatch")
              IMPORT :: C_FUNPTR, C_INT
              INTEGER(C_INT), INTENT(IN), VALUE :: m, n, k, lda, ldb, ldc
              INTEGER(C_INT), INTENT(IN), VALUE :: flags
            END FUNCTION
            ! Query or JIT-generate a function; return zero if it does not exist,
            ! or if JIT is not supported (double-precision).
            TYPE(C_FUNPTR) PURE FUNCTION libxsmm_ddispatch0(              &
       &    m, n, k, lda, ldb, ldc, flags)                                &
       &    BIND(C, NAME="libxsmm_ddispatch")
              IMPORT :: C_FUNPTR, C_INT
              INTEGER(C_INT), INTENT(IN), VALUE :: m, n, k, lda, ldb, ldc
              INTEGER(C_INT), INTENT(IN), VALUE :: flags
            END FUNCTION
  
            ! Query or JIT-generate a function; return zero if it does not exist,
            ! or if JIT is not supported (single-precision).
            TYPE(C_FUNPTR) PURE FUNCTION libxsmm_sdispatch1(              &
       &    m, n, k, lda, ldb, ldc, flags, prefetch) BIND(C)
              IMPORT :: C_FUNPTR, C_INT
              INTEGER(C_INT), INTENT(IN), VALUE :: m, n, k, lda, ldb, ldc
              INTEGER(C_INT), INTENT(IN), VALUE :: flags, prefetch
            END FUNCTION
            ! Query or JIT-generate a function; return zero if it does not exist,
            ! or if JIT is not supported (double-precision).
            TYPE(C_FUNPTR) PURE FUNCTION libxsmm_ddispatch1(              &
       &    m, n, k, lda, ldb, ldc, flags, prefetch) BIND(C)
              IMPORT :: C_FUNPTR, C_INT
              INTEGER(C_INT), INTENT(IN), VALUE :: m, n, k, lda, ldb, ldc
              INTEGER(C_INT), INTENT(IN), VALUE :: flags, prefetch
            END FUNCTION
  
            ! Query or JIT-generate a function; return zero if it does not exist,
            ! or if JIT is not supported (single-precision).
            TYPE(C_FUNPTR) PURE FUNCTION libxsmm_sdispatch2(              &
       &    m, n, k, lda, ldb, ldc, flags, prefetch, alpha, beta) BIND(C)
              IMPORT :: C_FUNPTR, C_FLOAT, C_INT
              INTEGER(C_INT), INTENT(IN), VALUE :: m, n, k, lda, ldb, ldc
              INTEGER(C_INT), INTENT(IN), VALUE :: flags, prefetch
              REAL(C_FLOAT),  INTENT(IN), VALUE :: alpha, beta
            END FUNCTION
            ! Query or JIT-generate a function; return zero if it does not exist,
            ! or if JIT is not supported (double-precision).
            TYPE(C_FUNPTR) PURE FUNCTION libxsmm_ddispatch2(              &
       &    m, n, k, lda, ldb, ldc, flags, prefetch, alpha, beta) BIND(C)
              IMPORT :: C_FUNPTR, C_DOUBLE, C_INT
              INTEGER(C_INT), INTENT(IN), VALUE :: m, n, k, lda, ldb, ldc
              INTEGER(C_INT), INTENT(IN), VALUE :: flags, prefetch
              REAL(C_DOUBLE), INTENT(IN), VALUE :: alpha, beta
            END FUNCTION
  
            ! Non-pure function returning the current clock tick
  