anchor.diff:      INTEGER(LIBXSMM_INTEGER_TYPE), INTENT(IN) :: m, n, k
       REAL(LIBXSMM_DOUBLE_PRECISION), INTENT(IN) :: a($SHAPE_A), b($SHAPE_B)
       REAL(LIBXSMM_DOUBLE_PRECISION), INTENT(INOUT) :: c($SHAPE_C)
  -    !LIBXSMM_IMM(LIBXSMM_DOUBLE_PRECISION, LIBXSMM_INTEGER_TYPE, m, n, k, a, b, c)
  +    c = c + MERGE(MATMUL(a, b), RESHAPE(MATMUL(RESHAPE(b, (/n,k/)), RESHAPE(a, (/k,m/))), (/m,n/)), 0.NE.LIBXSMM_COL_MAJOR)
     END SUBROUTINE
   
     ! Query the pointer of a generated function; zero if it does not exist.
  
positive.code:     INTEGER(LIBXSMM_INTEGER_TYPE), INTENT(IN) :: m, n, k
      REAL(LIBXSMM_SINGLE_PRECISION), INTENT(IN) :: a($SHAPE_A), b($SHAPE_B)
      REAL(LIBXSMM_SINGLE_PRECISION), INTENT(INOUT) :: c($SHAPE_C)
      !LIBXSMM_IMM(LIBXSMM_SINGLE_PRECISION, LIBXSMM_INTEGER_TYPE, m, n, k, a, b, c)
    END SUBROUTINE
  
    ! Non-dispatched matrix-matrix multiplication using inline code; double-precision.
  
negative.code:     REAL(LIBXSMM_SINGLE_PRECISION), INTENT(IN) :: a($SHAPE_A), b($SHAPE_B)
      REAL(LIBXSMM_SINGLE_PRECISION), INTENT(INOUT) :: c($SHAPE_C)
      REAL(LIBXSMM_SINGLE_PRECISION), PARAMETER :: alpha = 1, beta = 1
      INTERFACE
        SUBROUTINE sgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
          IMPORT LIBXSMM_INTEGER_TYPE, LIBXSMM_SINGLE_PRECISION
          CHARACTER(1), INTENT(IN) :: transa, transb
          INTEGER(LIBXSMM_INTEGER_TYPE), INTENT(IN) :: m, n, k, lda, ldb, ldc
          REAL(LIBXSMM_SINGLE_PRECISION), INTENT(IN) :: a(lda,*), b(ldb,*), alpha, beta
          REAL(LIBXSMM_SINGLE_PRECISION), INTENT(INOUT) :: c(ldc,*)
        END SUBROUTINE
      END INTERFACE
      !DIR$ ATTRIBUTES OFFLOAD:MIC :: sgemm
      CALL sgemm('N', 'N', libxsmm_ld(m, n), libxsmm_ld(n, m), k, alpha, &
        MERGE(a, b, 0.NE.LIBXSMM_COL_MAJOR), libxsmm_ld(m, n), &
        MERGE(b, a, 0.NE.LIBXSMM_COL_MAJOR), k, &
        beta, c, libxsmm_ldc(m, n, LIBXSMM_SINGLE_PRECISION))
    END SUBROUTINE
  