45 lines
1.1 KiB
C++
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
|