2013-10-25 35 views
1
> [EDIT: (edited to highlight the question in context) 

以下是這我需要NEON內在因爲我把一些SSE碼iOS上運行上證所內部函數。轉換具體SSE內在函數NEON內在

  • _mm_set_ps

設置四個單精度浮點值的四個輸入。

(__m128 _mm_set_ps(float z , float y , float x , float w);) 

Return Value: 
r0 := w 
r1 := x 
r2 := y 
r3 := z 
  • _mm_loadu_ps

荷載四個單精度浮點值。地址是而不是需要16字節對齊。

__m128 _mm_loadu_ps(float * p); 

Return Value: 
r0 := p[0] 
r1 := p[1] 
r2 := p[2] 
r3 := p[3] 
  • _mm_storeu_ps

存儲四個單精度浮點值。地址是而不是需要16字節對齊。

void _mm_storeu_ps(float *p, __m128 a); 

Return Value: 
p[0] := a0 
p[1] := a1 
p[2] := a2 
p[3] := a3 
  • _mm_add_epi32

添加4 的署名無符號 32位整數b中籤署的4或32位無符號整數。

__m128i _mm_add_epi32 (__m128i a, __m128i b); 

Return Value: 
r0 := a0 + b0 
r1 := a1 + b1 
r2 := a2 + b2 
r3 := a3 + b3 

注意:儘可能避免未對齊的內存訪問。所以,我需要一種方法將未對齊的訪問轉換爲對齊的訪問(可能使用填充)。

回答

1

我對NEON內在函數不是很熟悉,但我可以命名爲相應的NEON指令。那麼你會很容易找到合適的宏。

_mm_set_ps

如果值已經在S註冊,你就必須爲d註冊 否則重新解釋它們,你可以填寫一個d寄存器與VMOV指令: vmov.i32 D0,R0時,r1

_mm_loadu_ps

vld1.32 Q0,[R0]

_mm_storeu_ps

vst1.32 Q0,[R0]

_mm_add_epi32

vadd.u32 Q0,Q1,Q2

+0

嗨,你能解釋一下vmov.i32?我無法在網上找到任何有意義的文檔? – p0lAris