IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Classes | Namespaces | Macros | Typedefs | Enumerations
InstructionSetTypes.h File Reference

Predefined types associated to instruction set management. More...

#include <IPSDKUtil/BaseTypes.h>
#include <IPSDKUtil/Tools/EnumMacros.h>
#include <set>

Go to the source code of this file.

Classes

struct  ipsdk::ISAlignmentType< instructionSet >
 structure used to retrieve alignment type associated to a given instruction set More...
 
struct  ipsdk::ISAlignmentSize< alignment >
 structure used to retrieve memory size for a given instruction set alignment More...
 

Namespaces

 ipsdk
 Main namespace for IPSDK library.
 

Macros

#define IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE(instructionSet, alignmentType)
 
#define IPSDK_ALIGNMENT_TYPE_TO_SIZE(alignmentType, size)
 

Typedefs

typedef std::set< eInstructionSet > ipsdk::InstructionSetColl
 instruction set collection
 

Enumerations

enum  ipsdk::eInstructionSet {
  ipsdk::eIS_Standard, ipsdk::eIS_Sse2, ipsdk::eIS_Sse3, ipsdk::eIS_Sse41,
  ipsdk::eIS_Sse42, ipsdk::eIS_Avx, ipsdk::eIS_Fma3, ipsdk::eIS_Avx2,
  ipsdk::eIS_Avx512
}
 Enumerate for processor instruction set description. More...
 
enum  ipsdk::eISAlignment {
  ipsdk::eISA_None, ipsdk::eISA_8Bytes, ipsdk::eISA_16Bytes, ipsdk::eISA_32Bytes,
  ipsdk::eISA_64Bytes
}
 Enumerate describing memory data alignments. More...
 

Functions

 ipsdk::IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (eInstructionSet::eIS_Standard, eISAlignment::eISA_None)
 
 ipsdk::IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (eInstructionSet::eIS_Sse2, eISAlignment::eISA_16Bytes)
 
 ipsdk::IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (eInstructionSet::eIS_Sse3, eISAlignment::eISA_16Bytes)
 
 ipsdk::IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (eInstructionSet::eIS_Sse41, eISAlignment::eISA_16Bytes)
 
 ipsdk::IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (eInstructionSet::eIS_Sse42, eISAlignment::eISA_16Bytes)
 
 ipsdk::IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (eInstructionSet::eIS_Avx, eISAlignment::eISA_32Bytes)
 
 ipsdk::IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (eInstructionSet::eIS_Fma3, eISAlignment::eISA_32Bytes)
 
 ipsdk::IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (eInstructionSet::eIS_Avx2, eISAlignment::eISA_32Bytes)
 
 ipsdk::IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (eInstructionSet::eIS_Avx512, eISAlignment::eISA_64Bytes)
 
 ipsdk::IPSDK_ALIGNMENT_TYPE_TO_SIZE (eISAlignment::eISA_None, 1)
 
 ipsdk::IPSDK_ALIGNMENT_TYPE_TO_SIZE (eISAlignment::eISA_8Bytes, 8)
 
 ipsdk::IPSDK_ALIGNMENT_TYPE_TO_SIZE (eISAlignment::eISA_16Bytes, 16)
 
 ipsdk::IPSDK_ALIGNMENT_TYPE_TO_SIZE (eISAlignment::eISA_32Bytes, 32)
 
 ipsdk::IPSDK_ALIGNMENT_TYPE_TO_SIZE (eISAlignment::eISA_64Bytes, 64)
 

Detailed Description

Predefined types associated to instruction set management.

Author
E. Noirfalise
Date
2013/2/15

Macro Definition Documentation

◆ IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE

#define IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE (   instructionSet,
  alignmentType 
)
Value:
template<> struct ISAlignmentType<instructionSet> { \
static const eISAlignment::domain g_alignmentType = alignmentType; \
};

macro enabling implementation of ISAlignmentType templates

◆ IPSDK_ALIGNMENT_TYPE_TO_SIZE

#define IPSDK_ALIGNMENT_TYPE_TO_SIZE (   alignmentType,
  size 
)
Value:
template<> struct ISAlignmentSize<alignmentType> { \
static const ipUInt8 g_size = size; \
};
uint8_t ipUInt8
Base types definition.
Definition: BaseTypes.h:49

macro enabling implementation of ISAlignmentSize templates