在進行基準測試時,我測得的吞吐量比我計算的要低得多,我將其縮小到LZCNT指令(TZCNT也是如此),如以下基準測試所示: xor ecx, ecx_benchloop: lzcnt eax, edx add ecx, 1 jnz _benchloop和: xor ecx, ecx_benchloop: xor eax, eax ; this shouldn't help, but it does lzcnt eax, edx add ecx, 1 jnz _benchloop第二個版本要快得多。不應該這樣 沒有理由為什么LZCNT應該對其輸出具有輸入依賴性。與BSR / BSF不同,xZCNT指令始終覆蓋其輸出。我正在4770K上運行它,因此LZCNT和TZCNT不會作為BSR / BSF執行。這里發生了什么?
3 回答

蕪湖不蕪
TA貢獻1796條經驗 獲得超7個贊
沒什么可不幸的。您似乎已經排除了對齊方式,而我們只是排除了部分標志的依賴性?!爱斈瞬豢赡艿氖挛飼r,無論多么不可能,仍然是必須存在的事實?!蔽覀兛赡苓€沒有消除所有其他事物,但是看起來越來越像在您的處理器上實現的xZCNT依賴于其輸出寄存器重命名。
- 3 回答
- 0 關注
- 670 瀏覽
添加回答
舉報
0/150
提交
取消