diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-09-08 23:18:52 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-09-08 23:18:52 +0200 |
| commit | 2ecbd2bfb27060b6f45196d8481fd0ccdbea730c (patch) | |
| tree | e67ef39454a0ee1447c9633967e12cf70a4ce735 /dev | |
| parent | 45c17f712b6a0424970bcac3405efca824615dcd (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.hpp | 0 | ||||
| -rw-r--r-- | dev/lib/simd/simd.hpp | 49 |
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 |
