2013-02-27 47 views
0

我有一個8x8的數據。處理完後,我想繼續保留8x8數據,以便進一步處理 進程。我的問題是,如果有可能通過循環編程4個Q寄存器來存儲它們。但是,下面的代碼無法編譯,我也很喜歡遞增D12的12〜D13如何編程霓虹燈註冊索引

mov r4, #7 

1: 
. 
. 
vmul.i16 d12, d12, d1[r4] 
subs r4, r4, #1 
bge 1b 

有什麼辦法或處理這些有效的方法?

+0

我不明白你的問題。這種關於矩陣乘法的討論可能會讓你在這種問題的正確軌道上:http://blogs.arm.com/software-enablement/241-coding-for-neon-part-3-matrix-multiplication/ – 2013-02-27 17:44:03

+0

I計算矩陣沒有問題,我需要在其他4個Q寄存器中存儲中間結果,這意味着我需要改變Q寄存器以將數據存儲在一個循環中。 – Tom 2013-02-27 17:58:41

+0

我讀了三遍,仍然沒有得到它。 – auselen 2013-02-27 18:08:20

回答

0

我不相信你可以間接引用一個寄存器。你可能想用這個宏。請參閱我發送的矩陣乘法頁面,以獲取您要使用的宏類型的示例。你會爲每次計算調用一次,而不是使用循環。這也有避免循環的優勢。如果你使用寄存器而不是內存,我假設你關心性能,分支機構對性能不利。

請注意該頁面中的「調度」部分。如果你非常關心性能,甚至宏也會帶來一些問題。如果您快速讀取和寫入相同的寄存器(本例中爲d12),則可以停止管道。你經常想交錯你的迭代,這樣你就可以避免這種情況。 (...,從d3讀取,寫入到d2,使用d3計算,從d4讀取,寫入到d3,使用d4計算,...)這意味着更多的手寫代碼,但速度更快。