summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-09-08 23:18:52 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-09-08 23:18:52 +0200
commit2ecbd2bfb27060b6f45196d8481fd0ccdbea730c (patch)
treee67ef39454a0ee1447c9633967e12cf70a4ce735 /dev
parent45c17f712b6a0424970bcac3405efca824615dcd (diff)
feat: wip: `simd` module in progress.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev')
-rw-r--r--dev/lib/simd/avx.hpp0
-rw-r--r--dev/lib/simd/simd.hpp49
2 files changed, 45 insertions, 4 deletions
diff --git a/dev/lib/simd/avx.hpp b/dev/lib/simd/avx.hpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/lib/simd/avx.hpp
diff --git a/dev/lib/simd/simd.hpp b/dev/lib/simd/simd.hpp
index 6374a51..0f8f451 100644
--- a/dev/lib/simd/simd.hpp
+++ b/dev/lib/simd/simd.hpp
@@ -9,10 +9,51 @@
#include <lib/core/includes.hpp>
+/// @author Amlal El Mahrouss
+/// @brief Basic SIMD processor.
+
namespace ocl::snu::simd
{
- struct simd_backend;
+ template <typename SimdBackend>
+ class basic_simd_processor
+ {
+ private:
+ SimdBackend processor_;
+
+ enum opcode
+ {
+ bad,
+ add,
+ mul,
+ div,
+ };
+
+ public:
+ basic_simd_processor() = default;
+ virtual ~basic_simd_processor() = default;
+
+ basic_simd_processor& operator=(const basic_simd_processor&) = delete;
+ basic_simd_processor(const basic_simd_processor&) = delete;
+
+ typename SimdBackend::Register& call(const opcode& op, typename SimdBackend::Register& lhs, typename SimdBackend::Register& rhs)
+ {
+ switch (op)
+ {
+ case add:
+ return processor_.add(lhs, rhs);
+ case mul:
+ return processor_.mul(lhs, rhs);
+ case div:
+ return processor_.div(lhs, rhs);
+ default:
+ break;
+ }
+ return SimdBackend::Register::bad;
+ }
- template <typename SimdBackend>
- struct basic_simd;
-}
+ std::basic_string<char> isa()
+ {
+ return processor_.isa();
+ }
+ };
+} // namespace ocl::snu::simd