llvm.is.fpclass is different from other vectorizable intrinsics in that
it is overloaded on an argument type, not on the return type.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Similar to D132344, but it look like this patch has stalled.
llvm/lib/Analysis/VectorUtils.cpp | ||
---|---|---|
131 | I'm not sure about the change in the default here, IICU this is now considering any other intrinsic to have the return type overloaded? | |
llvm/test/Transforms/LoopVectorize/ARM/is_fpclass.ll | ||
4 ↗ | (On Diff #515648) | The triple doesn't match the sub-directory, aarch64- needs to be in the AArch64 subdirectory. But does the test need to be target specific in the first place? Could you just use -force-vector-width=4 -force-vector-interleave=1 or something, without a triple? Also, would be good to add the test separately. |
llvm/lib/Analysis/VectorUtils.cpp | ||
---|---|---|
131 | Yes. All callers of isVectorIntrinsicWithOverloadTypeAtArg were already making this assumption implicitly. I have changed them to make an explicit check for isVectorIntrinsicWithOverloadTypeAtArg(ID, -1). | |
llvm/test/Transforms/LoopVectorize/ARM/is_fpclass.ll | ||
4 ↗ | (On Diff #515648) | Thanks. I didn't know how to remove the triple. I will try the -force-vector-* options. |
LGTM, thanks!
llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp | ||
---|---|---|
485 | Could you add a comment here with an explanation? I.e. we are adding the return type if the intrinsic is overloaded on it. Might be good to add this in all updated places in the patch. |
I'm not sure about the change in the default here, IICU this is now considering any other intrinsic to have the return type overloaded?