《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > NEON編碼 - 左右移位

NEON編碼 - 左右移位

2011-08-09
作者:Martyn ARM資深軟件工程師
關鍵詞: ARM NEON編碼

 

本文將介紹NEON提供的移位運算,并顯示如何利用移位運算在常用顏色深度之間轉換影像數據。

向量移位

NEON上的移位與標量ARM編碼中可能用到的移位非常相似,即每個向量元素的位數均向左或向右移位,出現在每個元素左側或右側的位將被刪除;它們不能移位至相鄰的元素。

移位的數量可通過指令中編碼的文字或附加的移位向量來指定。使用移位向量時,應用到輸入向量每個元素的移位取決于移位向量中對應元素的值。移位向量中的元素被當作帶符號的值來處理,因此按元素分配,左移位、右移位和零移位都有可能發生。

帶符號元素的向量上發生的右移位由指令附加的類型指定,并會將符號擴展至每一個元素。這與ARM編碼中可能用到的算術移位相同。應用到無符號向量的移位不會發生符號擴展。

移位與插入NEON也支持通過插入產生移位,使兩個不同向量的位相結合。例如,左移位與插入(VSLI)可使源向量的每一個元素均向左移位。每個元素右側新插入的位就是目標向量中的對應位。

 

移位與計算最后,NEON還支持向量元素向右移位,并將結果計入到另一個向量中。這種方法對于先在高精度條件下進行臨時計算,然后再將結果與低精度計算器相結合的情況非常有用。

指令修改器每個移位指令都能擁有一個或多個修改器。這些修改器并不改變移位運算本身,而是通過調整輸入值或輸出值,消除偏差或飽和狀況,保持一定的范圍。共有五種移位修改器:

 

  • 舍位修改器 (Rounding)以R前綴表示,可以糾正右移時舍位導致的偏差。
  • 窄修改器 (Narrow),以N后綴表示,可以讓結果中每個元素的位數減半。它代表Q(128位)源和D(64位)目標寄存器。
  • 長修改器 (Long),以L后綴表示,可以讓結果中每個元素的位數加倍。它代表D源和Q目標寄存器。 飽和修改器 (Saturating)以Q前綴表示,可以在最大和最小可表范圍內設置每個結果元素,前提是結果未超出該范圍。向量的位數和符號類型可用于確定飽和范圍。
  • 無符號飽和修改器 (Unsigned Saturating),以Q前綴和U后綴表示,與飽和修改器類似,但在進行帶符號或無符號輸入時,結果將在無符號范圍內表現為飽和。

 

這些修改器的部分組合并未表現出有用的運算,因此NEON也沒有提供相應指令。例如,飽和右移位(應稱為VQSHR)其實就毫無必要,因為右移位只會讓結果變得更小,因而值根本無法超出有效范圍。

可用移位表NEON提供的所有移位指令均在下表中列出。它們根據先前提到的修改器進行排列。如果你還是不太確定修改器各個字母代表的含義,請利用下表選擇需要的指令。

 

示例:轉換顏色深度顏色深度之間的轉換是圖形處理中經常需要的運算。通常,輸入或輸出數據都是RGB565 16位顏色格式,但RGB888格式的數據處理起來更為方便。對于NEON而言尤其如此,因為它無法為RGB565這樣的數據類型提供本機支持。

 

但是,NEON仍然可以有效地處理RGB565數據,上文中介紹的向量移位便提供了處理方法。

565888首先,我們來看如何將RGB565轉換為RGB888。假設寄存器q0中有8個16位像素,我們想要在d2、d3和d4這三個寄存器中將紅色、綠色和藍色分離成8位的元素。

 

每個指令的效果都在上面備注中做了描述,但總而言之,每個通道上執行的運算為:

 

  • 利用移位推掉元素任意一端的位數,清除相鄰通道的顏色數據。
  • 使用第二次移位將顏色數據放置到每個元素最重要的位上,并縮短位數將元素大小從16位減至8位。

 

請注意在這個順序中使用元素大小來確定8位和16位元素的位置,以進行部分掩碼運算。

一個小問題你可能會注意到,如果使用上述代碼轉換到RGB888格式,白色顯得不夠白。這是因為,對于每個通道而言,最低的2或3位是零,而不是1;白色在RGB565中表示為(0x1F, 0x3F, 0x1F),而在RGB888中,卻變成了 (0xF8, 0xFC, 0xF8)。這可以通過移位來解決,將部分最重要的位插入到低位。

888565現在,我們來看反向運算,即從RGB888轉換為RGB565。這里,我們假設RGB888數據為上述代碼產生的格式;在d0、d1和d2這三個寄存器上,每個寄存器均包含每種顏色的8個元素。結果將存儲為q2格式的8個16位RGB565元素。



同樣,每個指令的詳細說明在備注中列出,但總而言之,對于每個通道而言:

 

  • 將每個元素的長度擴展至16位,并將顏色數據移至最重要的位上。
  • 使用插入右移位,將每個顏色通道放置到結果寄存器中。

 

結論NEON提供的強大的移位指令范圍讓你能夠:

 

  • 利用舍入和飽和,通過二次冪快速進行向量的除法和乘法運算。
  • 通過移位將一個向量位復制到另一個向量位。
  • 在高精度條件下進行臨時計算,并在低精度條件下計算結果。

 

Martyn是處理器領域的資深軟件工程師已在ARM工作了近10年。他主要負責改善ARM平臺上軟件的性能和體驗。他對使用匯編語言和SIMD實現軟件優化非常感興趣,尤其是在圖形和多媒體領域。

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
91久久精品国产91久久性色| 亚洲欧美日韩视频一区| 亚洲精品黄色| 在线播放精品| 国产一区二区中文| 国产毛片精品国产一区二区三区| 欧美精品首页| 欧美日韩国产丝袜另类| 欧美福利小视频| 欧美 日韩 国产一区二区在线视频| 久久免费观看视频| 久久久综合免费视频| 久久久www成人免费毛片麻豆| 久久福利影视| 久久精品视频在线播放| 久久精品国产亚洲aⅴ| 久久精品亚洲精品| 久久午夜羞羞影院免费观看| 久久久一本精品99久久精品66| 久久精品在线观看| 久久国产精品久久久| 久久成人精品视频| 久久视频在线免费观看| 另类图片国产| 欧美激情精品久久久六区热门 | 国产人久久人人人人爽| 国产精品综合色区在线观看| 国产午夜亚洲精品羞羞网站| 黄色成人免费网站| 亚洲国产精品成人| 日韩亚洲在线| 亚洲欧美日韩精品久久久| 亚欧美中日韩视频| 亚洲国产另类精品专区| 亚洲精品视频免费| 亚洲一区精品视频| 久久av资源网| 欧美α欧美αv大片| 欧美日韩视频在线| 国产精品综合| 亚洲高清视频一区二区| 99re6这里只有精品| 亚洲欧美日韩国产成人精品影院| 久久成人这里只有精品| 亚洲精品欧洲精品| 亚洲综合国产激情另类一区| 欧美在线|欧美| 欧美成人黄色小视频| 欧美视频在线观看免费网址| 国产欧美一区二区白浆黑人| 在线精品高清中文字幕| 一本色道久久综合亚洲精品小说| 午夜精品免费在线| 亚洲人成欧美中文字幕| 亚洲一级片在线观看| 久久国内精品视频| 欧美精品福利视频| 国产乱人伦精品一区二区| 伊人伊人伊人久久| 一区二区三区高清| 亚洲福利国产精品| 亚洲午夜一区| 久久综合伊人77777麻豆| 欧美性生交xxxxx久久久| 韩国av一区二区| 中文日韩在线视频| 亚洲欧洲日产国产综合网| 亚洲综合成人婷婷小说| 免费观看国产成人| 国产精品久久久久久久久久妞妞| 尤物99国产成人精品视频| 亚洲系列中文字幕| 亚洲精品国精品久久99热| 欧美一区二区视频免费观看| 欧美精品免费视频| 国产真实乱子伦精品视频| 99re6这里只有精品| 亚洲国产精品v| 午夜精品久久一牛影视| 欧美精品在线一区二区| 国内成人自拍视频| 亚洲一区二区在线免费观看视频| 亚洲三级性片| 久久久久久久久蜜桃| 国产精品久久久久久久7电影| 亚洲丰满少妇videoshd| 午夜精品亚洲| 亚洲免费小视频| 欧美日本一区| 亚洲国产第一| 久久精品国产99国产精品| 小黄鸭视频精品导航| 欧美日韩一区二区三| 在线日韩欧美视频| 久久精品国产免费看久久精品| 亚洲欧美日韩人成在线播放| 欧美日韩日韩| 亚洲黄色免费网站| 亚洲国产精品久久久久久女王| 性久久久久久久久久久久| 欧美性猛交xxxx免费看久久久 | 精品成人一区二区三区| 亚洲女女女同性video| 亚洲自拍啪啪| 欧美日韩国产bt| 亚洲福利免费| 亚洲国产91| 久久精品亚洲一区| 国产亚洲精品高潮| 亚洲女性裸体视频| 午夜精品国产| 国产精品普通话对白| 亚洲视频一区二区在线观看| 中文亚洲字幕| 欧美日韩一本到| 日韩视频一区| 一区二区久久久久| 欧美日韩在线另类| 一本一本久久| 亚洲一区日本| 欧美视频一区二区三区四区| 99精品国产热久久91蜜凸| 中日韩男男gay无套| 欧美日韩国产精品专区| 亚洲精品一区二区三区在线观看| 亚洲另类春色国产| 欧美国产视频在线| 亚洲狼人综合| 中文av字幕一区| 欧美午夜视频一区二区| 中文精品视频一区二区在线观看| 亚洲一区视频在线| 国产精品欧美日韩久久| 亚洲欧美日韩综合| 久久精品一区二区三区不卡牛牛| 国内在线观看一区二区三区| 亚洲国产精品久久| 欧美激情精品久久久久久久变态| 亚洲精选大片| 先锋影音网一区二区| 国产小视频国产精品| 久久精品国产亚洲精品| 欧美不卡高清| 亚洲麻豆一区| 亚洲欧美日韩一区在线| 国产欧美欧美| 亚洲春色另类小说| 欧美激情视频一区二区三区免费| 日韩午夜高潮| 欧美一区二区视频观看视频| 国内精品久久久久久久影视蜜臀| 亚洲国产天堂久久综合| 欧美人在线视频| 一区二区三区回区在观看免费视频| 亚洲欧美视频在线观看| 国内精品视频666| 亚洲精品美女在线| 国产精品久久久91| 欧美在线视频全部完| 欧美激情精品久久久| 亚洲午夜久久久久久尤物| 久久国产精品黑丝| 亚洲欧洲日产国码二区| 亚洲女人av| 伊人激情综合| 中文亚洲免费| 国内精品久久久久久久影视蜜臀| 日韩一级免费| 国产欧美一区二区精品忘忧草| 亚洲黄色视屏| 国产精品久久毛片a| 亚洲大胆视频| 国产精品国产三级欧美二区 | 久久精品亚洲乱码伦伦中文| 欧美精品一区在线| 亚洲女同在线| 欧美激情精品久久久久久蜜臀| 亚洲在线黄色| 欧美国产视频日韩| 亚洲欧美中文另类| 欧美日韩国产综合视频在线观看 | 中国av一区| 韩日精品视频| 亚洲综合大片69999| 亚洲电影网站| 欧美一区成人| 亚洲精品美女91| 久久久久久久网站| 亚洲午夜精品一区二区| 欧美成人午夜激情在线| 性18欧美另类| 国产精品爱啪在线线免费观看| 亚洲韩国精品一区| 国产精品综合网站| 亚洲视频高清| 亚洲大片免费看| 久久狠狠久久综合桃花| 一区二区三区免费看| 欧美二区在线播放| 久久精品人人爽|