llvm-project
b2edc0a3 - wasm: recognize `any_true` and `all_true` (#155885)

Commit
28 days ago
wasm: recognize `any_true` and `all_true` (#155885) fixes https://github.com/llvm/llvm-project/issues/129441 cc @lukel97 @badumbatish https://github.com/llvm/llvm-project/pull/145108 I've been learning a bit about LLVM, trying to make progress on some of these issues. The code below is based on https://github.com/llvm/llvm-project/pull/145108#issuecomment-3004561085, by implementing `shouldExpandReduction`. The implementation works for the test cases I added, but (obviously) fails for any existing cases. `ISD::VECREDUCE_AND` and `ISD::VECREDUCE_OR` are now marked as legal, which is required for the `Pat`s to fire, but when they don't that causes a selection failure. So, I'm wondering, what is the right approach here. Should I mark these intrinsics as `Custom` instead and manually perform the transformation in C++? Or is there some trick to still get the default lowering (a series of loads and scalar bitwise operations) when the patterns don't fire?
Author
Parents
Loading