#pragma once #include "../platform/types.hpp" namespace cpu { class SIMD { public: /** * @brief Add two packed 128 bits number (16 byte array) * @param a 16 byte vector * @param b 16 byte vector */ virtual void add_128(uint8 *a, uint8 *b) = 0; /** * @brief Add two packed 128 bits number (4 int array) * @param a 4 int vector * @param b 4 int vector */ virtual void add_128(uint32 *a, uint32 *b) = 0; /** * @brief Add two packed 128 bits number (2 long array) * @param a 2 long vector * @param b 2 long vector */ virtual void add_128(uint64 *a, uint64 *b) = 0; /** * @brief Add two packed 256 bits number (32 byte array) * @param a 32 byte vector * @param b 32 byte vector */ virtual void add_256(uint8 *a, uint8 *b) = 0; /** * @brief Add two packed 256 bits number (8 int array) * @param a 8 int vector * @param b 8 int vector */ virtual void add_256(uint32 *a, uint32 *b) = 0; /** * @brief Add two packed 256 bits number (4 long array) * @param a 4 long vector * @param b 4 long vector */ virtual void add_256(uint64 *a, uint64 *b) = 0; }; }; // namespace cpu