message: Newer xlC versions throw an error with this workaround.
  Solution is to look for __bg__ preprocessor symbol. Could also check
  the version in __IBMCPP__, but this requires compound logic to support
  other compilers that do not define the symbol.
diff: @@ -474,7 +474,7 @@ template <typename scalar_t, typename layout_t, typename data_t>
  inline scalar_t TDet(const layout_t &a, const data_t &A)
  {
  MFEM_STATIC_ASSERT(layout_t::rank == 2, "invalid rank");
  -#ifndef __xlC__
  +#ifndef __bg__
  return internal::MatrixOps<layout_t::dim_1,layout_t::dim_2>::
  template Det<scalar_t>(a, A);
  #else
  @@ -490,7 +490,7 @@ template <AssignOp::Type Op, typename A_layout_t, typename A_data_t,
  inline void TDet(const A_layout_t &a, const A_data_t &A, D_data_t &D)
  {
  MFEM_STATIC_ASSERT(A_layout_t::rank == 3, "invalid rank");
  -#ifndef __xlC__
  +#ifndef __bg__
  internal::MatrixOps<A_layout_t::dim_2,A_layout_t::dim_3>::
  template Det<Op>(a, A, D);
  #else
  