使用SSE指令优化的数学函数(整理)

转载 2006年06月25日 20:22:00

float _SSE_cos( float x)
{
 float temp;
 __asm
 {
  movss xmm0, x
  movss xmm1, _ps_am_inv_sign_mask
  andps xmm0, xmm1
  addss xmm0, _ps_am_pi_o_2
  mulss xmm0, _ps_am_2_o_pi

  cvttss2si ecx, xmm0
  movss xmm5, _ps_am_1
  mov  edx, ecx
  shl  edx, (31 - 1)
  cvtsi2ss xmm1, ecx
  and  edx, 0x80000000
  and  ecx, 0x1

  subss xmm0, xmm1
  movss xmm6, _sincos_masks[ecx * 4]
  minss xmm0, xmm5

  movss xmm1, _ps_sincos_p3
  subss xmm5, xmm0

  andps xmm5, xmm6
  movss xmm7, _ps_sincos_p2
  andnps xmm6, xmm0
  mov  temp, edx
  orps xmm5, xmm6
  movss xmm0, xmm5

  mulss xmm5, xmm5
  movss xmm4, _ps_sincos_p1
  movss xmm2, xmm5
  mulss xmm5, xmm1
  movss xmm1, _ps_sincos_p0
  addss xmm5, xmm7
  mulss xmm5, xmm2
  movss xmm3, temp
  addss xmm5, xmm4
  mulss xmm5, xmm2
  orps xmm0, xmm3
  addss xmm5, xmm1
  mulss xmm0, xmm5
 
  movss   x,    xmm0

 }

 return x;
}


float _SSE2_cos(float x) 
{
 __asm
 {
  movss xmm0, x
  movss xmm1, _ps_am_inv_sign_mask
  movss xmm2, _ps_am_pi_o_2
  movss xmm3, _ps_am_2_o_pi
  andps xmm0, xmm1
  addss xmm0, xmm2
  mulss xmm0, xmm3

  pxor xmm3, xmm3
  movd xmm5, _epi32_1
  movss xmm4, _ps_am_1
  cvttps2dq xmm2, xmm0
  pand xmm5, xmm2
  movd xmm1, _epi32_2
  pcmpeqd xmm5, xmm3
  cvtdq2ps xmm6, xmm2
  pand xmm2, xmm1
  pslld xmm2, (31 - 1)

  subss xmm0, xmm6
  movss xmm3, _ps_sincos_p3
  minss xmm0, xmm4
  subss xmm4, xmm0
  andps xmm0, xmm5
  andnps xmm5, xmm4
  orps xmm0, xmm5

  movaps xmm1, xmm0
  movss xmm4, _ps_sincos_p2
  mulss xmm0, xmm0
  movss xmm5, _ps_sincos_p1
  orps xmm1, xmm2
  movaps xmm7, xmm0
  mulss xmm0, xmm3
  movss xmm6, _ps_sincos_p0
  addss xmm0, xmm4
  mulss xmm0, xmm7
  addss xmm0, xmm5
  mulss xmm0, xmm7
  addss xmm0, xmm6
  mulss xmm0, xmm1
  movss   x,    xmm0
 }

 return x;
}

float _SSE_Sqrt(float x)
{

 float root = 0.f;
 _asm
 {
  sqrtss  xmm0, x
  movss  root, xmm0
 }

 return root;
}

使用SSE指令优化的数学函数(整理)

float _SSE_cos( float x){ float temp; __asm {  movss xmm0, x  movss xmm1, _ps_am_inv_sign_mask  andp...
  • dbgnu
  • dbgnu
  • 2006年04月06日 13:43
  • 962

使用SSE指令优化的数学函数(整理)

好多指令不认识...慢慢研究 float _SSE_cos( float x){ float temp; __asm {  movss xmm0, x  movss xmm1, _ps_am_inv_...
  • waterflier
  • waterflier
  • 2004年08月15日 15:56
  • 1699

SSE指令指令集进行程序加速、DCT的优化处理

1. 什么是SSE 说到SSE,首先要弄清楚的一个概念是SIMD(单指令多数据流,Single Instruction Multiple Data),是一种数据并行技术,能够在一条指令中同时对多个...
  • yangdashi888
  • yangdashi888
  • 2016年11月28日 13:43
  • 1644

MMX与SSE优化策略描述

上回讲到针对整数运算的MMX优化技术,然而真正大运算量的图形和声音处理大都用的是浮点运算,而且现在对浮点运算的要求也是越来越高,在这样一个条件下INTEL终于在Pentium III处理中增加针对浮点...
  • mydear_11000
  • mydear_11000
  • 2016年03月11日 15:47
  • 1042

SSE指令优化一例

前两天为了加速一段求梯度的代码,用了SSE指令,在实验室PMH大侠的指导下,最终实现了3倍速度提升(极限是4倍,因为4个浮点数一起计算)。在这里写一下心得,欢迎拍砖。 SSE加速的几个关键是 ...
  • mydear_11000
  • mydear_11000
  • 2016年03月11日 15:46
  • 1171

sse 指令优化叉乘

sse referece : http://docs.sun.com/app/docs/doc/817-5477/6mkuavhrm?a=view 下文转自:http://goutie.blog.so...
  • normallife
  • normallife
  • 2010年01月04日 11:13
  • 3025

vc2010 sse指令优化效果明显

对于大量浮点数运算,用sse指令优化的效果是非常明显的。 vs2010的编译器内置函数([Compiler Intrinsics])支持see指令,所以程序员不必痛苦的用汇编指令来实现sse指令优化...
  • 10km
  • 10km
  • 2015年10月16日 17:07
  • 1504

python 常用数学函数

python 中自带常用数学函数,使用前需加载 math 模块 import  math 0.常数:                 (1) math.e...
  • u011222983
  • u011222983
  • 2015年04月12日 09:18
  • 901

SSE指令的使用学习

1. 什么是指令集? 指令集是为了增强CPU在某些方面(如多媒体)的功能而特意开发出的一组程序代码集合。 2.常见的指令集有哪些呢? 1)MMX(Multi-Media Extensions,做媒体扩...
  • a200800170331
  • a200800170331
  • 2015年09月24日 13:39
  • 2824

X86架构下SSE系列指令使用

X86架构下SSE系列指令使用 sse指令集中的指令,一条指令可以实现多项数据运算,即SIMD-Single Instruction Multiple Data。 相关资料可参考: http://...
  • crazycoder8848
  • crazycoder8848
  • 2015年10月10日 18:36
  • 2458
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用SSE指令优化的数学函数(整理)
举报原因:
原因补充:

(最多只允许输入30个字)