常用汇编指令总结
浮点数相关
_mm_unpacklo_ps
Selects and interleaves the lower two SP FP values from a and b.
将两个128位浮点数的低64位分别取出,返回新的128位浮点数
1 | INTERLEAVE_DWORDS(src1[127:0], src2[127:0]){ |
输入如果为:
1 | a0,a1,a2,a3 |
则输出结果为:
1 | a0,b0,a1,b1 |
_mm_mul_ps
1 | FOR j := 0 to 3 |
分别将两个128位浮点数的每个float相乘,结果仍然是128位浮点数
也就是:
1 | dst[31:0] := a[31:0] * b[31:0] |
_mm_moveldup_ps
1 | dst[31:0] := a[31:0] |
Source data: 0.100000 0.200000 0.300000 0.400000
Calling _mm_moveldup_ps to load the values.
Result: 0.100000 0.100000 0.300000 0.300000
将128bit浮点数的第一个及第三个float分别复制到第二个及第四个float中