diff options
Diffstat (limited to 'lib/mpi/longlong.h')
-rw-r--r-- | lib/mpi/longlong.h | 36 |
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) \ |
644 | do { \ | 643 | do { \ |
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) \ |
692 | do { \ | 674 | do { \ |
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 |