Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unwanted Primitive <..> not implemented warnings #24

Open
cmrschwarz opened this issue May 6, 2023 · 0 comments
Open

Unwanted Primitive <..> not implemented warnings #24

cmrschwarz opened this issue May 6, 2023 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@cmrschwarz
Copy link
Contributor

The test suite currently produces a significant amount of warnings related to unimplemented primitives:

Full Dump
./build/generator_output/src/test/tsl_test |& grep -A 1 warning | grep implemented | cut -d" " -f4-
shift_left<simd<double, avx2>> not implemented.
shift_left<simd<float, avx2>> not implemented.
shift_left<simd<int8_t, avx2>> not implemented.
shift_left<simd<uint8_t, avx2>> not implemented.
shift_left<simd<double, avx512>> not implemented.
shift_left<simd<float, avx512>> not implemented.
shift_left<simd<int8_t, avx512>> not implemented.
shift_left<simd<uint8_t, avx512>> not implemented.
shift_left<simd<double, scalar>> not implemented.
shift_left<simd<float, scalar>> not implemented.
shift_left<simd<double, sse>> not implemented.
shift_left<simd<float, sse>> not implemented.
shift_left<simd<int8_t, sse>> not implemented.
shift_left<simd<uint8_t, sse>> not implemented.
shift_left_vector<simd<double, avx2>> not implemented.
shift_left_vector<simd<float, avx2>> not implemented.
shift_left_vector<simd<int8_t, avx2>> not implemented.
shift_left_vector<simd<uint8_t, avx2>> not implemented.
shift_left_vector<simd<double, avx512>> not implemented.
shift_left_vector<simd<float, avx512>> not implemented.
shift_left_vector<simd<int8_t, avx512>> not implemented.
shift_left_vector<simd<uint8_t, avx512>> not implemented.
shift_left_vector<simd<double, scalar>> not implemented.
shift_left_vector<simd<float, scalar>> not implemented.
shift_left_vector<simd<double, sse>> not implemented.
shift_left_vector<simd<float, sse>> not implemented.
shift_left_vector<simd<int8_t, sse>> not implemented.
shift_left_vector<simd<uint8_t, sse>> not implemented.
shift_right<simd<double, avx2>> not implemented.
shift_right<simd<float, avx2>> not implemented.
shift_right<simd<int8_t, avx2>> not implemented.
shift_right<simd<uint8_t, avx2>> not implemented.
shift_right<simd<double, avx512>> not implemented.
shift_right<simd<float, avx512>> not implemented.
shift_right<simd<int8_t, avx512>> not implemented.
shift_right<simd<uint8_t, avx512>> not implemented.
shift_right<simd<double, scalar>> not implemented.
shift_right<simd<float, scalar>> not implemented.
shift_right<simd<double, sse>> not implemented.
shift_right<simd<float, sse>> not implemented.
shift_right<simd<int8_t, sse>> not implemented.
shift_right<simd<uint8_t, sse>> not implemented.
shift_right_logical<simd<double, avx2>> not implemented.
shift_right_logical<simd<float, avx2>> not implemented.
shift_right_logical<simd<int8_t, avx2>> not implemented.
shift_right_logical<simd<uint8_t, avx2>> not implemented.
shift_right_logical<simd<double, avx512>> not implemented.
shift_right_logical<simd<float, avx512>> not implemented.
shift_right_logical<simd<int8_t, avx512>> not implemented.
shift_right_logical<simd<uint8_t, avx512>> not implemented.
shift_right_logical<simd<double, scalar>> not implemented.
shift_right_logical<simd<float, scalar>> not implemented.
shift_right_logical<simd<double, sse>> not implemented.
shift_right_logical<simd<float, sse>> not implemented.
shift_right_logical<simd<int8_t, sse>> not implemented.
shift_right_logical<simd<uint8_t, sse>> not implemented.
shift_right_logical_vector<simd<double, avx2>> not implemented.
shift_right_logical_vector<simd<float, avx2>> not implemented.
shift_right_logical_vector<simd<int8_t, avx2>> not implemented.
shift_right_logical_vector<simd<uint8_t, avx2>> not implemented.
shift_right_logical_vector<simd<double, avx512>> not implemented.
shift_right_logical_vector<simd<float, avx512>> not implemented.
shift_right_logical_vector<simd<int8_t, avx512>> not implemented.
shift_right_logical_vector<simd<uint8_t, avx512>> not implemented.
shift_right_logical_vector<simd<double, scalar>> not implemented.
shift_right_logical_vector<simd<float, scalar>> not implemented.
shift_right_logical_vector<simd<double, sse>> not implemented.
shift_right_logical_vector<simd<float, sse>> not implemented.
shift_right_logical_vector<simd<int8_t, sse>> not implemented.
shift_right_logical_vector<simd<uint8_t, sse>> not implemented.
shift_right_vector<simd<double, avx2>> not implemented.
shift_right_vector<simd<float, avx2>> not implemented.
shift_right_vector<simd<int8_t, avx2>> not implemented.
shift_right_vector<simd<uint8_t, avx2>> not implemented.
shift_right_vector<simd<double, avx512>> not implemented.
shift_right_vector<simd<float, avx512>> not implemented.
shift_right_vector<simd<int8_t, avx512>> not implemented.
shift_right_vector<simd<uint8_t, avx512>> not implemented.
shift_right_vector<simd<double, scalar>> not implemented.
shift_right_vector<simd<float, scalar>> not implemented.
shift_right_vector<simd<double, sse>> not implemented.
shift_right_vector<simd<float, sse>> not implemented.
shift_right_vector<simd<int8_t, sse>> not implemented.
shift_right_vector<simd<uint8_t, sse>> not implemented.
equal<simd<double, sse>> not implemented.
equal<simd<float, sse>> not implemented.
equal<simd<double, sse>> not implemented.
equal<simd<float, sse>> not implemented.
mask_equal<simd<double, avx2>> not implemented.
mask_equal<simd<float, avx2>> not implemented.
mask_equal not implemented for avx512
mask_equal not implemented for scalar
mask_equal not implemented for sse
convert_down<simd<double, avx2>> not implemented.
convert_down<simd<float, avx2>> not implemented.
convert_down<simd<int16_t, avx2>> not implemented.
convert_down<simd<int8_t, avx2>> not implemented.
convert_down<simd<uint16_t, avx2>> not implemented.
convert_down<simd<uint8_t, avx2>> not implemented.
convert_down not implemented for avx512
convert_down not implemented for scalar
convert_up<simd<double, avx2>> not implemented.
convert_up<simd<float, avx2>> not implemented.
convert_up not implemented for avx512
convert_up not implemented for scalar
convert_up<simd<double, sse>> not implemented.
convert_up<simd<float, sse>> not implemented.
convert_up<simd<int64_t, sse>> not implemented.
convert_up<simd<uint64_t, sse>> not implemented.

Some of these are justified, mainly convert_up/convert_down/mask_equal/equal not being implemented for some extensions

But others aren't:

  • convert_down doesn't make sense for uint_8 (no smaller type exists)
  • convert_up doesn't make sense for uint64_t (no larger type exists)
  • shift_*** does not make sense for float or double (C++ scalars and AVX don't supports that, neither should we. User should cast instead.)
  • there are probably more cases that just don't occur because the corresponding primitive doesn't have tests yet, e.g.
    cast

I see three ways to deal with this:

  1. Get rid of this warning entirely
  2. Only emit the warning if the implementation is missing because of lscpu flags, not for implementations that were never written at all
  3. Add a yaml tag (e.g. implementation_omitted) to indicate implementations that are explicitly not desired.

My personal favorite is 3., since i would rather not remove a warning that is very helpful in development.
While we're at it, we might consider emitting different warnings for the two cases of

  • missing because of lscpu flags
  • missing because no implementation was written

Which mean very different things for the developer.

@JPietrzykTUD JPietrzykTUD added the enhancement New feature or request label May 8, 2023
@JPietrzykTUD JPietrzykTUD pinned this issue May 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants