kou opened a new issue, #36902: URL: https://github.com/apache/arrow/issues/36902
### Describe the enhancement requested Contexts: * https://github.com/apache/arrow/issues/31132#issuecomment-1378082076 * GH-14342 * GH-36685 We have runtime SIMD dispatch feature. For example, it's used in `cpp/src/parquet/level_conversion.cc` to run BMI2 based `DefLevelsToBitmap` implementation if available. `DefLevelsToBitmap` (`DefLevelsToBitmapSimd`) is implemented in `cpp/src/parquet/level_conversion_inc.h` and it's built with/without BMI2. `DefLevelsToBitmapSimd` uses `arrow::internal::BitmapWriter`. If `arrow::internal::BitmapWriter` in `DefLevelsToBitmapSimd` is not inlined, one-definition-rule violation is happen. If it's happen, `libparquet.dylib` has two `BitmapWriter` definitions for with/without BMI2. If BMI2 version `BitmapWriter` is used on BMI2 unavailable machine, "illegal opcode" is happen. GH-14342 resolved this by forcing to use `-O2` to enforce inlining. But it doesn't work with Homebrew. Because Homebrew overrides `-O*` specified by us. If we can avoid one-definition-rule violation of `arrow::internal::BitmapWriter` without depending on `-O2`, we can provide a Homebrew bottle that can use the BMI2 based implementation on machines that support BMI2. ### Component(s) C++ -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
