intrinsics

    4熱度

    1回答

    內在我是新來使用內部函數,但我想編寫一個函數,它利用4個雙打矢量計算a > 1e-5 ? std::sqrt(a) : 0.0我的第一反應是寫這如下 #include <immintrin.h> __m256d f(__m256d a) { __m256d is_valid = a > _mm256_set1_pd(1e-5); __m256d sqrt_val = _mm

    2熱度

    1回答

    _mm_cvtepi16_epi32(pmovsxwd)需要SSE4.1 我們怎樣才能只SSE3,或SSE2符號擴展矢量元素? SSSE3的答案也許很有趣。

    1熱度

    1回答

    GCC是否支持dvec.h,如果不支持,我可以做些什麼來編寫用於ICC的代碼以便與GCC協同工作? 我得到錯誤: fatal error: dvec.h: No such file or directory #include <dvec.h> 另外,GCC找不到F32vec8。

    0熱度

    1回答

    我是新來的這些Intrinsics,但想知道如果你能幫我。由於這個錯誤,我的程序不會編譯。任何想法如何解決它?我會假設這應該工作,因爲r2_v也是數據類型__m128d error: initializing '__m128d' (vector of 2 'double' values) with an expression of incompatible type 'int'

    1熱度

    1回答

    是否像英特爾這樣的內部函數加載函數: _mm256_load_** 讀取從緩存或RAM進入到寄存器? 謝謝!

    0熱度

    1回答

    我目前正在優化一個程序,我需要計算__m128類型數的倒數平方根。最初,在矢量化之前(以及數字是浮點數),它只是ans = 1.0f/sqrt(num),但現在我有_mm_rsqrt_ps(num)。唯一的問題是,當處理更大的數據集時,這會使我的答案退出一定的數量。 我在想,如果使用的_mm_div_ps()和_mm_sqrt_ps功能將更加準確的(雖然我希望花更多的時間),在一個側面說明,如何分

    7熱度

    2回答

    我正在處理將-1.0到1.0範圍內的浮點取樣轉換爲帶符號16位的應用程序,以確保優化(SSE)例程的輸出準確無誤一組針對SSE版本運行非優化版本的測試,並比較它們的輸出。 在我開始之前,我已確認SSE舍入模式設置爲最近。 在我的測試情況下,計算公式爲: ratio = 65536/2 output = round(input * ratio) 在大多數情況下的結果是準確的,但在一個特定的輸入

    2熱度

    3回答

    我正在使用AVX內在函數進行矢量化,我想將像1.0這樣的常量浮點數填充到矢量__m256中。所以,在一個註冊我有一個向量{1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} 有誰知道如何做到這一點? 它類似於這個問題constant float with SIMD 但是我使用AVX不SSE

    1熱度

    1回答

    我正嘗試在Windows(GCC 4.8.1)上使用MinGW 64的_BitScanForward64內部函數(https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=381,421,373&cats=Bit%20Manipulation)。 我想: #include "immintrin.h" #include

    1熱度

    2回答

    在x86_64中,我知道mul和div opp代碼支持128個整數,方法是將較低的64位置於rax中,將較高的位置置於rdx寄存器中。我在intel內部指南中尋找某種內在因素來做到這一點,而我找不到它。我正在寫一個大字庫,其中字大小是64位。現在我正在用這樣的單詞進行劃分。 int ubi_div_i64(ubigint_t* a, ubi_i64_t b, ubi_i64_t* rem) {