![](/img/trans.png)
[英]Strength reduction on floating point division by hand
在我們本學期計算機科學的最后一項作業中,我們必須對一些代碼片段應用強度降低。 他們中的大多數都是直截了當的,尤其是在查看編譯器輸出時。 但是即使在編譯器的幫助下,我也無法解決其中一個問題。 我們的教授給了我們以下提示: 提示:查詢 IEEE 754 單精度浮點數在內存中的表示方式。 這是 ...
[英]Strength reduction on floating point division by hand
在我們本學期計算機科學的最后一項作業中,我們必須對一些代碼片段應用強度降低。 他們中的大多數都是直截了當的,尤其是在查看編譯器輸出時。 但是即使在編譯器的幫助下,我也無法解決其中一個問題。 我們的教授給了我們以下提示: 提示:查詢 IEEE 754 單精度浮點數在內存中的表示方式。 這是 ...
[英]Are indexes easier to vectorize than pointers?
是否有任何示例(例如在https://godbolt.org/ 上),當算法由指針迭代而不是數組索引表示時,CLang 會生成更糟糕的代碼? 例如,它可以在一種情況下矢量化/展開但不能在另一種情況下? 在簡單的例子中,這顯然無關緊要。 這是一個指針迭代樣式: 這是索引樣式的邏輯上相同的代碼: ...
[英]How to multiply a register by 37 using only 2 consecutive leal instructions in x86?
假設%edi包含x並且我想僅使用2個連續的leal指令結束37 * x,我將如何進行此操作? 例如,你可以做到45倍 我不能為我的生活找出代替8和4的數字,以便結果(%eax)將是37x ...
[英]Why is this program not optimized away?
考慮以下簡單程序(改編自此問題 ): 我相信它在功能上等同於以下一個: 然而clang 3.7.1 , gcc 5.3和icc 13.0.1似乎無法進行這樣的優化,即使使用-Ofast 。 (請注意編譯器之間生成的程序集如何大不相同!)。 但是,當從等式中刪除mul2和x2 ...
[英]Reduce this loop to an equation
此函數(為方便起見,用C語言編寫,但這對問題並不重要)決定了數組的大小。 我敢肯定它可以轉換為if-else鏈,甚至可以轉換為方程式,但是我不夠聰明,無法看到如何轉換。 (我試圖寫下明顯的if-else鏈,但在某些情況下陷入困境。) 如果存在將這種循環轉換為算術的通用,防呆子技術,那 ...
[英]How can I strength reduce division by 2^n + 1?
我需要在代碼的熱路徑中執行一些整數除法。 我已經通過分析和循環計數確定了整數除法對我造成的損失。 我希望我能做些什么來強化將分裂降低到更便宜的東西。 在這條路徑中,我除以2 ^ n + 1,其中n是可變的。 基本上我想優化此函數以刪除除法運算符: 如果我除以2 ^ n,我只需 ...
[英]add vs mul (IA32-Assembly)
我知道與mul函數相比, add更快。 我想知道如何在下面的代碼中使用add而不是mul來提高效率。 示例代碼: ...