1       SUBROUTINE ICOPY( N, SX, INCX, SY, INCY )
 2 *
 3 *  -- LAPACK auxiliary test routine (version 3.1) --
 4 *     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
 5 *     November 2006
 6 *
 7 *     .. Scalar Arguments ..
 8       INTEGER            INCX, INCY, N
 9 *     ..
10 *     .. Array Arguments ..
11       INTEGER            SX( * ), SY( * )
12 *     ..
13 *
14 *  Purpose
15 *  =======
16 *
17 *  ICOPY copies an integer vector x to an integer vector y.
18 *  Uses unrolled loops for increments equal to 1.
19 *
20 *  Arguments
21 *  =========
22 *
23 *  N       (input) INTEGER
24 *          The length of the vectors SX and SY.
25 *
26 *  SX      (input) INTEGER array, dimension (1+(N-1)*abs(INCX))
27 *          The vector X.
28 *
29 *  INCX    (input) INTEGER
30 *          The spacing between consecutive elements of SX.
31 *
32 *  SY      (output) INTEGER array, dimension (1+(N-1)*abs(INCY))
33 *          The vector Y.
34 *
35 *  INCY    (input) INTEGER
36 *          The spacing between consecutive elements of SY.
37 *
38 *  =====================================================================
39 *
40 *     .. Local Scalars ..
41       INTEGER            I, IX, IY, M, MP1
42 *     ..
43 *     .. Intrinsic Functions ..
44       INTRINSIC          MOD
45 *     ..
46 *     .. Executable Statements ..
47 *
48       IF( N.LE.0 )
49      $   RETURN
50       IF( INCX.EQ.1 .AND. INCY.EQ.1 )
51      $   GO TO 20
52 *
53 *     Code for unequal increments or equal increments not equal to 1
54 *
55       IX = 1
56       IY = 1
57       IF( INCX.LT.0 )
58      $   IX = ( -N+1 )*INCX + 1
59       IF( INCY.LT.0 )
60      $   IY = ( -N+1 )*INCY + 1
61       DO 10 I = 1, N
62          SY( IY ) = SX( IX )
63          IX = IX + INCX
64          IY = IY + INCY
65    10 CONTINUE
66       RETURN
67 *
68 *     Code for both increments equal to 1
69 *
70 *     Clean-up loop
71 *
72    20 CONTINUE
73       M = MOD( N, 7 )
74       IF( M.EQ.0 )
75      $   GO TO 40
76       DO 30 I = 1, M
77          SY( I ) = SX( I )
78    30 CONTINUE
79       IF( N.LT.7 )
80      $   RETURN
81    40 CONTINUE
82       MP1 = M + 1
83       DO 50 I = MP1, N, 7
84          SY( I ) = SX( I )
85          SY( I+1 ) = SX( I+1 )
86          SY( I+2 ) = SX( I+2 )
87          SY( I+3 ) = SX( I+3 )
88          SY( I+4 ) = SX( I+4 )
89          SY( I+5 ) = SX( I+5 )
90          SY( I+6 ) = SX( I+6 )
91    50 CONTINUE
92       RETURN
93 *
94 *     End of ICOPY
95 *
96       END