簡體   English   中英

使用SSE2指令集查找3個值的中值

[英]Finding a median of 3 values using SSE2 instruction set

我的輸入數據是16位數據,我需要使用SSE2指令集找到3個值的中值。

如果我有3個16位輸入值A,B和C,我想這樣做:

D = max( max( A, B ), C )
E = min( min( A, B ), C )
median = A + B + C - D - E

我打算使用的C函數是:

  • 最大-_mm_max_epi16
  • 分鍾-_mm_min_epi16
  • 加法-_mm_add_epi16
  • 減去-_mm_sub_epi16

誰能提出更好的方法?

您的想法很聰明,但僅使用max和min即可完成較少的操作。

t1 = min(A, B)
t2 = max(A, B)
t3 = min(t2, C)
median = max(t1, t3)

與原始實現中的8條相比,這僅是4條SSE指令。

請注意,這實際上只是N = 3的修剪排序網絡

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM