我想對齊指針p以便p = a (modulo b)
。大多數情況下,SIMD對齊時a = 0和b = 32或64,但當我想微調我的算法以獲得緩存關聯性時,我可能也希望a = 64和b = 128。對齊指針
std::align
不接受任何2的權力爲alignement。這將是固定在C++ 17,但它是無用的,現在__mm_malloc/__free
是不那麼容易移植,因爲我想
我最好的解決方案迄今指針轉換爲std::uintptr_t
和使用模運算整數來移動指針。不幸的是,它不是可移植的,因爲投擲指針std::uintptr_t
不是「允許」的。但它適用於迄今爲止我嘗試過的所有平臺。
這樣的代碼會破壞什麼樣的平臺?
的std ::對齊還不接受2.任何權力它將工作在C++ 17:http://en.cppreference.com/w/cpp/memory/align – InsideLoop