[英]In SIMD, SSE2,many instructions named as "_mm_set_epi8","_mm_cmpgt_epi8 " and so on,what does "mm" "epi" mean?
我看到許多使用簡寫的指令,例如“_mm_and_si128”。 我想知道“mm”是什么意思。 ...
[英]In SIMD, SSE2,many instructions named as "_mm_set_epi8","_mm_cmpgt_epi8 " and so on,what does "mm" "epi" mean?
我看到許多使用簡寫的指令,例如“_mm_and_si128”。 我想知道“mm”是什么意思。 ...
[英]Access value from __m128 in rust by index
我已經看到在 C 中按索引訪問__m128寄存器中的值相當簡單。 但是,在 rust 中無法做到這一點。 如何訪問這些值? 具體來說,我一次計算四個值,然后使用_mm_cmplt_ps比較它們。 我使用該返回寄存器作為進一步計算的掩碼。 ...
[英]AVX divide __m256i packed 32-bit integers by two (no AVX2)
我正在尋找使用 AVX 將打包的 32 位整數的__m256i除以二(又名右移一位)的最快方法。 我無權訪問 AVX2。 據我所知,我的選擇是: 下拉到 SSE2 類似於AVX __m256i integer 帶符號 32 位元素的除法如果我需要將 go 降低到 SSE2,我會感謝最好的 SSE2 ...
[英]Can FP compares like SSE2 _mm_cmpeq_pd be used to compare 64 bit integers?
FP 比較像 SSE2 _mm_cmpeq_pd / AVX _mm_cmp_pd可以用來比較 64 位整數嗎? 這個想法是模擬丟失的_mm_cmpeq_epi64 ,它類似於_mm_cmpeq_epi8 、 _mm_cmpeq_epi16 、 _mm_cmpeq_epi32 。 擔心的是我不確 ...
[英]Is there a difference between SVML vs. normal intrinsic square root functions?
普通 sqrtps/pd 或 SVML 版本之間在精度或性能上是否存在任何差異: 我知道像_mm_sin_ps這樣的 SVML Intrinsics 實際上是由多個 asm 指令組成的函數,因此它們應該比任何單個乘法甚至除法都慢。 但是,我很好奇如果有可用的硬件級內部函數,為什么這些 functi ...
[英]how to set a int32 value at some index within an m128i with only SSE2?
是否有可以在 m128i 中設置單個 int32 值的 SSE2 內在函數? 例如在已經包含 1,2,3,4 的 m128i 上的索引 1 處設置值 1000? (導致 1,1000,3,4) ...
[英]_mm_load_si128 loads data in reverse order
我正在編寫一個帶有 SSE2 內在函數的 C function 以基本上比較 4 個 32 位整數並檢查哪些大於零,並以 16 位掩碼的形式給出該結果。 我正在使用以下代碼來執行此操作 但是,當我編譯並運行它時,它會打印0xf0f0 。 我希望結果遵循從 memory 加載的相同順序。 為了進一步檢 ...
[英]The right way to use function _mm_clflush to flush a large struct
我開始使用像_mm_clflush 、 _mm_clflushopt和_mm_clwb這樣的函數。 現在說,因為我已經定義了一個結構名稱 mystruct,它的大小是 256 字節。 我的緩存線大小是 64 字節。 現在我想刷新包含 mystruct 變量的緩存行。 以下哪種方法是正確的方法? 或者 ...
[英]Quick workaround for SSE2 movq instruction on non-SSE2 CPUs
我怎樣才能將movq SSE2 指令轉換成一個簡單的代碼片段,然后我可以將其修補到原來的 EXE 中? 如果您可以提供示例直接說明以用作替代“模板”,那就更好了! 我最感興趣的是主要使用 C 將這種基於模板的替換寫入我的 CodeBlocks 項目,所以我更喜歡它是內聯 ASM 表單。 這樣,我可以 ...
[英]How to best emulate the logical meaning of _mm_slli_si128 (128-bit bit-shift), not _mm_bslli_si128
瀏覽英特爾內在函數指南,我看到了這個指令。 翻看命名模式,意思應該很清楚了:“將 128 位寄存器左移固定位數”,其實不然。 實際上,它移動了固定的字節數,這使得它與_mm_bslli_si128 。 這是疏忽嗎? 它不應該按_mm_slli_epi32或_mm_slli_epi64類的位移動嗎? ...
[英]Better way to store or extract scalar int result using SSE2 intrinsic
我想知道在使用 SSE2 時如何有效地加載和存儲變量。 在這個例子中,我想對 C function 執行pclmulqdq指令(進行較少的乘法,對多項式算術有用),所以我需要與標准 function 相同的“調用約定”。 a 和 b 是 16 位有效位,結果將有 32 位有效位 ...
[英]SSE2 registers in x86 assembly
我有以下代碼: 基本上,我從用戶那里獲取數字,然后我想使用 SSE2 計算這個數字的階乘。 “階乘”部分尚未完成,我只想檢查這些寄存器是否獲得正確的值。 所以問題是當我嘗試movups xmm0, [eax]時出現分段錯誤,因此我的問題是將這個數字傳輸到 sse2 寄存器的正確方法是什么? 我找不 ...
[英]What is the most efficient way to do unsigned 64 bit comparison on SSE2?
PCMPGTQ 在 SSE2 上不存在,並且本身不適用於無符號整數。 我們的目標是為無符號 64 位比較提供向后兼容的解決方案,以便我們可以將它們包含到 WebAssembly SIMD 標准中。 這是 ARMv7+NEON 的姊妹問題: 在 ARMv7 上使用 NEON 進行 SIMD 無符號 ...
[英]SSE4.1 unsigned integer comparison with overflow
考慮到 16 位無符號加法( _mm_add_epi16() )是否會溢出,有什么方法可以使用 SSE2/4.1 指令執行類似 C >= (A + B) 的比較? 代碼片段看起來像 - 問題是當 16 位加法溢出(回繞)時,大於比較會導致誤報。 我不能出於我的目的使用飽和添加。 我在這里查看了 ...
[英]How to simulate pcmpgtq on sse2?
PCMPGTQ 是在 sse4.2 中引入的,它為產生掩碼的 64 位數字提供大於符號的比較。 在 sse4.2 之前的指令集上如何支持此功能? 更新:同樣的問題適用於帶有 Neon 的 ARMv7,它也缺少 64 位比較器。 在這里可以找到與此相關的姊妹問題: 在 ARMv7a 與 Neon ...
[英]How to add to variable using SSE2?
如何使用SSE2“添加到”變量? 我最近一直在 C++ 中使用 SSE2 來優化一些數學函數,但是在嘗試添加到現有變量時遇到了問題。 我有一個函數,它接收這樣的變量: 但我找不到正確的內在名稱... 我知道_mm_add_pd只會將變量加在一起,但我找不到任何可以解釋如何將其添加到 ( + ...
[英]How do you do signed 32bit widening multiplication on SSE2?
在審查擴展乘法的 WebAssembly SIMD 提議時提出了這個問題。 為了支持較舊的硬件,我們需要支持 SSE2,並且 32 位整數的唯一向量乘法運算是pmuludq 。 (帶符號pmuldq是SSE4.1才加入的) (非加寬相對容易;隨機輸入 2x pmuludq並取 4 個結果的低半 ...
[英]how would you optimize this vectorized sum of harmonics?
我正在使用矢量化(僅 SSE2 max 作為 SIMD)將一堆諧波相加,每個諧波具有不同的相位/幅度。 這是我的實際嘗試: 但: 我想我可以優化它更多,也許用一些數學技巧,或者以一些增量保存 我不喜歡為V4重復一次“相同的代碼”,一次為remainder (如果諧波的數量不是 % 4) ...
[英]How to copy X bytes or bits from an __m128i into standard memory
我有一個循環,它通過_mm_add_epi16()將兩個數組中的 int16s 添加在一起。 有一個小數組和一個大數組,結果被寫回大數組。 如果內在函數已到達末尾,則它可能從小數組中獲得少於 8x 個 int16s(128 位) - 當我不想要所有 128 位時,如何將_mm_add_epi16() ...
[英]Test if any byte in an xmm register is 0
我目前正在自學 SIMD,並且正在編寫一個相當簡單的字符串處理子程序。 但是,我僅限於 SSE2 ,這使我無法利用 ptest 找到 null 終端。 我目前試圖找到 null 終端的方式使我的 SIMD 循環有 >16 條指令,這違背了使用 SIMD 的目的——或者至少使它不值得。 我想知 ...