gpt4 book ai didi

c - 如何在我的计算机上启用对 POPCNT 指令/内部指令的支持?

转载 作者:太空狗 更新时间:2023-10-29 17:14:36 24 4
gpt4 key购买 nike

我尝试在我的计算机(Fedora 17 32 位)中运行以下程序。如何使我的系统支持用于快速人口计数的 popcnt 指令?

#include <stdio.h>
#include <nmmintrin.h>

int main(void)
{
int pop = _mm_popcnt_u32(0xf0f0f0f0ULL);
printf("pop = %d\n", pop);
return 0;
}

我编译了这个程序,并运行了它,但是得到了以下异常:

[xiliu@xiliu tmp]$ gcc -Wall -march=corei7 -m32 -msse4.2 popcnt.c -o popcnt
[xiliu@xiliu tmp]$ ./popcnt
Illegal instruction (core dumped)

以下是我的处理器信息:

[xiliu@xiliu tmp]$ cat /proc/cpuinfo 
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz
stepping : 13
microcode : 0xa4
cpu MHz : 800.000
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm dtherm
bogomips : 3458.20
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

[... repeated for 2nd core ...]

最佳答案

使用__builtin_popcount()相反,它不是特定于平台的。

关于c - 如何在我的计算机上启用对 POPCNT 指令/内部指令的支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com