Skip to content

Commit 00b71aa

Browse files
committed
Update SSE指令集补充.md
1 parent a053e4b commit 00b71aa

File tree

1 file changed

+44
-1
lines changed

1 file changed

+44
-1
lines changed

resources/SSE指令集补充.md

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,47 @@
8787

8888
- _mm_min_epu16 表示:两个数的最小者。
8989

90-
- _mm_minpos_epu16 表示:返回128 位值, 最低序的 16 位是参数找到的最小值a,第二个低的顺序 16 位是参数找到的最小值的索引a。
90+
- _mm_minpos_epu16 表示:返回128 位值, 最低序的 16 位是参数找到的最小值a,第二个低的顺序 16 位是参数找到的最小值的索引a。
91+
92+
- _mm_stream_si32 将数据存储到指针对应的地址中。
93+
94+
- _mm_cvtsi128_si32 移动最低有效位的32位a到32位整数。
95+
96+
- _mm_packus_epi32
97+
98+
```c++
99+
r0 := (a0 < 0) ? 0 : ((a0 > 0xffff) ? 0xffff : a0)
100+
r1 := (a1 < 0) ? 0 : ((a1 > 0xffff) ? 0xffff : a1)
101+
r2 := (a2 < 0) ? 0 : ((a2 > 0xffff) ? 0xffff : a2)
102+
r3 := (a3 < 0) ? 0 : ((a3 > 0xffff) ? 0xffff : a3)
103+
r4 := (b0 < 0) ? 0 : ((b0 > 0xffff) ? 0xffff : b0)
104+
r5 := (b1 < 0) ? 0 : ((b1 > 0xffff) ? 0xffff : b1)
105+
r6 := (b2 < 0) ? 0 : ((b2 > 0xffff) ? 0xffff : b2)
106+
r7 := (b3 < 0) ? 0 : ((b3 > 0xffff) ? 0xffff : b3)
107+
```
108+
109+
- _mm_setr_epi32 返回一个__m128i的寄存器,使用4个具体的int类型数据来设置寄存器存放数据。
110+
111+
- _mm_mullo_epi32 返回一个__m128i的寄存器,分别对a和b的4个int类型数相乘。
112+
113+
- _mm_hadd_epi32 返回一个__m128i的寄存器,分别对a和b的4个int类型数相加。
114+
115+
- _mm_madd_epi16 返回一个__m128i的寄存器,分别对a和b先相乘后相加。
116+
117+
```c++
118+
r0 := (a0 * b0) + (a1 * b1)
119+
r1 := (a2 * b2) + (a3 * b3)
120+
r2 := (a4 * b4) + (a5 * b5)
121+
r3 := (a6 * b6) + (a7 * b7)
122+
```
123+
124+
- _mm_unpackhi_epi8 返回一个__m128i的寄存器,对a和b进行交错打包,从高位到低位。
125+
126+
```c++
127+
r0 := a8 ; r1 := b8
128+
r2 := a9 ; r3 := b9
129+
...
130+
r14 := a15 ; r15 := b15
131+
```
132+
133+
- _mm_unpacklo_epi8 返回一个__m128i的寄存器,对a和b进行交错打包,从低位到高位。

0 commit comments

Comments
 (0)