diff --git a/CMakeLists.txt b/CMakeLists.txt
index 705448b83..00eb16da9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -100,7 +100,8 @@ endif()
if(ENABLE_MKLCPU_BACKEND
OR ENABLE_MKLGPU_BACKEND
OR ENABLE_CUSOLVER_BACKEND
- OR ENABLE_ROCSOLVER_BACKEND)
+ OR ENABLE_ROCSOLVER_BACKEND
+ OR ENABLE_ARMPL_BACKEND)
list(APPEND DOMAINS_LIST "lapack")
endif()
if(ENABLE_MKLCPU_BACKEND
diff --git a/README.md b/README.md
index 528e8081e..d5cffe813 100644
--- a/README.md
+++ b/README.md
@@ -251,12 +251,18 @@ Supported compilers include:
Dynamic, Static |
- LAPACK |
+ LAPACK |
x86 CPU |
Intel(R) oneMKL |
Intel DPC++ |
Dynamic, Static |
+
+ aarch64 CPU |
+ Arm Performance Libraries |
+ Open DPC++AdaptiveCpp |
+ Dynamic, Static |
+
Intel GPU |
Intel(R) oneMKL |
diff --git a/include/oneapi/math/detail/backends_table.hpp b/include/oneapi/math/detail/backends_table.hpp
index 48e5f98c6..0ecb43cd0 100644
--- a/include/oneapi/math/detail/backends_table.hpp
+++ b/include/oneapi/math/detail/backends_table.hpp
@@ -151,6 +151,13 @@ static std::map>> libraries =
LIB_NAME("lapack_mklcpu")
#endif
} },
+ { device::aarch64cpu,
+ {
+#ifdef ONEMATH_ENABLE_ARMPL_BACKEND
+ LIB_NAME("lapack_armpl"),
+#endif
+ } },
+
{ device::intelgpu,
{
#ifdef ONEMATH_ENABLE_MKLGPU_BACKEND
diff --git a/include/oneapi/math/lapack.hpp b/include/oneapi/math/lapack.hpp
index c862513c4..56202c301 100644
--- a/include/oneapi/math/lapack.hpp
+++ b/include/oneapi/math/lapack.hpp
@@ -33,5 +33,8 @@
#ifdef ONEMATH_ENABLE_ROCSOLVER_BACKEND
#include "oneapi/math/lapack/detail/rocsolver/lapack_ct.hpp"
#endif
+#ifdef ONEMATH_ENABLE_ARMPL_BACKEND
+#include "oneapi/math/lapack/detail/armpl/lapack_ct.hpp"
+#endif
#include "oneapi/math/lapack/detail/lapack_rt.hpp"
diff --git a/include/oneapi/math/lapack/detail/armpl/lapack_ct.hpp b/include/oneapi/math/lapack/detail/armpl/lapack_ct.hpp
new file mode 100644
index 000000000..eb2a08b56
--- /dev/null
+++ b/include/oneapi/math/lapack/detail/armpl/lapack_ct.hpp
@@ -0,0 +1,43 @@
+/*******************************************************************************
+* Copyright 2025 SiPearl
+* Copyright 2021 Intel Corporation
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions
+* and limitations under the License.
+*
+*
+* SPDX-License-Identifier: Apache-2.0
+*******************************************************************************/
+
+#pragma once
+
+#include
+#include
+
+#include
+
+#include "oneapi/math/types.hpp"
+#include "oneapi/math/lapack/types.hpp"
+#include "oneapi/math/detail/backend_selector.hpp"
+#include "oneapi/math/lapack/detail/armpl/onemath_lapack_armpl.hpp"
+
+namespace oneapi {
+namespace math {
+namespace lapack {
+
+#define LAPACK_BACKEND armpl
+#include "oneapi/math/lapack/detail/armpl/lapack_ct.hxx"
+#undef LAPACK_BACKEND
+
+} //namespace lapack
+} //namespace math
+} //namespace oneapi
diff --git a/include/oneapi/math/lapack/detail/armpl/lapack_ct.hxx b/include/oneapi/math/lapack/detail/armpl/lapack_ct.hxx
new file mode 100644
index 000000000..8442f1221
--- /dev/null
+++ b/include/oneapi/math/lapack/detail/armpl/lapack_ct.hxx
@@ -0,0 +1,2588 @@
+/*******************************************************************************
+* Copyright 2025 SiPearl
+* Copyright 2021 Intel Corporation
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions
+* and limitations under the License.
+*
+*
+* SPDX-License-Identifier: Apache-2.0
+*******************************************************************************/
+
+// Buffer APIs
+
+static inline void gebrd(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& d, sycl::buffer& e,
+ sycl::buffer>& tauq,
+ sycl::buffer>& taup,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gebrd(selector.get_queue(), m, n, a, lda, d, e, tauq, taup,
+ scratchpad, scratchpad_size);
+}
+static inline void gebrd(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& d,
+ sycl::buffer& e, sycl::buffer& tauq,
+ sycl::buffer& taup, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gebrd(selector.get_queue(), m, n, a, lda, d, e, tauq, taup,
+ scratchpad, scratchpad_size);
+}
+static inline void gebrd(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& d,
+ sycl::buffer& e, sycl::buffer& tauq,
+ sycl::buffer& taup, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gebrd(selector.get_queue(), m, n, a, lda, d, e, tauq, taup,
+ scratchpad, scratchpad_size);
+}
+static inline void gebrd(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& d, sycl::buffer& e,
+ sycl::buffer>& tauq,
+ sycl::buffer>& taup,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gebrd(selector.get_queue(), m, n, a, lda, d, e, tauq, taup,
+ scratchpad, scratchpad_size);
+}
+static inline void gerqf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& tau,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gerqf(selector.get_queue(), m, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void gerqf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& tau,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gerqf(selector.get_queue(), m, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void gerqf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer>& tau,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gerqf(selector.get_queue(), m, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void gerqf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer>& tau,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gerqf(selector.get_queue(), m, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void geqrf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer>& tau,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::geqrf(selector.get_queue(), m, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void geqrf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& tau,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::geqrf(selector.get_queue(), m, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void geqrf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& tau,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::geqrf(selector.get_queue(), m, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void geqrf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer>& tau,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::geqrf(selector.get_queue(), m, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void getrf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& ipiv,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getrf(selector.get_queue(), m, n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void getrf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& ipiv, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getrf(selector.get_queue(), m, n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void getrf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& ipiv,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getrf(selector.get_queue(), m, n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void getrf(backend_selector selector, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& ipiv,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getrf(selector.get_queue(), m, n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void getri(backend_selector selector, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& ipiv,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getri(selector.get_queue(), n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void getri(backend_selector selector, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& ipiv, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getri(selector.get_queue(), n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void getri(backend_selector selector, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& ipiv,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getri(selector.get_queue(), n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void getri(backend_selector selector, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& ipiv,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getri(selector.get_queue(), n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void getrs(backend_selector selector, oneapi::math::transpose trans,
+ std::int64_t n, std::int64_t nrhs, sycl::buffer>& a,
+ std::int64_t lda, sycl::buffer& ipiv,
+ sycl::buffer>& b, std::int64_t ldb,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getrs(selector.get_queue(), trans, n, nrhs, a, lda, ipiv, b, ldb,
+ scratchpad, scratchpad_size);
+}
+static inline void getrs(backend_selector selector, oneapi::math::transpose trans,
+ std::int64_t n, std::int64_t nrhs, sycl::buffer& a,
+ std::int64_t lda, sycl::buffer& ipiv,
+ sycl::buffer& b, std::int64_t ldb,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getrs(selector.get_queue(), trans, n, nrhs, a, lda, ipiv, b, ldb,
+ scratchpad, scratchpad_size);
+}
+static inline void getrs(backend_selector selector, oneapi::math::transpose trans,
+ std::int64_t n, std::int64_t nrhs, sycl::buffer& a,
+ std::int64_t lda, sycl::buffer& ipiv, sycl::buffer& b,
+ std::int64_t ldb, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getrs(selector.get_queue(), trans, n, nrhs, a, lda, ipiv, b, ldb,
+ scratchpad, scratchpad_size);
+}
+static inline void getrs(backend_selector selector, oneapi::math::transpose trans,
+ std::int64_t n, std::int64_t nrhs, sycl::buffer>& a,
+ std::int64_t lda, sycl::buffer& ipiv,
+ sycl::buffer>& b, std::int64_t ldb,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::getrs(selector.get_queue(), trans, n, nrhs, a, lda, ipiv, b, ldb,
+ scratchpad, scratchpad_size);
+}
+static inline void gesvd(backend_selector selector, oneapi::math::jobsvd jobu,
+ oneapi::math::jobsvd jobvt, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& s,
+ sycl::buffer& u, std::int64_t ldu, sycl::buffer& vt,
+ std::int64_t ldvt, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gesvd(selector.get_queue(), jobu, jobvt, m, n, a, lda, s, u, ldu,
+ vt, ldvt, scratchpad, scratchpad_size);
+}
+static inline void gesvd(backend_selector selector, oneapi::math::jobsvd jobu,
+ oneapi::math::jobsvd jobvt, std::int64_t m, std::int64_t n,
+ sycl::buffer& a, std::int64_t lda, sycl::buffer& s,
+ sycl::buffer& u, std::int64_t ldu, sycl::buffer& vt,
+ std::int64_t ldvt, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gesvd(selector.get_queue(), jobu, jobvt, m, n, a, lda, s, u, ldu,
+ vt, ldvt, scratchpad, scratchpad_size);
+}
+static inline void gesvd(backend_selector selector, oneapi::math::jobsvd jobu,
+ oneapi::math::jobsvd jobvt, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& s, sycl::buffer>& u,
+ std::int64_t ldu, sycl::buffer>& vt, std::int64_t ldvt,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gesvd(selector.get_queue(), jobu, jobvt, m, n, a, lda, s, u, ldu,
+ vt, ldvt, scratchpad, scratchpad_size);
+}
+static inline void gesvd(backend_selector selector, oneapi::math::jobsvd jobu,
+ oneapi::math::jobsvd jobvt, std::int64_t m, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& s, sycl::buffer>& u,
+ std::int64_t ldu, sycl::buffer>& vt,
+ std::int64_t ldvt, sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::gesvd(selector.get_queue(), jobu, jobvt, m, n, a, lda, s, u, ldu,
+ vt, ldvt, scratchpad, scratchpad_size);
+}
+static inline void heevd(backend_selector selector, oneapi::math::job jobz,
+ oneapi::math::uplo uplo, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& w, sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::heevd(selector.get_queue(), jobz, uplo, n, a, lda, w, scratchpad,
+ scratchpad_size);
+}
+static inline void heevd(backend_selector selector, oneapi::math::job jobz,
+ oneapi::math::uplo uplo, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& w, sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::heevd(selector.get_queue(), jobz, uplo, n, a, lda, w, scratchpad,
+ scratchpad_size);
+}
+static inline void hegvd(backend_selector selector, std::int64_t itype,
+ oneapi::math::job jobz, oneapi::math::uplo uplo, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer>& b, std::int64_t ldb,
+ sycl::buffer& w, sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::hegvd(selector.get_queue(), itype, jobz, uplo, n, a, lda, b, ldb,
+ w, scratchpad, scratchpad_size);
+}
+static inline void hegvd(backend_selector selector, std::int64_t itype,
+ oneapi::math::job jobz, oneapi::math::uplo uplo, std::int64_t n,
+ sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer>& b, std::int64_t ldb,
+ sycl::buffer& w, sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::hegvd(selector.get_queue(), itype, jobz, uplo, n, a, lda, b, ldb,
+ w, scratchpad, scratchpad_size);
+}
+static inline void hetrd(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& d, sycl::buffer& e,
+ sycl::buffer>& tau,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::hetrd(selector.get_queue(), uplo, n, a, lda, d, e, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void hetrd(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& d, sycl::buffer& e,
+ sycl::buffer>& tau,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::hetrd(selector.get_queue(), uplo, n, a, lda, d, e, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void hetrf(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& ipiv,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::hetrf(selector.get_queue(), uplo, n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void hetrf(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer& ipiv,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::hetrf(selector.get_queue(), uplo, n, a, lda, ipiv, scratchpad,
+ scratchpad_size);
+}
+static inline void orgbr(backend_selector selector, oneapi::math::generate vec,
+ std::int64_t m, std::int64_t n, std::int64_t k, sycl::buffer& a,
+ std::int64_t lda, sycl::buffer& tau,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::orgbr(selector.get_queue(), vec, m, n, k, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void orgbr(backend_selector selector, oneapi::math::generate vec,
+ std::int64_t m, std::int64_t n, std::int64_t k, sycl::buffer& a,
+ std::int64_t lda, sycl::buffer& tau,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::orgbr(selector.get_queue(), vec, m, n, k, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void orgqr(backend_selector selector, std::int64_t m, std::int64_t n,
+ std::int64_t k, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::orgqr(selector.get_queue(), m, n, k, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void orgqr(backend_selector selector, std::int64_t m, std::int64_t n,
+ std::int64_t k, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::orgqr(selector.get_queue(), m, n, k, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void orgtr(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::orgtr(selector.get_queue(), uplo, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void orgtr(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::orgtr(selector.get_queue(), uplo, n, a, lda, tau, scratchpad,
+ scratchpad_size);
+}
+static inline void ormtr(backend_selector selector, oneapi::math::side side,
+ oneapi::math::uplo uplo, oneapi::math::transpose trans, std::int64_t m,
+ std::int64_t n, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& c, std::int64_t ldc,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::ormtr(selector.get_queue(), side, uplo, trans, m, n, a, lda, tau,
+ c, ldc, scratchpad, scratchpad_size);
+}
+static inline void ormtr(backend_selector selector, oneapi::math::side side,
+ oneapi::math::uplo uplo, oneapi::math::transpose trans, std::int64_t m,
+ std::int64_t n, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& c, std::int64_t ldc,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::ormtr(selector.get_queue(), side, uplo, trans, m, n, a, lda, tau,
+ c, ldc, scratchpad, scratchpad_size);
+}
+static inline void ormrq(backend_selector selector, oneapi::math::side side,
+ oneapi::math::transpose trans, std::int64_t m, std::int64_t n,
+ std::int64_t k, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& c, std::int64_t ldc,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::ormrq(selector.get_queue(), side, trans, m, n, k, a, lda, tau, c,
+ ldc, scratchpad, scratchpad_size);
+}
+static inline void ormrq(backend_selector selector, oneapi::math::side side,
+ oneapi::math::transpose trans, std::int64_t m, std::int64_t n,
+ std::int64_t k, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& c, std::int64_t ldc,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::ormrq(selector.get_queue(), side, trans, m, n, k, a, lda, tau, c,
+ ldc, scratchpad, scratchpad_size);
+}
+static inline void ormqr(backend_selector selector, oneapi::math::side side,
+ oneapi::math::transpose trans, std::int64_t m, std::int64_t n,
+ std::int64_t k, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& c, std::int64_t ldc,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::ormqr(selector.get_queue(), side, trans, m, n, k, a, lda, tau, c,
+ ldc, scratchpad, scratchpad_size);
+}
+static inline void ormqr(backend_selector selector, oneapi::math::side side,
+ oneapi::math::transpose trans, std::int64_t m, std::int64_t n,
+ std::int64_t k, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& tau, sycl::buffer& c, std::int64_t ldc,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::ormqr(selector.get_queue(), side, trans, m, n, k, a, lda, tau, c,
+ ldc, scratchpad, scratchpad_size);
+}
+static inline void potrf(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::potrf(selector.get_queue(), uplo, n, a, lda, scratchpad,
+ scratchpad_size);
+}
+static inline void potrf(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::potrf(selector.get_queue(), uplo, n, a, lda, scratchpad,
+ scratchpad_size);
+}
+static inline void potrf(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::potrf(selector.get_queue(), uplo, n, a, lda, scratchpad,
+ scratchpad_size);
+}
+static inline void potrf(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer>& scratchpad,
+ std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::potrf(selector.get_queue(), uplo, n, a, lda, scratchpad,
+ scratchpad_size);
+}
+static inline void potri(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::potri(selector.get_queue(), uplo, n, a, lda, scratchpad,
+ scratchpad_size);
+}
+static inline void potri(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer& a, std::int64_t lda,
+ sycl::buffer& scratchpad, std::int64_t scratchpad_size) {
+ oneapi::math::lapack::armpl::potri(selector.get_queue(), uplo, n, a, lda, scratchpad,
+ scratchpad_size);
+}
+static inline void potri(backend_selector selector, oneapi::math::uplo uplo,
+ std::int64_t n, sycl::buffer>& a, std::int64_t lda,
+ sycl::buffer