intrinsics

    0熱度

    1回答

    有誰知道如何從源代碼中刪除所有SSE2內部函數(在Visual C++中)?有些地方可能會有一些,因爲我一直在使用SSE2。現在我想再次將我的項目移至SSE。我想知道是否可以通過一次編譯定義一些東西來找到它們。 感謝您的幫助@ Heandel和Necrolis 我做到了,確實是用手工查找「_mm _」 ......那種......然後查找每個。

    6熱度

    2回答

    我剛開始學習和使用ASP.NET MVC 2,並且也越來越多地參與單元測試我的代碼。我的問題廣泛地是如何通過在我的測試中傳遞憑證來模擬用戶登錄。 我正在使用MSpec,並試圖讓我的頭繞着僞裝來寫我的測試。到目前爲止,我相信我已經正確編寫了一個測試(它通過了測試條件),以便當未經身份驗證的用戶嘗試訪問頁面時。 Subject(typeof(HomeController))] public clas

    4熱度

    2回答

    我想通過使用gfortran從源代碼構建它來獲得傳統的FORTRAN代碼。我終於能夠成功地構建它,但是現在我在運行時遇到了出界錯誤。我使用gdb並將錯誤追蹤到使用loc()內部函數。當我嘗試打印loc(ae)的值時,ae正在傳遞給我的整數值,在當前上下文中出現錯誤「無符號」loc。「我試着編譯ifort 11.x並用DDT調試,並得到相同的錯誤。對我而言,這意味着編譯器不知道內在的東西。 有一點讀

    4熱度

    2回答

    我需要在SSE2彙編器中編寫一些東西。 我看到的所有內容都是內在的。 我一直在尋找一個從intrinsics到彙編器的翻譯表。 因爲我不想玩猜謎遊戲,有人可以給我一個鏈接,將這些可怕的內在因素轉化爲漂亮的裝配。 我只需要SSE/SSE2整數指令。 請不要告訴我只使用C(++)我沒有這個選項,我也不想。 我在哪裏可以獲得翻譯指南? 編輯 感謝您的鏈接,但我沒有翻譯但對於複合intrinsic,沒有任

    2熱度

    1回答

    我有一個算法,從SSE(2)內在函數的手優化中受益。此外,該算法將來也能從256位AVX寄存器中受益。 我的問題是什麼是 註冊我在編譯時類的可用性變種的最佳方式;所以如果我的類是:Foo,FooSSE2和FooAVX我需要在運行時確定編譯哪些類的方法。 確定當前CPU的功能。在最低級別,這將導致撥打cpuid。 根據編譯內容和支持的內容,在運行時決定使用哪些內容。 雖然我可以破解上面的大部分內容,

    7熱度

    2回答

    我想弄清楚一個合理快速的雙線性濾波函數只適用於一次過濾的樣本,因爲現在習慣了使用內在函數的練習 - 最多SSE41是好的。 到目前爲止,我有以下幾點: inline __m128i DivideBy255_8xUint16(const __m128i value) { // Blinn 16bit divide by 255 trick but across 8 packed 16bi

    1熱度

    2回答

    我想從128位寄存器中提取數值(第一個字16bits),我得到了這個命令但這不起作用。設置a的值後會有一些算術運算,比會有一些算術運算的變量中的結果將最終改變我想提取的第一個字...我怎樣才能做到這一點... int r; int inm=0; __m128i a=_mm_setr_epi16(8,9,3,2,4,5,6,11); _asm{ r = _mm_extract_e

    4熱度

    1回答

    我正試圖優化嵌入式系統(FLAC解碼,Windows CE,ARM 926 MCU)中的一些代碼。 的default implementation使用宏和查找表: /* counts the # of zero MSBs in a word */ #define COUNT_ZERO_MSBS(word) (\ (word) <= 0xffff ? \ ((word) <= 0xff

    6熱度

    4回答

    我目前正在嘗試爲我的圖書館創建高度優化的可重用函數。舉例來說,我寫的函數「是2的冪」的方式如下: template<class IntType> inline bool is_power_of_two(const IntType x) { return (x != 0) && ((x & (x - 1)) == 0); } 這是一種便攜式,低維護的實現爲內嵌C++模板。此代碼是

    11熱度

    4回答

    我正在使用SSE內在函數優化用於Intel x86 Nehalem微體系結構的一些代碼。 我的程序的一部分計算4點積,並將每個結果添加到數組的連續塊中的先前值。更具體地講, tmp0 = _mm_dp_ps(A_0m, B_0m, 0xF1); tmp1 = _mm_dp_ps(A_1m, B_0m, 0xF2); tmp2 = _mm_dp_ps(A_2m, B_0m, 0xF4); tm