intrinsics

    -1熱度

    1回答

    使用AVX內在和Kahan的總和算法,我已經試過這(只是一個「加法」的部分): void add(const __m256 valuesToAdd) { volatile __m256 y = _mm256_sub_ps(valuesToAdd, accumulatedError); volatile __m256 t = _mm256_add_ps(accumulator,

    3熱度

    1回答

    我試圖在內核中嵌入ARMv8上的AES實現。我有一個C++實現,並且我有一個英特爾內核實現。 實現應該是等效的,所以我試圖將英特爾用作ARMv8的藍圖。有一些差異,但他們是佔了。問題是,我得到了不同的結果。 void AES_encrypt(const Byte *in, Byte *out, const RoundKey *rdkeys, unsigned int rounds) { #if

    2熱度

    1回答

    我有兩個浮點操作數的比較結果比較如下;我需要的是基於比較的結果做需要執行以下操作:即: neon_gt_res = vcgtq_f32(temp1, temp2); if(neon_gt_res[0]) array[0] |= (unsigned char)0x01; if(neon_gt_res[1]) array[0] |= (unsigned char)0x02; if(neon_gt

    3熱度

    1回答

    _mm512_storenrngo_pd和_mm512_storenr_pd有什麼區別? _mm512_storenr_pd(無效*公噸,__m512d V): 商店壓縮雙精度(64位)從V 浮點元素存儲器地址公噸用非讀取暗示到處理器。 我不清楚,什麼沒有讀取提示的意思。這是否意味着它是非緩存一致寫入。這是否意味着重用更昂貴或者不一致? _mm512_storenrngo_pd(無效*公噸,__m

    3熱度

    1回答

    在AVX/AVX2中,我只能找到_mm256_stream_load_si256(),這是__m256i。有沒有辦法流式加載__m256d,爲什麼? (我想加載它沒有污染CPU緩存) 是否有任何障礙做下列(積極鑄造)? __m256d *pDest = /* ... */; __m256d *pSrc = /* ... */; /* ... */ const __m256i iWeigh

    5熱度

    1回答

    我想從一個由8個整數組成的另一個__mm256i offset指定的8個位置從一個寄存器變量__mm256i src中提取8個比特。 例如:如果offset是[1,3,5,21,100,200,201,202],我想從src獲得第1,3,5,10,100,121,202位,並將它們打包到int8。 這個問題類似於Extracting bits using bit manipulation,但我想用

    1熱度

    1回答

    我正在看一些我們測試的ARM開發板的ARM反彙編。它們使用NEON固有的vld1q_u32使用-march=armv7-a -mfloat-abi=hard -mfpu=neon生產。 一個一個特定的機器與NEON我們看到(/proc/cpuinfo half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae

    3熱度

    2回答

    在Visual C++中,當針對Windows 32位時_umul128未定義。 針對Win32時,兩個無符號64位整數如何相乘? 該解決方案只需在針對Windows 32位的Visual C++ 2017上工作。

    1熱度

    1回答

    我試圖將一些ARM NEON代碼移植到AltiVec。我們的NEON代碼有兩個LOAD,一個ROT,一個XOR和一個存儲,所以它看起來像一個簡單的測試案例。根據IBM的vec_rl文檔: 結果的每個元素都是通過將左邊的相應元素旋轉b的相應元素指定的位數獲得的。 該文檔繼續說vector unsigned int是,除非-qarch=power8最大的數據類型,在這種情況下vector unsign

    0熱度

    2回答

    我發現_m128i int horizontal_max_Vec4i(__m128i x) { __m128i max1 = _mm_shuffle_epi32(x, _MM_SHUFFLE(0,0,3,2)); __m128i max2 = _mm_max_epi32(x,max1); __m128i max3 = _mm_shuffle_epi32(max2, _