--- /dev/null
+\r
+#include <stdint.h>\r
+#include "platform.h"\r
+#include "primitives.h"\r
+\r
+struct uint128_extra\r
+ softfloat_shift128ExtraRightJam(\r
+ uint64_t a64, uint64_t a0, uint64_t extra, unsigned int count )\r
+{\r
+ unsigned int negCount;\r
+ struct uint128_extra z;\r
+\r
+ negCount = - count;\r
+ if ( count < 64 ) {\r
+ z.v64 = a64>>count;\r
+ z.v0 = a64<<( negCount & 63 ) | a0>>count;\r
+ z.extra = a0<<( negCount & 63 );\r
+ } else {\r
+ z.v64 = 0;\r
+ if ( count == 64 ) {\r
+ z.v0 = a64;\r
+ z.extra = a0;\r
+ } else {\r
+ extra |= a0;\r
+ if ( count < 128 ) {\r
+ z.v0 = a64>>( count & 63 );\r
+ z.extra = a64<<( negCount & 63 );\r
+ } else {\r
+ z.v0 = 0;\r
+ z.extra = ( count == 128 ) ? a64 : ( a64 != 0 );\r
+ }\r
+ }\r
+ }\r
+ z.extra |= ( extra != 0 );\r
+ return z;\r
+\r
+}\r
+\r