如何確定在給定的ARM處理器上是否存在NEON引擎?任何狀態/標誌寄存器可以被查詢用於這種目的?如何檢查NEON的存在?
回答
我相信unixsmurf's answer是一樣好,你會得到如果使用具有特權內核的操作系統。對於通用功能檢測,似乎ARM已經要求從OS獲取此功能,因此您必須使用OS API來獲取它。
- 在Android NDK上使用
#include <cpu-features.h>
和(android_getCpuFamily() == ANDROID_CPU_FAMILY_ARM) && (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON)
。請注意,這是針對32位ARM的。 ARM 64位有不同的標誌,但想法是一樣的。請參閱sources/docs。 - 在Linux上,如果可用,使用
#include <sys/auxv.h>
和#include <asm/hwcap.h>
與getauxval(AT_HWCAP) & HWCAP_NEON
。 - 在iOS上,我不確定是否存在動態調用,該方法似乎是以NEON爲目標構建您的應用程序,然後確保您的應用程序被標記爲需要NEON,因此它只會安裝在支持它的設備上。當然,你應該使用預定義的預處理器標誌
__ARM_NEON__
來確保在編譯時所有的東西都是有序的。 - 在任何微軟沒有,或者如果您使用的是一些其它RTOS ...我不知道...
其實你會看到很多的Android實現剛剛解析的/ proc/cpuinfo中的爲了實現android_getCpuFeatures()....呵呵。但它似乎正在得到改進,最新版本使用getauxval方法。
iOS 5及更高版本支持的所有iOS硬件均具有NEON;你可以簡單地假設NEON是存在的,不需要任何檢查(但如果你真的想要的話,你可以使用'sysctl'動態檢查)。 – 2014-11-14 22:43:13
在Android NDK檢查 如果(android_getCpuFamily()== ANDROID_CPU_FAMILY_ARM && (android_getCpuFeatures()ANDROID_CPU_ARM_FEATURE_NEON)!= 0) – VMMF 2016-08-24 02:22:34
謝謝你,是的,我更新....顯然更爲複雜的現在ARM64等 – 2016-08-24 16:35:13
- 1. MongoDB如何檢查存在
- 2. 如何使用NEON內在
- 3. rspec的 - 如何檢查allow_blank存在
- 4. 如何檢查存在的頁面
- 5. Matlab - 如何檢查句柄的存在
- 6. autoconf:如何檢查#define的存在
- 7. Javascript:如何檢查url的存在?
- 8. 如何檢查不存在的參數
- 9. 如何檢查元素的存在?
- 10. 如何檢查CVS標籤的存在?
- 11. 如何檢查存在的值
- 12. 如何檢查XSLT中存在的值
- 13. 如何檢查文件的存在?
- 14. 如何檢查GridView中存在的CheckBoxList檢查值asp.net C#
- 15. 如何檢查查詢緩存中是否存在查詢?
- 16. 如何在eclipse中安裝PMD Neon - 無法找到存儲庫
- 17. 檢查存在
- 18. 檢查存在
- 19. ARM-NEON如何同步?
- 20. NEON如何處理溢出?
- 21. 如何檢查命令是否存在?
- 22. 如何檢查是否MVC束存在
- 23. 如何檢查會話是否存在?
- 24. 如何檢查orderbychild值是否存在?
- 25. 如何檢查目錄是否存在?
- 26. 如何檢查函數是否存在?
- 27. 如何檢查cronjob是否存在PHP?
- 28. 如何檢查appSettings鍵是否存在?
- 29. 如何檢查ContactGroup是否存在
- 30. 如何檢查CakePHP是否存在Model?
有大量的協處理器寄存器可用於此目的,以便爲您提供關於該內核支持的內容以及什麼不是的詳細信息。獲得該或類似核心的TRM以查看這些寄存器的存在位置。 – 2014-11-02 16:03:26
我相信ARM處理器被設計成s.t.這些信息和這些寄存器實際上是有特權的;因此,在Linux下,您必須查看'/ proc/cpuinfo'來查找NEON或高級SIMD標誌。有關特權代碼,請參見ARMv7體系結構參考手冊,_B3.12.19 c1協處理器訪問控制寄存器(CPACR)_;該寄存器的第31位是你想要的。 – 2014-11-02 16:06:24
當設置爲1時,CPACR的第31位禁用NEON指令解除鎖定,這似乎不是檢測NEON引擎的直接方式。 – Thomson 2014-11-02 16:14:45