BIPLY                                                            CRAY XMP  CAL 114d(01/09/86)  08/12/86 22:31:24  Page 1
                                                                                                                    (1)

                                          *
                                          * SUBROUTINE BIPLY (L,I,Y,LY,M,N)
                                          *
                                          * APPLY L FACTOR TO SOLVE TRIDIAGONAL SYSTEM.
                                          * ANSWER OVERWRITES Y.
                                          * ONE CYCLE LOOP WHEN BIDIRECTIONAL MEMORY ENABLED,
                                          * TWO CYCLES WHEN NOT, THREE CYCLES ON CRAY-1 SERIES.
                                          * I,LY MAY BE NEGATIVE (TO IMPLEMENT U)
                                          *
                                          *
                                          * INSTRUCTIONS
                                          *
                                                    IDENT     BIPLY
                                                    ENTRY     BIPLY
                                          *
              0a  1061 00000006           BIPLY     A1        6,A6           * ADDR N
               c  1012 00000000                     A2        ,A1            * N
              1a  1061 00000005                     A1        5,A6           * ADDR M
               c  1213 00000000                     S3        ,A1            * M
              2a  022402                            A4        2              *
               b  031224                            A2        A2-A4          * N-2
               c  1061 00000002                     A1        2,A6           * ADDR I
              3a  1215 00000000                     S5        ,A1            * I
               c  030002                            A0        A2             * PREPARE FOR N.LE.1 RETURN
               d  1061 00000004                     A1        4,A6           * ADDR LY
              4b  042172                            S1        <6             * 63
               c  061703                            S7        -S3            * 1'S COMPL OF M-1
               d  047007                            S0        #S7            * M-1
              5a  045717                            S7        #S7&S1         * VL-1
               b  1216 00000000                     S6        ,A1            * LY
               d  071412                            S4        +A2            * N-2
              6a  023470                            A4        S7             * VL-1
               b  030440                            A4        A4+1           * FIRST VL SEGMENT LENGTH
               c  013 00000050a+                    JAM       ENDIT          * IF(N.LE.1) RETURN
              7a  017 00000050a+                    JSM       ENDIT          * IF(M.LE.0) RETURN
                                          *
                                          * LOOP:
                                          *
                                          *         DO II=1,M,64
                                          *             ODDBIT=1+MOD(N-1,4)
                                          *             DO IM=2,ODDBIT,1
                                          *                   Y(II+*,IM)=Y(II+*,IM)-L(II+*,IM)*Y(II+*,IM-1)
                                          *             ENDDO
                                          *             DO IM=IMTOP+1,N,4
                                          *                   Y(II+*,IM)=Y(II+*,IM)-L(II+*,IM)*Y(II+*,IM-1)
                                          *                   Y(II+*,IM+1)=Y(II+*,IM+1)-L(II+*,IM+1)*Y(II+*,IM)
                                          *                   Y(II+*,IM+2)=Y(II+*,IM+2)-L(II+*,IM+2)*Y(II+*,IM+1)
                                          *                   Y(II+*,IM+3)=Y(II+*,IM+3)-L(II+*,IM+3)*Y(II+*,IM+2)
                                          *             ENDDO
                                          *         ENDDO
                                          *
                                          * REGISTER ASSIGNMENTS:
                                          *
                                          * A1 Y              S1 YBASE
                                          * A2 L              S2 LBASE
                                          * A3 IM             S3 M
BIPLY                                                            CRAY XMP  CAL 114d(01/09/86)  08/12/86 22:31:24  Page 2
                                                                                                                    (2)

                                          * A4 VL             S4 N-2
                                          * A5 Y-2            S5 I
                                          * A6 RETURN         S6 LY
                                          * A7 SCRATCH        S7 SCRATCH
                                          *
                                          *   V0       V1       V2       V3       V4       V5      V6       V7
                                          *   Y        L        L*E-1    E-2      E-1      E
                                          *   Y+1      L+1      L+1*E             E-1      E       E+1
                                          *   Y+2      L+2      L+2*E+1  E+2               E       E+1
                                          *   Y+3      L+3      L+3*E+2  E+2      E+3              E+1
                                          *
              7c  1262 00000001                     S2        1,A6           * L
             10a  042776                            S7        <2             * 3
               b  044774                            S7        S7&S4          * N-2 MOD 4
               c  054703                            S7        S7<3           * TIMES 8
               d  1261 00000003                     S1        3,A6           * Y
             11b  0206 0000017b+                    A6        L1             * BASE FOR COMPUTED GOTO
               d  023770                            A7        S7             * OFFSET
             12a  030776                            A7        A7+A6          * GOTO ADDRESS
               b  024677                            A6        B77            * SAVE RETURN ADDRESS
               c  025777                            B77       A7             *
                                          *
               d  002004                  OUTER     VL        A4             *
             13a  023110                            A1        S1             * NEXT SEGMENT OF Y
               b  071714                            S7        +A4            * TO ADJUST BASE ADDRESSES
               c  027400                            A4        ZS0            * 64 REST OF VL'S
               d  023220                            A2        S2             * NEXT SEGMENT OF L
             14a  023340                            A3        S4             * N-2 IS INNER LOOP COUNTER
               b  023750                            A7        S5             * I
               c  060117                            S1        S1+S7          * BUMP Y BASE
               d  030227                            A2        A2+A7          * COLUMN 2 OF L
             15a  060227                            S2        S2+S7          * BUMP L BASE
               b  030002                            A0        A2             * L
               c  061337                            S3        S3-S7          * DECREMENT FOR NEXT VL
               d  176100                            V1        ,A0,1          * L
             16a  051003                            S0        S3             * TEST IF REMAINING VL IS > 0
               b  030001                            A0        A1             * Y
               c  023760                            A7        S6             * LY
               d  031517                            A5        A1-A7          * COLUMN 0 OF Y
             17a  005077                            J         B77            * COMPUTED GOTO
                                          *
               b  176300                  L1        V3        ,A0,1          * E-2
               c  030117                            A1        A1+A7          * MOVE TO COLUMN 2 OF Y
               d  030001                            A0        A1             *
             20a  176000                            V0        ,A0,1          * Y
               b  165213                            V2        V1*RV3         * L-1*E-2
               c  173402                            V4        V0-FV2         * E-1
               d  006 00000044a+                    J         INTEST         *
                                          *
             21b  176600                  L2        V6        ,A0,1          * E+1
               c  030117                            A1        A1+A7          * MOVE TO COLUMN 2 OF Y
               d  030001                            A0        A1             *
             22a  176000                            V0        ,A0,1          * Y
               b  165216                            V2        V1*RV6         * L+2*E+1
               c  173302                            V3        V0-FV2         * E+2
               d  006 00000040c+                    J         BUMP3          *
BIPLY                                                            CRAY XMP  CAL 114d(01/09/86)  08/12/86 22:31:24  Page 3
                                                                                                                    (3)

                                          *
             23b  176500                  L3        V5        ,A0,1          * E
               c  030117                            A1        A1+A7          * MOVE TO COLUMN 2 OF Y
               d  030001                            A0        A1             *
             24a  176000                            V0        ,A0,1          * Y
               b  165215                            V2        V1*RV5         * L+1*E
               c  173602                            V6        V0-FV2         * E+1
               d  006 00000035a+                    J         BUMP2          *
                                          *
             25b  176400                  L4        V4        ,A0,1          * E-1
               c  030117                            A1        A1+A7          * MOVE TO COLUMN 2 OF Y
               d  030001                            A0        A1             *
             26a  176000                            V0        ,A0,1          * Y
               b  165214                            V2        V1*RV4         * L*E-1
               c  173502                            V5        V0-FV2         * E
               d  006 00000031c+                    J         BUMP1          *
                                          *
             27b  030002                  IN1       A0        A2             *
               c  176100                            V1        ,A0,1          * L(*,IM)
               d  030001                            A0        A1             *
             30a  176000                            V0        ,A0,1          * Y(*,IM)
               b  165214                            V2        V1*RV4         * L(*,IM)*E(*,IM-1)
               c  030005                            A0        A5             *
               d  177030                            ,A0,1     V3             * STORE E(*,IM-2) OVER Y(*,IM-2)
             31a  173502                            V5        V0-FV2         * E(*,IM) = Y(*,IM) - L(*,IM)*E(*,IM-1)
               b  031330                            A3        A3-1           *
               c  023750                  BUMP1     A7        S5             *
               d  030227                            A2        A2+A7          * NEXT COLUMN OF L
             32a  023760                            A7        S6             *
               b  030117                            A1        A1+A7          * NEXT COLUMN OF Y TO LOAD
               c  030557                            A5        A5+A7          * NEXT COLUMN OF Y TO STORE
                                          *
               d  030002                  IN2       A0        A2             *
             33a  176100                            V1        ,A0,1          * L(*,IM+1)
               b  030001                            A0        A1             *
               c  176000                            V0        ,A0,1          * Y(*,IM+1)
               d  165215                            V2        V1*RV5         * L(*,IM+1)*E(*,IM)
             34a  030005                            A0        A5             *
               b  177040                            ,A0,1     V4             * STORE E(*,IM-1) OVER Y(*,IM-1)
               c  173602                            V6        V0-FV2         * E(*,IM+1) = Y(*,IM+1) - L(*,IM+1)*E(*,IM)
               d  031330                            A3        A3-1           *
             35a  023750                  BUMP2     A7        S5             *
               b  030227                            A2        A2+A7          * NEXT COLUMN OF L
               c  023760                            A7        S6             *
               d  030117                            A1        A1+A7          * NEXT COLUMN OF Y TO LOAD
             36a  030557                            A5        A5+A7          * NEXT COLUMN OF Y TO STORE
                                          *
               b  030002                  IN3       A0        A2             *
               c  176100                            V1        ,A0,1          * L(*,IM+2)
               d  030001                            A0        A1             *
             37a  176000                            V0        ,A0,1          * Y(*,IM+2)
               b  165216                            V2        V1*RV6         * L(*,IM+2)*E(*,IM+1)
               c  030005                            A0        A5             *
               d  177050                            ,A0,1     V5             * STORE E(*,IM) OVER Y(*,IM)
             40a  173302                            V3        V0-FV2         * E(*,IM+2) = Y(*,IM+2) - L(*,IM+2)*E(*,IM+1)
               b  031330                            A3        A3-1           *
BIPLY                                                            CRAY XMP  CAL 114d(01/09/86)  08/12/86 22:31:24  Page 4
                                                                                                                    (4)

             40c  023750                  BUMP3     A7        S5             *
               d  030227                            A2        A2+A7          * NEXT COLUMN OF L
             41a  023760                            A7        S6             *
               b  030117                            A1        A1+A7          * NEXT COLUMN OF Y TO LOAD
               c  030557                            A5        A5+A7          * NEXT COLUMN OF Y TO STORE
                                          *
               d  030002                  IN4       A0        A2             *
             42a  176100                            V1        ,A0,1          * L(*,IM+3)
               b  030001                            A0        A1             *
               c  176000                            V0        ,A0,1          * Y(*,IM+3)
               d  165213                            V2        V1*RV3         * L(*,IM+3)*E(*,IM+2)
             43a  030005                            A0        A5             *
               b  177060                            ,A0,1     V6             * STORE E(*,IM+1) OVER Y(*,IM+1)
               c  173402                            V4        V0-FV2         * E(*,IM+3) = Y(*,IM+3) - L(*,IM+3)*E(*,IM+2)
               d  031330                            A3        A3-1           *
             44a  030003                  INTEST    A0        A3             *
               b  023750                            A7        S5             *
               c  030227                            A2        A2+A7          * NEXT COLUMN OF L
               d  023760                            A7        S6             *
             45a  030117                            A1        A1+A7          * NEXT COLUMN OF Y
               b  030557                            A5        A5+A7          * NEXT COLUMN OF Y-2
               c  012 00000027b+                    JAP       IN1            * AND LOOP IF(IM-2.GT.0)
                                          *
                                          * END INNER LOOP
                                          *
             46a  030005                            A0        A5
               b  177030                            ,A0,1     V3
               c  030557                            A5        A5+A7
               d  030005                            A0        A5
             47a  177040                            ,A0,1     V4
               b  016 00000012d+                    JSP       OUTER          * IF(VL.GT.0) CONTINUE
                                          *
                                          * END OUTER
                                          *
               d  025677                            B77       A6             * RESTORE RETURN ADDRESS
             50a  005000                  ENDIT     J         B00            * ALL DONE
                                                    END



                      0a+ BIPLY                  1:14 E    1:16 D
                     31c+ BUMP1                  3:16      3:27 D
                     35a+ BUMP2                  3: 8      3:42 D
                     40c+ BUMP3                  2:56      4: 1 D
                     50a+ ENDIT                  1:34      1:35      4:36 D
                     27b+ IN1                    3:18 D    4:22
                     32d+ IN2                    3:33 D
                     36b+ IN3                    3:48 D
                     41d+ IN4                    4: 7 D
                     44a+ INTEST                 2:48      4:16 D
                     17b+ L1                     2:17      2:42 D
                     21b+ L2                     2:50 D
                     23b+ L3                     3: 2 D
                     25b+ L4                     3:10 D
                     12d+ OUTER                  2:23 D    4:31
