Linux 如何在gcc中编译内部代码
我正在尝试编译以下代码:Linux 如何在gcc中编译内部代码,linux,gcc,Linux,Gcc,我正在尝试编译以下代码: #include <sys/types.h> #include <argp.h> #include <stdlib.h> #include <xmmintrin.h> __attribute__((noinline)) void vadd(float *a, float *b, size_t size) { size_t i; for (i=0; i<size; i+=4) {
#include <sys/types.h>
#include <argp.h>
#include <stdlib.h>
#include <xmmintrin.h>
__attribute__((noinline)) void vadd(float *a, float *b, size_t size)
{
size_t i;
for (i=0; i<size; i+=4)
{
__m128 v1 = _mm_load_ps(a + i); //loads up 4 floats into a __m128
__m128 v2 = _mm_load_ps(b + i); //loads up 4 floats into a __m128
__m128 v3 = _mm_add_ps(v1, v2);
_mm_store_ps(a+i, v3);
}
}
__attribute__((noinline)) void sadd(float *a, float *b, size_t size)
{
size_t i;
for(i=0; i<size; i++)
{
a[i] += b[i];
}
}
int main (void)
{
size_t size = 300000000;
float *a = (float *)calloc(size, sizeof(float));
float *b = (float *)calloc(size, sizeof(float));
vadd(a, b, size);
sadd(a, b, size);
}
有办法解决这个问题吗 代码编译为OK,例如gcc-4.9.2:PCLinuxOS-2016-64位。您使用的是哪种32位操作系统?我正在尝试在Ubuntu 10 32位VM和gcc 4.8上编译代码,例如gcc-4.9.2:PCLinuxOS-2016-64位。你在使用哪种32位操作系统?我正在尝试在Ubuntu 10 32位虚拟机和GCC4.8上编译
/usr/lib/gcc/i486-linux-gnu/4.8/include/mmintrin.h: In function ‘_mm_cvtsi32_si64’:
/usr/lib/gcc/i486-linux-gnu/4.8/include/mmintrin.h:61:3: error: can’t convert between vector values of different size
return (__m64) __builtin_ia32_vec_init_v2si (__i, 0);