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

[SYCL] Fix bitselect builtin for integer types #12598

Merged
merged 4 commits into from
Feb 5, 2024

Conversation

aelovikov-intel
Copy link
Contributor

This regressed after #11956 as return type wasn't correctly converted from SPIR-V intrinsic back to SYCL types. This PR fixes that.

In addition, I'm also adding tests for sycl::select builtin that was left unaffected only because we couldn't use SPIR-V intrinsic for its implementation.

This regressed after intel#11956 as return type wasn't correctly converted
from SPIR-V intrinsic back to SYCL types. This PR fixes that.

In addition, I'm also adding tests for `sycl::select` builtin that was
left unaffected only because we couldn't use SPIR-V intrinsic for its
implementation.
Copy link
Contributor

github-actions bot commented Feb 2, 2024

✅ With the latest revision this PR passed the C/C++ code formatter.

Copy link
Contributor

@steffenlarsen steffenlarsen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

// RUN: %{run} %t.out
// RUN: %if preview-breaking-changes-supported %{ %{build} -fpreview-breaking-changes -o %t_preview.out %}
// RUN: %if preview-breaking-changes-supported %{ %{run} %t_preview.out%}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Perhaps you could add a comment here to state the objective(s) of this test case.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not different from existing marray_relational.cpp and vec_relational.cpp and it never caused troubles to understand what they are doing... Are you asking about preview specifically? If yes, then it's a common idiom and we don't expect to document it in every file that uses it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope, I was talking about providing a broader overview of this test case. To my inexperienced eyes, it wasn't readily clear.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it matches how other builtins tests are set up, so I'm going to ignore it in scope of this PR.

sycl::vec<uint8_t, 2> c{0b1010, 0b1010};
sycl::vec<uint8_t, 2> r{0b0110, 0b1001};

auto BitSelect = [](auto... xs) { return sycl::bitselect(xs...); };
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering do we have negative test cases for sycl::bitselect (with vector type inputs) to check if all the arguments to sycl::bitselect have same element types and the same vector length?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be honest, I'm relying on CTS to catch every possible obscure corner case. Otherwise, the full testing for all the builtins would be taking way too much time.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense.

@aelovikov-intel aelovikov-intel merged commit a2e1669 into intel:sycl Feb 5, 2024
12 checks passed
@aelovikov-intel aelovikov-intel deleted the bitselect branch February 5, 2024 19:16
@aelovikov-intel
Copy link
Contributor Author

aelovikov-intel commented Feb 5, 2024

Post commit failures on Intel Arc GPU:

Failed Tests (1):
  SYCL :: OneapiDeviceSelector/sub-devices.cpp
FAIL: SYCL :: OneapiDeviceSelector/sub-devices.cpp (1430 of 1873)
******************** TEST 'SYCL :: OneapiDeviceSelector/sub-devices.cpp' FAILED ********************
Exit Code: -6

Command Output (stdout):
--
# RUN: at line 9
/__w/llvm/llvm/toolchain/bin//clang++   -fsycl -fsycl-targets=spir64 /__w/llvm/llvm/llvm/sycl/test-e2e/OneapiDeviceSelector/sub-devices.cpp -o /__w/llvm/llvm/build-e2e/OneapiDeviceSelector/Output/sub-devices.cpp.tmp.out
# executed command: /__w/llvm/llvm/toolchain/bin//clang++ -fsycl -fsycl-targets=spir64 /__w/llvm/llvm/llvm/sycl/test-e2e/OneapiDeviceSelector/sub-devices.cpp -o /__w/llvm/llvm/build-e2e/OneapiDeviceSelector/Output/sub-devices.cpp.tmp.out
# note: command had no output on stdout or stderr
# RUN: at line 14
env ONEAPI_DEVICE_SELECTOR="*:*.*"  /__w/llvm/llvm/build-e2e/OneapiDeviceSelector/Output/sub-devices.cpp.tmp.out
# executed command: env 'ONEAPI_DEVICE_SELECTOR=*:*.*' /__w/llvm/llvm/build-e2e/OneapiDeviceSelector/Output/sub-devices.cpp.tmp.out
# .---command stdout------------
# | 0 devices found.
# | Abort was called at 253 line in file:
# | ../../neo/level_zero/core/source/builtin/builtin_functions_lib_impl.cpp
# `-----------------------------
# .---command stderr------------
# | pure virtual method called
# | terminate called without an active exception
# `-----------------------------
# error: command failed with exit status: -6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants