2016-01-23 101 views
0

我是AArch64高級SIMD(NEON)的新手,我想將AArch32代碼移植到AArch64。在AArch32中,如果我想訪問寄存器的更低或更高的一半,我只使用Dn而不是Qn。例如,如果我想訪問低位64位的Q12,我只是簡單地提到了D24。但是,我不知道如何訪問AArch64中的Vn寄存器的一半。 我想訪問Vn註冊表的更高一半。所以,如果我寫Vn.2S,我認爲它給了我寄存器的下半部分。那是對的嗎?如果是的話,我怎樣才能進入更高的一半呢?訪問AArch64高級SIMD中的寄存器的一半

+0

當一個指令影響向量寄存器中的128位中的64位時,將使用低64位。以「2」結尾的第二版指令(例如PMULL2)影響向量寄存器的高64位。 – BitBank

+0

@BBBank假設我想將128位向量寄存器的高64位與另一個128位向量寄存器相乘。我的意思是我有一個64x128乘法。我怎麼能實現這一點? 'PMULL2'影響向量的高64位 – A23149577

+0

我不相信有128位的乘法,但是如果你想同時訪問低64位和高64位,我相信你需要使用寄存器索引符號(例如v5.s [2])將數據移入另一個寄存器。 – BitBank

回答

0

即使我試圖訪問。 按照手冊,我想沒有辦法可以訪問老虎鉗。 V0→d0→s0具有相同的數據。

鑑於在ARM32中,Q0有d0和d1,而且d0有s0和s1。