72    integer, 
intent(in) :: nv, nu
 
   73    real(kind=
rp), 
intent(inout) :: v(nv*nv), u(nu*nu)
 
   74    real(kind=
rp), 
intent(inout) :: a(nv,nu), bt(nu,nv)
 
   75    real(kind=
rp) :: work(0:nu**2*nv)
 
   77    call mxm(a, nv, u, nu, work, nu)
 
   78    call mxm(work, nv, bt, nu, v, nv)
 
 
   83    integer, 
intent(in) :: nv, nu
 
   84    real(kind=
rp), 
intent(inout) :: v(nv*nv*nv), u(nu*nu*nu)
 
   85    real(kind=
rp), 
intent(inout) :: a(nv,nu),bt(nu, nv),ct(nu,nv)
 
   86    real(kind=
rp) :: work(0:nu**2*nv), work2(0:nu*nv**2)
 
   87    integer :: i, nunu, nvnu, nvnv
 
   93    call mxm(a, nv, u(1), nu ,work, nunu)
 
   95       call mxm(work(nvnu*i), nv, bt, nu, work2(nv*nv*i), nv)
 
   97    call mxm(work2, nvnv, ct, nu, v(1), nv)
 
 
  102    integer, 
intent(in) :: nv, nu, nelv
 
  103    real(kind=
rp), 
intent(inout) :: v(nv*nv*nv,nelv)
 
  104    real(kind=
rp), 
intent(in) :: u(nu*nu*nu,nelv)
 
  105    real(kind=
rp), 
intent(in) :: a(nv,nu), bt(nu, nv), ct(nu,nv)
 
  106    real(kind=
rp) :: work(0:nu**2*nv), work2(0:nu*nv**2)
 
  107    integer :: ie, i, nunu, nvnu, nvnv
 
  114       call mxm(a, nv, u(1,ie), nu, work, nunu)
 
  116          call mxm(work(nvnu*i), nv, bt, nu, work2(nv*nv*i), nv)
 
  118       call mxm(work2, nvnv, ct, nu, v(1,ie), nv)
 
 
  124    integer, 
intent(in) :: nv, nu, nelv
 
  125    real(kind=
rp), 
intent(inout) :: v(nv*nv*nv*nelv)
 
  126    real(kind=
rp), 
intent(inout) :: a(nv,nu), bt(nu, nv), ct(nu,nv)
 
  127    real(kind=
rp) :: work(0:nu**2*nv), work2(0:nu*nv**2)
 
  128    integer :: e, e0, ee, es, iu, iv, i, nu3, nv3
 
  146       call mxm(a, nv, v(iu), nu, work, nu*nu)
 
  148          call mxm(work(nv*nu*i), nv, bt, nu, work2(nv*nv*i), nv)
 
  150       call mxm(work2, nv*nv, ct, nu, v(iv), nv)
 
 
Wrapper for all matrix-matrix product implementations.
 
subroutine, public mxm(a, n1, b, n2, c, n3)
Compute matrix-matrix product  for contiguously packed matrices A,B, and C.
 
integer, parameter, public rp
Global precision used in computations.
 
Tensor operations libxsmm backend.
 
subroutine, public tnsr3d_el_xsmm(v, nv, u, nu, a, bt, ct)
 
subroutine, public tnsr3d_xsmm(v, nv, u, nu, a, bt, ct, nelv)
 
subroutine, public tnsr2d_el_xsmm(v, nv, u, nu, a, bt)
 
subroutine, public tnsr1_3d_xsmm(v, nv, nu, a, bt, ct, nelv)