-
Notifications
You must be signed in to change notification settings - Fork 8
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
Stable/1.0.4 4 #170
Stable/1.0.4 4 #170
Conversation
Update configure.ac for autotools 2.71 and fix compile errors from GCC 11. * configure.ac: Remove AC_PROG_LIBTOOL. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. * src/Makefile.in: regenerate. * src/pveclib/vec_int128_ppc.h (vec_sraq): Cast from vec_setb_sq() to (vui128_t). (vec_sraqi): Cast from vec_setb_sq() to (vui128_t). * src/testsuite/vec_int128_dummy.c (test_setb_cyq, test_setb_ncq, test_setb_sq): Change type of function result to vb128_t. * src/testsuite/vec_perf_f64.c (timed_fpclassify_f64): Change type of accum to vui64_t. Signed-off-by: Steven Munroe <munroesj52@gmail.com>
The switch to GCC-12 exposed some latent issues in pveclib-1.0.4-4 1) The (accidental) typedef of __float128 over __ieee128 and the cast of (vector unsigned int *) constants to (vector unsigned __int128 *) seems to violate strict-aliasing. But this is not reported unless -Wstrict-aliasing=2 is used. The result was silently generating incorrect code. GCC PR 106755. 2) GCC-12 corrected a long latent problem with vec_cpsgn (swapped operands). PVECLIB followed the implementation from previous GCC versions (GCC <= 11). This broke vector float/double unit tests. GCC PR 101984. 3) The implementation of IEEE Float128 is evolving and various types (__float128, __ieee128, _Float128, ...) are highly dependent on the compiler version/options used. The implementation (tries again) to supports. The API uses __binary128 and avoids _Float128. * src/pveclib/vec_f128_ppc.h (__binary128): Define/typedef to the quad-precision float type that the support supports. * src/pveclib/vec_f32_ppc.h (vec_copysignf32): Unless PVECLIB_CPSGN_FIXED is defined, avoid vec_cpsgn. * src/pveclib/vec_f64_ppc.h (vec_copysignf64): Unless PVECLIB_CPSGN_FIXED is defined, avoid vec_cpsgn. * src/testsuite/arith128_test_f32.c (test_float_cpsgn): Swap operands/results to match GCC12. * src/testsuite/arith128_test_f64.c (test_double_cpsgn): Swap operands/results to match GCC12. * src/testsuite/arith128_test_i128.c (test_muludq): Change local variable 'l' type to match vec_muludq parameter. (test_madduq) Change local variable 'l' type to match vec_madduq parameter. * src/testsuite/vec_f128_dummy.c: Replace all usage of type __Float128 with __binary128. Signed-off-by: Steven Munroe <munroesj52@gmail.com>
I really did sync munroesj52 with upstream. Don't understand where this conflict is coming from. But I can resolve this and merge. Wanted to give you a chance to review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the 1st commit, I think it'd be nice to describe the compiler errors you are rectifying.
In the 2nd commit message:
The implementation (tries again) to supports.
s/(tries again)/tries (again)/
s/supports/support/
- src/pveclib/vec_f128_ppc.h (__binary128): Define/typedef to
the quad-precision float type that the support supports.
s/support supports/compiler supports/ ?
Need to merge this for testing |
No description provided.