[WIP][SYCL][ESIMD] Replace mask_type_t with simd_mask to represent Gen predicates. #3787
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.
This patch introduces simd_mask class which represents a Gen simd operation mask.
Aims to have similar interface to std::experimantal::simd_mask:
(https://github.com/llvm/llvm-project/blob/main/libcxx/include/experimental/simd)
Compared to std::experimantal::simd_mask, this implementation
any_of, all_of, some_of, none_of, popcount, find_first_set, find_last_set
TODO (WIP): select and iupdate operations
This patch addresses this review comment:
// TODO @rolandschulz on May 21
// {quote}
// - The mask should also be a wrapper around the clang - vector type rather
// than the clang - vector type itself.
// - The internal storage should be implementation defined.uint16_t is a bad
// choice for some HW.Nor is it how clang - vector types works(using the same
// size int as the corresponding vector type used for comparison(e.g. long for
// double and int for float)).
E2E test: intel/llvm-test-suite#286
Signed-off-by: kbobrovs [email protected]