On Friday, 2 June 2023 11:24:23 CEST Alexander Monakov wrote: > > > I'm not sure what you consider a breaking change here. Is that the > > > implied > > > threat to use undefinedness for range deduction and other optimizations? > > > > Consider the stdx::simd implementation. It currently follows semantics of > > the builtin types. So simd<char> can be shifted by 30 without UB. The > > implementation of the shift operator depends on the current behavior, even > > if it is target-dependent. For PPC the simd implementation adds extra > > code to avoid the "UB". With nailing down shifts > sizeof(T) as UB this > > extra code now needs to be added for all targets. > > What does stdx::simd do on LLVM, where that has always been UB even on x86?
At this point Clang/LLVM support is best effort. I did not know before that LLVM nailed this down as UB. Also my test suite didn't show any failures on shifts IIRC (but that doesn't say anything about UB, I know). FWIW, I'm okay with saying nothing in the release notes. It might just be that some codes have become dependent on the existing (under-specified) behavior. π€· - Matthias -- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ Dr. Matthias Kretz https://mattkretz.github.io GSI Helmholtz Centre for Heavy Ion Research https://gsi.de stdβ::simd ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ