https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80246
--- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> --- bergner@pike:~/gcc/BUGS/LTC137326$ cat dxex.i long dxex (_Decimal64 arg) { return __builtin_dxex (arg); } bergner@pike:~/gcc/BUGS/LTC137326$ gcc -O2 -mcpu=power8 -S dxex.i bergner@pike:~/gcc/BUGS/LTC137326$ cat dxex.s [snip] dxex: dxex 1,1 drintn. 0,1,1,1 dctfix 1,1 mfvsrd 3,1 blr Notice the incorrect FP -> integer cast that destroys the return value. Expected code is: dxex: dxex 0,1 mfvsrd 3,0 blr