cpplab/src/cpu/simd.hpp

45 lines
1.1 KiB
C++

#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