SSE与AVX指令集
SSE
指令集是英特尔提供的基于SIMD
(单指令多数据,也就是说同一时间内,对多个不同的数据执行同一条命令)的硬件加速指令,通过使用寄存器来进行并行加速。经过几代的迭代,最新的SSE4
已经极大地扩展了指令集的功能,并且随后已经从128位寄存器继续扩展到256位的指令。
想要使用SSE或AVX指令集,需要包含以下头文件
#include <mmintrin.h> //mmx, 4个64位寄存器
#include <xmmintrin.h> //sse, 8个128位寄存器
#include <emmintrin.h> //sse2, 8个128位寄存器
#include <pmmintrin.h> //sse3, 8个128位寄存器
#include <smmintrin.h> //sse4.1, 8个128位寄存器
#include <nmmintrin.h> //sse4.2, 8个128位寄存器
#include <immintrin.h> // avx, 16个256位寄存器
checkHardwareSupportCV_SSE系列指令集的预编译符号定义在opencv2/core/cvdef.hpp这个头文件中,如果你不包含这个头文件的话,把源码拷贝到自己的函数中 。
/* CPU features and intrinsics support */
#define CV_CPU_NONE 0
#define CV_CPU_MMX 1
#define CV_CPU_SS