sse

    2熱度

    1回答

    我對使用SSE的圖像中的像素執行按位非操作。 我有一些問題: 可以這樣使用OpenMP進一步優化? 算法中是否有瓶頸可以優化? 這裏是我的代碼: unsigned int iSSE2Size = (SrcImage1.GetHeight() * (SrcImage1.GetStepBytes() >> 1)) >> 3; __m128i *m_ucSrcPtr = (__m128i *)SrcI

    6熱度

    1回答

    我在內存中包含索引I0,I1,I2,I3的整數對齊數組。我的目標是讓它們進入包含I0,I0 + 1,I1,I1 + 1,I2,I2 + 1,I3,I3 + 1的__m256i寄存器。最難的部分是將它們放入256位寄存器I0,I0 ,I1,I1,I2,I2,I3,I3,之後我可以添加一個包含0,1,0,1,0,1,0,1的寄存器。 我發現了固有的_mm256_castsi128_si256,它我可以

    0熱度

    1回答

    我正在編譯其他團隊的源代碼。我明白我得到的錯誤,但我無法理解代碼的這一行(代碼庫應該是正確的)。 data_vec = _mm_set1_epi64(*((__m64*)&(ub8) ddata)); 什麼是(__m64 *)?那裏在做什麼? 編輯:錯誤是:需要左值作爲一元「&」操作數

    0熱度

    1回答

    我正在移植一些代碼,這會大量使用SSE4內在函數。它有一個非SSE實現,但是我希望只有SSE2的CPU仍然能夠使用更快的功能。 可能有人建議爲_mm_insert_epi32的有效替代 - 我想,我得到了一切覆蓋已經......其實,第二和函數的第三個參數是在我的情況下,零: foo = _mm_insert_epi32(vec, 0, 0);

    6熱度

    1回答

    我在執行未對齊的加載或存儲在頁面邊界旁邊(例如使用_mm_loadu_si128/_mm_storeu_si128內部函數)之前,應先檢查整個向量(本例中爲16字節)屬於同一頁面,如果不是,則切換到非矢量指令。我明白,如果下一頁不屬於進程,則需要這樣做來防止coredump。 但是,如果兩頁都屬於進程(例如它們是一個緩衝區的一部分,並且我知道該緩衝區的大小)呢?我寫了一個小的測試程序,它執行跨越頁

    4熱度

    1回答

    我有一個矩陣類(4×4) class matrix { public: matrix() {} matrix(float m11,float m21,float m31,float m41, float m12,float m22,float m32,float m42, float m13,float m23,float m33,float m43, f

    1熱度

    1回答

    我正在嘗試使用SSE進行一些添加,並且我正在使用這個C程序集。爲什麼這樣的東西不起作用? struct vector { float x1, x2, x3, x4; }; struct vector *dodawanie(const struct vector v1[], const struct vector v2[], int size) { struct vector v

    2熱度

    1回答

    我有一個8位無符號8位數的向量,範圍爲0 .. 12,位於xmm0。我想向量中的每個元素e上執行以下轉換: if (e != 12) e = 11 - e; 即,數字0,1,...,11被改變爲11,10,...,0而12保持不變。其他值不會發生,我不在乎他們會發生什麼。 如何使用SSE4指令集有效地實現此操作?

    2熱度

    1回答

    我有兩個SSE寄存器,我想用另一個的低半部分替換一個高半部分。像往常一樣,最快的方法。 我估計是由8個字節移位寄存器中的一個,然後alignr來連接是可行的。 有沒有單一指令的解決方案?在單個寄存器LO:

    0熱度

    1回答

    使用英特爾SSE內在這樣考慮一個代碼段: void foo(double* in1ptr, double* in2ptr) { double result[8]; /* .. stuff .. */ __m128d in1 = _mm_loadu_pd(in1ptr); __m128d in2 = _mm_loadu_pd(in2ptr);