mmx

    2熱度

    3回答

    我正在學習如何在視頻應用程序中使用英特爾MMX和SSE指令。我有一個8字節的單詞,我想添加所有8個字節併產生一個整數作爲結果。直截了當的方法是一系列7班倒並增加,但這是緩慢的。這樣做的最快方法是什麼?是否有MMX或SSE指令? 這是做 unsigned long PackedWord = whatever.... int byte1 = 0xff & (PackedWord); int byt

    1熱度

    1回答

    我正在編寫一個程序,使用SSE指令來增加和增加整數值。我用浮點數做了同樣的程序,但我缺少整數版本的instruccion。 用浮漂,我已經完成了我的所有操作後,我返回去值回常規int數組做: _mm_store_ps(temp4,temp3); temp4是float *和TEMP3一個__m128。 問題是,我找不到一個相似的內部整合者。我應該如何將值返回給常規數組? 非常感謝您的回答;)

    1熱度

    4回答

    爲了使用矢量操作,我在裝配中試圖使用矢量操作,這是我以前從未真正使用過的,我承認在處理某些語法時遇到了一些麻煩。 相關代碼如下。 unit16_t asdf[4]; asdf[0] = 1; asdf[1] = 2; asdf[2] = 3; asdf[3] = 4; uint16_t other = 3; __asm__("movq %0, %%mm0" :

    -4熱度

    1回答

    我有一個100個元素的數組,我想添加所有這100個元素。我使用了相同的C代碼爲波紋管 for(i=0;i<100;i++) { sum+= a[i]; } 讓我們假設處理器正在100指令週期增加100元,這將降低應用程序的速度。所以,我想知道是否有任何指令可以在單個指令週期內添加100個元素來加速應用程序。

    2熱度

    1回答

    當我在尋找MMX功能時,我注意到他們中的兩個,_m_empty和_mm_empty,有exactly the same definition。 那他們爲什麼都存在?他們中的一個比另一個更老?有沒有在手冊中提到的差異?

    0熱度

    1回答

    我想使用MMX指令集來優化我的Linux C程序,該程序會對以RGB格式存儲的圖像執行大量操作(每個RGB組件都存儲在無符號字符中)。這些操作是微不足道的:我從另一個像素中逐個像素地減去一個圖像,並累計差值的絕對值之和。 (基本上,我有一個小圖像或模式,並且我試圖找出該模式是否存在於較大的圖像中)。 我知道這可以使用MMX指令以彙編語言進行編碼,以SIMD方式進行單獨的字節操作。但是,有沒有更簡單

    1熱度

    1回答

    我正在使用gnu彙編和gcc編譯器。 我必須使用mmx寄存器進行一些操作。 我有一個字節的內存緩衝區,我正在從內存中讀取1個字節到%al,從而進行邏輯和操作,並將rax左移1個字節,並在內存的下一個字節中插入下一個字節,直到%rax變滿。然後,當我試圖做的事: movq %rax, %mm0 編譯器拋出:錯誤:操作數類型不匹配`MOVQ」 例子: 這工作: mov $0, %rcx\n"

    2熱度

    1回答

    我的機器是Core2微體系結構,我試圖編譯一些針對SSE指令集的算術代碼。我在網絡和官方手冊上搜索過,我相信我所要做的就是添加國旗-march=native,因爲我的芯片支持SSE。 但是,當我使用gcc -march=native -Q --help=target -v來檢查標誌是否真正起作用時,屏幕上顯示的結果不是我所期望的。例如: -msse [disabled] -msse

    0熱度

    2回答

    我必須將整數向量與其他整數向量相乘,然後將結果(所以是一個整數向量)與浮點值向量相加。 我應該使用MMX還是SSE4作爲整數,還是我可以使用SSE和所有這些值(即使有整數?)將整數放入__m128寄存器中? 事實上,我經常在__m128寄存器中使用整數,並且我不知道是在浪費時間(隱式轉換值)還是它是相同的東西。 我正在編譯-O3選項。

    0熱度

    1回答

    我正在嘗試使用匯編語言執行兩個小陣列的簡單dotproduct計算。這裏是我的代碼: #include <cstdio> #include <cstdint> #include <cstdlib> void fillArray(int16_t* a, int16_t* b, int n){ std::srand(1); int i = 0; do