https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114567
Bug ID: 114567 Summary: rs6000: explicit _Float128 doesn't generate optimal code Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: linkw at gcc dot gnu.org Target Milestone: --- This is an issue which I happened to spot when I have been working on patches for PR112993. === test case === #define TYPE _Float128 #ifdef LD #undef TYPE #define TYPE long double #endif int sbm (TYPE *a) { return __builtin_signbit (*a); } ================== /opt/gcc-nightly/trunk/bin/gcc -mcpu=power8 -mvsx -O2 -mabi=ieeelongdouble -Wno-psabi test.c -DLD -S -o ref.s /opt/gcc-nightly/trunk/bin/gcc -mcpu=power8 -mvsx -O2 -mabi=ibmlongdouble -Wno-psabi test.c -S -o float128.s diff -Nur ref.s float128.s --- ref.s 2024-03-18 05:41:00.302208975 -0400 +++ float128.s 2024-03-18 05:41:00.392205513 -0400 @@ -9,7 +9,10 @@ sbm: .LFB0: .cfi_startproc - ld 3,8(3) + rldicr 3,3,0,59 + lxvd2x 0,0,3 + xxpermdi 0,0,0,2 + mfvsrd 3,0 srdi 3,3,63 blr .long 0