SSE AVXのプログラミング
■ このスレッドは過去ログ倉庫に格納されています
0491デフォルトの名無しさん
2011/10/28(金) 23:41:12.75現在は、下のようにプログラムを組んでいますが、特に SSE2 の場合遅いです。
実際のプログラムでは表示ではなく、if 文の条件式の中で使っています。
CPU は Core2Duo E6600 と Core2Quad Q9550 です。どなたか教えてください。*/
#include <smmintrin.h>
#include <stdio.h>
typedef union tagMM { long long i[2]; __m128i m; } mm_t;
const mm_t MM_FULL = {{-1,-1}};
#define IS_ZERO_SSE4(A) (_mm_testz_si128(A,MM_FULL.m)!=0)
int IS_ZERO_SSE2(const __m128i a) {
long long temp[2];
_mm_storeu_si128((__m128i*)temp,a);
return temp[0]==0&&temp[1]==0;
}
int main(void) {
mm_t zero={{0,0}}, test={{0,8}};
printf("zero SSE2:%d SSE4:%d\n",IS_ZERO_SSE2(zero.m),IS_ZERO_SSE4(zero.m));
printf("test SSE2:%d SSE4:%d\n",IS_ZERO_SSE2(test.m),IS_ZERO_SSE4(test.m));
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています