#include "implicit_f.inc"
Go to the source code of this file.
◆ reduce_mmx()
| subroutine reduce_mmx |
( |
| rin, |
|
|
| rinout, |
|
|
integer | len, |
|
|
integer | type ) |
Definition at line 27 of file reduce_mmx.F.
28
29
30
31#include "implicit_f.inc"
32
33
34
35 INTEGER LEN, TYPE
37 . rin(*), rinout(*)
38
39
40
41#ifdef MPI
42 INTEGER I, L, I_LEN
43 parameter(i_len = 46)
44
45
46
47 l = 1
48 DO i=1,len
49
50 rinout(l) =
max(rinout(l),rin(l))
51 rinout(l+1) =
max(rinout(l+1),rin(l+1))
52 rinout(l+2) =
max(rinout(l+2),rin(l+2))
53 rinout(l+3) =
min(rinout(l+3),rin(l+3))
54 rinout(l+4) =
min(rinout(l+4),rin(l+4))
55 rinout(l+5) =
min(rinout(l+5),rin(l+5))
56
57 rinout(l+6) =
max(rinout(l+6),rin(l+6))
58 rinout(l+7) =
max(rinout(l+7),rin(l+7))
59 rinout(l+8) =
max(rinout(l+8),rin(l+8))
60
61 rinout(l+ 9) =
min(rinout(l+9),rin(l+9))
62 rinout(l+10) =
min(rinout(l+10),rin(l+10))
63 rinout(l+11) =
min(rinout(l+11),rin(l+11))
64
65 rinout(l+12) =
max(rinout(l+12),rin(l+12))
66 rinout(l+13) =
max(rinout(l+13),rin(l+13))
67 rinout(l+14) =
max(rinout(l+14),rin(l+14))
68
69 rinout(l+15) =
min(rinout(l+15),rin(l+15))
70 rinout(l+16) =
min(rinout(l+16),rin(l+16))
71 rinout(l+17) =
min(rinout(l+17),rin(l+17))
72
73 l = l + 18
74
75 rinout(l) =
max(rinout(l),rin(l))
76 rinout(l+1) =
max(rinout(l+1),rin(l+1))
77 rinout(l+2) =
max(rinout(l+2),rin(l+2))
78 rinout(l+3) =
min(rinout(l+3),rin(l+3))
79 rinout(l+4) =
min(rinout(l+4),rin(l+4))
80 rinout(l+5) =
min(rinout(l+5),rin(l+5))
81 rinout(l+6) =
max(rinout(l+6),rin(l+6))
82 rinout(l+7) =
max(rinout(l+7),rin(l+7))
83 rinout(l+8) =
max(rinout(l+8),rin(l+8))
84 rinout(l+9) =
min(rinout(l+9),rin(l+9))
85 rinout(l+10) =
min(rinout(l+10),rin(l+10))
86 rinout(l+11) =
min(rinout(l+11),rin(l+11))
87
88 l = l + 12
89
90 rinout(l) =
max(rinout(l),rin(l))
91 rinout(l+1) =
max(rinout(l+1),rin(l+1))
92 rinout(l+2) =
max(rinout(l+2),rin(l+2))
93 rinout(l+3) =
min(rinout(l+3),rin(l+3))
94 rinout(l+4) =
min(rinout(l+4),rin(l+4))
95 rinout(l+5) =
min(rinout(l+5),rin(l+5))
96 l = l + 6
97
98 rinout(l) =
max(rinout(l),rin(l))
99 rinout(l+1) =
max(rinout(l+1),rin(l+1))
100 rinout(l+2) =
max(rinout(l+2),rin(l+2))
101 rinout(l+3) =
min(rinout(l+3),rin(l+3))
102 rinout(l+4) =
min(rinout(l+4),rin(l+4))
103 rinout(l+5) =
min(rinout(l+5),rin(l+5))
104 l = l + 6
105
106 rinout(l) = rinout(l)+rin(l)
107 l = l + 1
108
109 rinout(l) =
min(rinout(l),rin(l))
110 l = l + 1
111
112 rinout(l) =
max(rinout(l),rin(l))
113 l = l + 1
114
115 rinout(l) =
max(rinout(l),rin(l))
116 l = l + 1
117 END DO
118
119#endif
120 RETURN