去年年底把工程项目由VS的2015升级到2019版本,本以为直接配置下运行环境就可以了,但是一编译发现一大堆错误,所有的错误都指向一系列的指令集,比如_mm_exp_ps、_mm_log_ps、_mm_pow_ps等等,后面发现原来从2019版本开始,编译器已经自带了这些常用的函数,所以自己函数和系统的重名了,也就无法通过编译了。
这个时候只能把自己大函数名都适当的进行修改,再重新编译了.
我们在intel的关于指令集方面的官方网站也发现了一些信息: 比如_mm_exp_ps,其说明如下:
注意其中的Sequence说明这是由一些其他的指令组合而成的。
既然系统也提供了这类函数,那么他们的效率和精度和我们自己写的相比又有多大的差异和不同呢,一直想做个比较,今天就抽点时间做点测试.
我们先看看精度,以exp为代表,测试代码如下:
__m128 s = _mm_setr_ps(0, 3, 4, 6);
__m128 d1 = _mm_exp_ps(s);
__m128 d2 = _mm_fexp_ps(s);
for (int i = 0; i < 4; i+&