博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
arm 的neon指令等同于arm64的asimd指令
阅读量:4216 次
发布时间:2019-05-26

本文共 1754 字,大约阅读时间需要 5 分钟。

在ceph 的src/test/test_arch.cc 中我们可以看到下面的code ,从kernel中的/proc/cpuinfo 中的feature来判断arm是否支持neon指令,需要注意这个指令在armv8 之后被称为asimd指令TEST(Arch, all){  ceph_arch_probe();  EXPECT_TRUE(ceph_arch_probed);#if (__arm__ || __aarch64__ || __x86_64__) && __linux__  char flags[FLAGS_SIZE];  FILE *f = popen("grep '^\\(flags\\|Features\\)[        ]*:' "                  "/proc/cpuinfo | head -1", "r");  if(f == NULL || fgets(flags, FLAGS_SIZE - 1, f) == NULL) {    // silently do nothing if /proc/cpuinfo does exist, is not    // readable or does not contain the expected information    if (f)      pclose(f);    return;  }  pclose(f);  flags[strlen(flags) - 1] = ' ';  int expected;#if (__arm__ || __aarch64__)#从这里知道neon和asimd 是一回事  expected = (strstr(flags, " neon ") || strstr(flags, " asimd ")) ? 1 : 0;  EXPECT_EQ(expected, ceph_arch_neon);#endif除了通过/proc/cpuinfo 外更通用的方式是通过/proc/self/auxv 来获取硬件featurestatic unsigned long get_auxval(unsigned long type){	unsigned long result = 0;	#打开这个文件	FILE *f = fopen("/proc/self/auxv", "r");	if (f) {		ElfW(auxv_t) entry;		#读取这个文件的AT_HWCAP		while (fread(&entry, sizeof(entry), 1, f) == 1) {			if (entry.a_type == type) {				result = entry.a_un.a_val;				break;			}		}		fclose(f);	}	return result;}static unsigned long get_hwcap(void){	return get_auxval(AT_HWCAP);}#endif // __linux__int ceph_arch_arm_probe(void){#从下面这段code 也可以知道arm下的neon 指令等同于arm64下的asimd指令#if __arm__ && __linux__	ceph_arch_neon = (get_hwcap() & HWCAP_NEON) == HWCAP_NEON;#elif __aarch64__ && __linux__	ceph_arch_neon = (get_hwcap() & HWCAP_ASIMD) == HWCAP_ASIMD;# if defined(HAVE_ARMV8_CRC) && defined(HWCAP_CRC32)	ceph_arch_aarch64_crc32 = (get_hwcap() & HWCAP_CRC32) == HWCAP_CRC32;# endif#else	if (0)		get_hwcap();  // make compiler shut up#endif	return 0;}

转载地址:http://xjnmi.baihongyu.com/

你可能感兴趣的文章
android 消息接受传送与线程的启动
查看>>
android 欢迎界面的实现在一个activity中
查看>>
android menu 使用总结1
查看>>
C++结构体与链表总结
查看>>
c,c++宏
查看>>
c++中的枚举类型
查看>>
c++ 运算符重载
查看>>
android使用已安装程序实现分享功能
查看>>
android实现截图功能
查看>>
android 网络连接状态判断与数据类型
查看>>
android webview 实现网页加载进度
查看>>
《人性的弱点》
查看>>
《大师们是如何工作的》
查看>>
c++ 中的多重继承和其权限问题
查看>>
那些年
查看>>
android listview 图文并茂
查看>>
c++中的拷贝构造函数
查看>>
北漂小记—黑客马拉松.北京站
查看>>
《浪潮之巅》1 AT&T
查看>>
《浪潮之巅》2蓝色巨人 IBM公司
查看>>