Support vectorization of the gc.loaded intrinsics #56188
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivated by #56145 (comment) I was interested
in seeing if we could teach LLVM about vectorizing our intrinsics that will be removed before the final result
e.g.
@julia.gc_loaded
This is an alternative to #51536 and uses the "vector-function-abi-variant" attribute.
This creates a lot of code-duplication so it might make sense to first do #52945
On nightly (54299d9)
On this PR:
Not pretty, but at least the intrinsic no longer blocks vectorization.
Running with
JULIA_LLVM_ARGS="--debug-only=vfabi-demangler"
and with
JULIA_LLVM_ARGS="--print-after=loop-vectorize --pass-remarks-analysis=loop-vectorize"