NEON_8

使用Arm Compiler 6爲Neon進行編譯
要啓用自動矢量化,必須指定適當的編譯器選項以執行以下操作:

定位具有Neon功能的處理器。
指定包括自動向量化的優化級別。

 

另外,指定-Rpass = loop編譯器選項將顯示有關編譯器如何優化特定循環的有用診斷信息。 該信息包括矢量化寬度和交織計數。

請注意,-Rpass = loop是Arm Compiler的[COMMUNITY]功能。

 

指定具有Neon功能的目標
所有標準Armv8-A實現中都需要Neon,因此針對任何Armv8-A架構或處理器,都可以生成Neon代碼。

如果只想在一個特定處理器上運行代碼,則可以針對該特定處理器。 針對該處理器的微體系結構細節優化了性能。 但是,只能保證代碼可以在該處理器上運行。

如果您希望代碼在各種處理器上運行,則可以針對體系結構。 生成的代碼可以在該目標體系結構的任何處理器實現上運行,但是性能可能會受到影響。

 

要定位Armv8‑A AArch64狀態:

armclang --target = aarch64-arm-none-eabi
要以AArch32狀態定位Cortex-A53,請執行以下操作:

armclang --target = arm-arm-none-eabi -mcpu = cortex-a53
對於較早的Armv7體系結構(Neon是可選的),可以使用-mcpu,-march和-mfpu選項指定Neon可用。

 

指定自動向量化優化級別
Arm Compiler 6提供了廣泛的優化級別,可以通過-O選項進行選擇:

選項含義自動向量化
-O0最小優化從不
-O1受限優化默認情況下禁用。
-O2高優化默認情況下啓用。
-O3非常高的優化默認情況下啓用。
-Os減少代碼大小,使代碼大小與代碼速度保持平衡。 默認啓用。
-Oz最小可能的代碼大小默認情況下啓用。
-Ofast優化以實現超越-O3的高性能,默認情況下已啓用。
-Omax優化以實現超越-Ofast的高性能默認情況下已啓用。
看到

有關這些選項的更多詳細信息,請參見《 Arm Compiler用戶指南》中的選擇優化選項,以及《 Arm Compiler armclang參考指南》中的-O。

 

默認情況下,自動矢量化在優化級別-O2和更高級別啓用。 使用-fno-vectorize選項可以禁用自動矢量化。

在優化級別-O1,默認情況下禁用自動矢量化。 使用-fvectorize選項可以啓用自動矢量化。

在優化級別-O0,始終禁用自動矢量化。 如果指定-fvectorize選項,則編譯器將忽略它。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章