summaryrefslogtreecommitdiffhomepage
path: root/dev/lib/simd/basic_simd.hpp
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-09-12 20:23:39 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-09-12 20:23:39 +0200
commitfa4748e414e9494442f9bcde9c659d3951af19c0 (patch)
tree435f5b6adb6889462640b1456e684360cd7e495f /dev/lib/simd/basic_simd.hpp
parent3f9c5017abf3c4279780f685580a334574e6d760 (diff)
feat: dev/lib: new `basic_simd` class, better `error_handler` class.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/lib/simd/basic_simd.hpp')
-rw-r--r--dev/lib/simd/basic_simd.hpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/dev/lib/simd/basic_simd.hpp b/dev/lib/simd/basic_simd.hpp
new file mode 100644
index 0000000..d748d0c
--- /dev/null
+++ b/dev/lib/simd/basic_simd.hpp
@@ -0,0 +1,50 @@
+/*
+ * File: simd/basic_simd.hpp
+ * Purpose: Basic SIMD backend C++ library.
+ * Author: Amlal El Mahrouss (founder@snu.systems)
+ * Copyright 2025, Amlal El Mahrouss, and SNU Systems, Corp, licensed under the BSL 1.0 license.
+ */
+
+#pragma once
+
+#include <lib/core/includes.hpp>
+#include <cmath>
+
+#ifdef __x86_64__
+#include <immintrin.h>
+
+using simd_type = __m256;
+#endif
+
+#ifdef __aarch64__
+#include <arm_neon.h>
+
+using simd_type = float32x4_t;
+#endif
+
+namespace ocl::snu::simd
+{
+ struct basic_simd_backend final
+ {
+ struct simd_traits final
+ {
+ simd_type __val;
+
+ private:
+ static bool bad;
+ friend class basic_simd_backend;
+ };
+
+ using register_type = simd_traits;
+
+ const bool& is_bad() noexcept
+ {
+ return register_type::bad;
+ }
+
+ std::basic_string<char> isa()
+ {
+ return "basic-backend";
+ }
+ };
+} // namespace ocl::snu::simd