Repository navigation
Conversation
…uctor `struct __fpemu_uint128` declared its default constructor as `::cuda::__fpemu_uint128() = default;`. A qualified name is not valid for a constructor declared inside its class, so the emulated branch of fpemu_impl.h does not compile. NVRTC takes that branch whenever -device-int128 is not passed, which breaks `#include <cuda/fpemu>` with default NVRTC options. Add a test that forces the emulated path with _CCCL_FPEMU_FORCE_EMULATED_INT128 so the branch is built in CI. Signed-off-by: 0z5a <dezhen.lu@student.uni-tuebingen.de>
Contributor
Contributor
|
No actionable comments were generated in the recent review. Summary
Change: Bug fix · Severity of issue fixed: Medium Merge Risk:
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
closes #12605
struct __fpemu_uint128incuda/__fp/fpemu_impl.hdeclared its default constructor as::cuda::__fpemu_uint128() = default;. A qualified name is not valid for a constructor declared inside its class, so the emulated-int128 branch does not compile. NVRTC takes that branch whenever-device-int128is not passed, which breaks#include <cuda/fpemu>with default NVRTC options. The qualifier came in with the promotion fromcuda::experimentalin #11956.This PR drops the qualifier. It also adds
fpemu/emulated_int128.pass.cpp, which defines_CCCL_FPEMU_FORCE_EMULATED_INT128and runs thecore.pass.cppoperations (mul, add, div, sub, fma). That way the emulated branch is built in CI; the NVRTC lane always passes-device-int128, so it never takes this branch today.Checked locally:
-device-int128(it failed on all three before)._CCCL_FPEMU_FORCE_EMULATED_INT128, all tests intest/libcudacxx/cuda/fp/units/fpemu/build and pass on the host.Checklist: