This patch implements the __uint128_t __fixunstfti (long double) method for PowerPC -- specifically to convert a long double (IBM double-double) to an unsigned 128 bit integer.
The general approach is to convert the high and low doubles of the long double and add them together; this is done in the simplest case when the high and low doubles fit within 64 bits. However, additional adjustments and scaling is performed when the high or low double does not fit within a 64 bit integer. I was assisted by @masoud.ataei and @renenkel in constructing the algorithm, various implementation details and methods of testing for correctness in regards to this function.
To invoke this method, one can do so by linking against compiler-rt instead of libgcc, via the --rtlib=compiler-rt command line option supplied to clang during the compilation step.
Is this the common practice in compiler-rt for detecting NaN's vs something like isnan()?