summaryrefslogtreecommitdiffstats
path: root/lib/mpi/longlong.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mpi/longlong.h')
-rw-r--r--lib/mpi/longlong.h36
1 files changed, 1 insertions, 35 deletions
diff --git a/lib/mpi/longlong.h b/lib/mpi/longlong.h
index 3bb6260d8f42..2dceaca27489 100644
--- a/lib/mpi/longlong.h
+++ b/lib/mpi/longlong.h
@@ -639,30 +639,12 @@ do { \
639 ************** MIPS ***************** 639 ************** MIPS *****************
640 ***************************************/ 640 ***************************************/
641#if defined(__mips__) && W_TYPE_SIZE == 32 641#if defined(__mips__) && W_TYPE_SIZE == 32
642#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4)
643#define umul_ppmm(w1, w0, u, v) \ 642#define umul_ppmm(w1, w0, u, v) \
644do { \ 643do { \
645 UDItype __ll = (UDItype)(u) * (v); \ 644 UDItype __ll = (UDItype)(u) * (v); \
646 w1 = __ll >> 32; \ 645 w1 = __ll >> 32; \
647 w0 = __ll; \ 646 w0 = __ll; \
648} while (0) 647} while (0)
649#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7
650#define umul_ppmm(w1, w0, u, v) \
651 __asm__ ("multu %2,%3" \
652 : "=l" ((USItype)(w0)), \
653 "=h" ((USItype)(w1)) \
654 : "d" ((USItype)(u)), \
655 "d" ((USItype)(v)))
656#else
657#define umul_ppmm(w1, w0, u, v) \
658 __asm__ ("multu %2,%3\n" \
659 "mflo %0\n" \
660 "mfhi %1" \
661 : "=d" ((USItype)(w0)), \
662 "=d" ((USItype)(w1)) \
663 : "d" ((USItype)(u)), \
664 "d" ((USItype)(v)))
665#endif
666#define UMUL_TIME 10 648#define UMUL_TIME 10
667#define UDIV_TIME 100 649#define UDIV_TIME 100
668#endif /* __mips__ */ 650#endif /* __mips__ */
@@ -687,7 +669,7 @@ do { \
687 : "d" ((UDItype)(u)), \ 669 : "d" ((UDItype)(u)), \
688 "d" ((UDItype)(v))); \ 670 "d" ((UDItype)(v))); \
689} while (0) 671} while (0)
690#elif (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4) 672#else
691#define umul_ppmm(w1, w0, u, v) \ 673#define umul_ppmm(w1, w0, u, v) \
692do { \ 674do { \
693 typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \ 675 typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \
@@ -695,22 +677,6 @@ do { \
695 w1 = __ll >> 64; \ 677 w1 = __ll >> 64; \
696 w0 = __ll; \ 678 w0 = __ll; \
697} while (0) 679} while (0)
698#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7
699#define umul_ppmm(w1, w0, u, v) \
700 __asm__ ("dmultu %2,%3" \
701 : "=l" ((UDItype)(w0)), \
702 "=h" ((UDItype)(w1)) \
703 : "d" ((UDItype)(u)), \
704 "d" ((UDItype)(v)))
705#else
706#define umul_ppmm(w1, w0, u, v) \
707 __asm__ ("dmultu %2,%3\n" \
708 "mflo %0\n" \
709 "mfhi %1" \
710 : "=d" ((UDItype)(w0)), \
711 "=d" ((UDItype)(w1)) \
712 : "d" ((UDItype)(u)), \
713 "d" ((UDItype)(v)))
714#endif 680#endif
715#define UMUL_TIME 20 681#define UMUL_TIME 20
716#define UDIV_TIME 140 682#define UDIV_TIME 140