cost 369 ms
SIMD-within-a-register version of min/max

[英]SIMD-within-a-register version of min/max

假設我有兩個uint16_t[4] arrays, a和b 。 這些 arrays 中的每個 integer 都在 [0, 16383] 范圍內,因此未設置位 14 和 15。 然后我有一些代碼可以找到每個i的a[i]和b[i]中的最小值和最大值: 假設出於某種原因我不能/不會使用 SIMD,但我 ...

在 4 元素短數組中找到 16 位匹配的最快方法?

[英]Fastest way to find 16bit match in a 4 element short array?

我可以使用 nanobench 來確認。 今天我覺得自己不聰明,想不出一個簡單的方法我有一個數組, short arr[]={0x1234, 0x5432, 0x9090, 0xFEED}; . 我知道我可以使用 SIMD 一次比較所有元素,使用movemask + tzcnt找到匹配項的索引。 ...

高效地反轉 64 位字中 16 位量的順序

[英]Performantly reverse the order of 16-bit quantities within a 64-bit word

我需要對少量小的無符號整數進行字典比較。 如果有(例如)8 個 8 位整數,顯而易見的方法是對它們進行字節交換並在 GPR 中進行普通整數比較。 如果有 2 個 32 位整數,則 32 位循環和普通比較就可以了。 如果有 4 個 16 位整數怎么辦? 顯然,使用向量寄存器很容易將它們打亂,但是有沒有 ...

寄存器可以一次保存多個值嗎?

[英]Can a register hold multiple values at a time?

在 64 位 x86 寄存器的情況下,如果一個值的大小足夠小以至於多個指令可以放入一個寄存器,是否可以在同一個寄存器中一次保存多個值? 例如將兩個 32 位整數裝入一個寄存器。 如果可能,這會是一件壞事嗎? 我一直在閱讀寄存器,我對這個概念很陌生。 ...

並行將 64 位整數中的壓縮 8 位整數減去 1,SWAR 無需硬件 SIMD

[英]Subtracting packed 8-bit integers in an 64-bit integer by 1 in parallel, SWAR without hardware SIMD

如果我有一個 64 位整數,我將其解釋為一個包含 8 個元素的壓縮 8 位整數數組。 我需要在處理溢出時從每個壓縮整數中減去常量1 ,而一個元素的結果不會影響另一個元素的結果。 我現在有這個代碼並且它可以工作,但我需要一個解決方案來並行地減去每個打包的 8 位整數並且不進行內存訪問。 在 x86 ...

按段比較 64 位整數

[英]Compare 64-bit integers by segments

我有兩個 64 位整數x和y 。 每個代表5個無符號短整數:前10位代表第一個整數,接下來的13位代表第二個整數,接下來的16位代表第三個整數,接下來的14位代表第四個整數,其余位代表第 5 個整數。 設x0 , x1 , x2 , x3 , x4是構成x的 5 個短整數。 設y0 , y1 , ...

有沒有一種有效的方法可以對 64 位數字的高 32 位部分和低 32 位部分分別進行 32 位按位旋轉?

[英]Is there an efficient way of doing 32-bit bitwise rotation separately on the high and low 32-bit parts of a 64-bit number?

我目前在 C/C++ 工作,我有一個uint64_t 。 我需要分別對前 32 位和后 32 位進行按位旋轉。 例如,如果我的輸入是 我需要向右旋轉 2 位,正確的輸出是 顯而易見的方法是創建一個臨時的 32 位數字並分別對其進行旋轉操作,但是否有不同的、有效的方法來做到這一點? ...

該算法如何計算 32 位整數中設置的位數?

[英]How does this algorithm to count the number of set bits in a 32-bit integer work?

我看過這段代碼,它計算 32 位整數中的位數等於1 ,我注意到它的性能優於__builtin_popcount但我無法理解它的工作方式。 有人可以詳細解釋這段代碼是如何工作的嗎? ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM