MMX SSE 3D NOW!のプログラミング at TECH
[2ch|▼Menu]
478:ヽ・´∀`・,,)っ━━━━━━┓
07/12/27 02:18:53
>>473
VC++だとmaxsdしか使わない予感。

>>473ベースで、arrayの要素が偶数個で128ビット境界にあってるの前提ならこんな感じ
たぶんSSE3くらいは使えるよね?たいしたことに使ってないけど。

#include <pmmintrin.h>
double maxabs(double array[], int size) {
    static const union {
        __m128d pd;
        __int64 a[2];
    } mask = { 0x7FFFFFFFFFFFFFFFi64, 0x7FFFFFFFFFFFFFFFi64 };
    double ans;
    __m128d ans_pd = { 0.0, 0.0 };
    for (int i = 0; i < size; i+= 2)
        ans_pd = _mm_max_pd( ans_pd, _mm_and_pd(mask.pd, *((__m128d*)&array[i])) );
    ans_pd = _mm_hadd_pd(ans_pd, ans_pd);
    _mm_store_sd(&ans, ans_pd);
    return ans;
}




次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5330日前に更新/141 KB
担当:undef