PMM$JOB_TEMPLATE_TRAP_HANDLER   IDENT
.

*copy sya$constants
*copy osa$basic_register_equates
*copyc OSA$KEYPOINT_CLASSES
*copyc SYA$ISSUE_KEYPOINTS_IN_HANDLERS
*copyc sya$xp_and_sf_constants
.
.
.  Local definitions
.      NOTE
.         XA thru XC are always scratch registers).
.         XE contains the vector simulation flag (on entry)
.              bits 56-63 - Non-zero if all divide nets are degraded
.              bits 40-47 - VECTOR_SIMULATION system attribute (0=simulate)
.
.      NOTE registers used by the VECTOR SIMULATOR are not included here
.
xenviro   equ       0233(16)       .For call to CYBIL trap handler.
xenvsel   equ       024e(16)       .For call to osp$select_proc_w_divide.
.
x_ucr     xreg      2
x_p       xreg      3
.
.      (the following are not saved on call to CYBIL trap handler)
.
x_opcode  xreg      5            .Must be X5 to int'f to Vector Simulator
a_p       areg      4            .Must be A4 for int'f to Vector Simulator.
          page
.
.   Trap Handling Routine for traps occur in Job Mode
.
          USE      code
          def      traprtn
TRAPRTN   ALIAS    PMP$TRAP_HANDLER
traprtn   bss       0
.
          lbyts,2  x_ucr,a_psa,x0,sfsa_ucr .Get the UCR.
          lx       x_p,a_psa,0       .Save the initial P register.
.
.
dispose   bss      0
          brxeq    x_ucr,x0,trapex   .Jump if there are no UCR bits to process
.
. Check if trap was caused by a vector instruction that should be simulated by
. the VECTOR SIMULATOR. Simulation is attempted ONLY if UNIMP is the only bit
. in the UCR
.
          shfx     xa,x_ucr,x0,49    .Shift UNIMP bit to bit 0.
          brxge    xa,x0,disp5       .Jump if UNIMP not in UCR that caused trap.
          cpyxa    a_p,x_p           .Fetch OP code.
          lbyts,1  x_opcode,a_p,x0,0
          ente     xc,5f(16)         .Max vector OP code.
          brxgt    x_opcode,xc,disp5 .Jump if cant be vector opcode.
          lbytp,8  xb,vecmsk#        .Get mask of vector instructions.
          shfx     xb,xb,x_opcode,-63 .Test for vector instruction.
          brxge    xb,x0,disp5       .Jump if not vector instruction.
          ente     xa,4000(16)       .Enter UCR value for UNIMP.
          brxeq    xa,x_ucr,disp2    .Jump if UNIMP is the ONLY bit set.
          inhx     x_ucr,xa          .Clear UNIMP in UCR and process rest of
          sbyts,2  x_ucr,a_psa,x0,sfsa_ucr . conditions. UNIMP will occur again.
          brxeq    x0,x0,disp5       .Go process rest of conditions.
.
disp2     lbytp,8  xb,divmsk#        .Get mask of vector divide instructions.
          shfx     xb,xb,x_opcode,-63 .Test for divide instruction.
          brxge    xb,x0,disp3       .Jump if not a divide instruction.
          shfx     xa,xe,x0,56       .Jump if all divide nets degraded.
          brxne    xa,x0,disp3       .  (boolean in bits 56-63)
          ente     x0,xenvsel        .Change processor selections to run only
          callseg  bs_seldiv,a_bindin,ae .  on processor with good divide units.
          brxne    xf,x0,trapex      .Exit if processor switch was sucessful.
.
disp3     shfx     xa,xe,x0,-16      .Isolate simulation flag.
          brxeq    xa,x0,vtrap#      .Jump if vector simulation enabled.
.                                       (returns directly to user)
.
.  Call pmp$dispose_of_traps (sfsa)
.
disp5     addaq    a_tos,a_tos,8     .Set up call to pmp$dispose_of_traps
          sa       a_psa,a_csf,2     .SFSA - input

          ente     x0,xenviro
          cpyaa    ae,a_csf
          callseg  bs_disp,a_bindin,ae
.
          shfx     x6,x_ucr,x0,17    .Position UCR49 to bit 32.
          brrge    x6,x0,trap1       .If unimplemented instruction not present.
          entl     x0,r_di
          entp     xe,0              .Clear debug index.
          cpyxs    xe,x0
          brxeq    x0,x0,trap2
.
trap1     lx       xe,a_psa,0        .Reset DEBUG control info if P has been changed.
          brxeq    xe,x_p,trapex
trap2     entl     x0,r_dmr
          cpysx    xe,x0
          ente     xf,9f(16)         .Clear end-list-seen & scan-in-progress.
          andx     xe,xf
          cpyxs    xe,x0
.
. The following field definition is used to support the PSFSA instruction which is
. required for CYBER-2000 but is not available in the ASSEMBLER language yet.
. When it is available, replace the VFD line with the following line:
.         psfsa                      .Purge the SFSA pushdown (CYBER-2000 only)
.
          vfd,16   0701(16)          .Purge SFSA pushdouwn (CYBER-2000 only)
.
trapex    bss      0
          keypt    oscexit,osktrpj,x0,x_ucr,x3
          entl     x0,r_ted         .set trap enable delay.
          cpyxs    x0,x0
          return
.
.
          align  0,8
          page
.
.   Define Binding Section
.
          USE      BINDING
          ref      disposet,seldiv
bindsec   bss      0
bs_disp   address  c,disposet
disposet  alias    PMP$DISPOSE_OF_TRAPS
bs_seldiv address  c,seldiv
seldiv    alias    OSP$SELECT_PROCESSORS_W_DIVIDE
         PAGE
.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
.
. PROCEDURE [XDCL, #GATE] pmp$purge_instruction_stack;
.
. This is a routine to be used to insure that a CALLSEG instruction is
. executed after code modification. (Current use is by the Interactive Debugger).
.
. CYBIL Pseudocode:
.
.   #KEYPOINT (osk$entry, 0, pmk$purge_instruction_stack);
.   {purge_instruction_stack instruction}
.   #KEYPOINT (osk$exit, 0, pmk$purge_instruction_stack);
.
.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
          use      code
          defg     prg_istk
prg_istk  alias    pmp$purge_instruction_stack
prg_istk  bss      0
          addaq    a0,a1,24
          keypoint oscent,x0,1691      .Entry keypoint, pmk$purge_instuction_stack
          purge    x0,4                .Purge the instruction stack (CYBER-2000 only)
.
. The following field definition is used to support the PSFSA instruction which is
. required for CYBER-2000 but is not available in the ASSEMBLER language yet.
. When it is available, replace the VFD line with the following line:
.         psfsa                        .Purge the SFSA pushdown (CYBER-2000 only)
.
          vfd,16   0701(16)            .Purge the SFSA pushdown (CYBER-2000 only)
          keypoint oscexit,x0,1691     .Exit keypoint, pmk$purge_instuction_stack
          return
          page
.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
.
.
.        V E C T O R   I N S T R U C T I O N   S I M U L A T O R
.
. THIS PROC IS ENTERED VIA AN ILLEGAL INSTRUCTION TRAP, AND SIMULATES
. THE THETA-E (CYBER 2000) VECTOR INSTRUCTIONS.
.
.        ON ENTRY A2 POINTS TO THE PREVIOUS STACK FRAME SAVE AREA
.                 X5 (x_opcode) CONTAINS TRAPPED OPCODE
.                 A4 (a_p) CONTAINS TRAPPED 'P' REGISTER.
.
.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
.
         USE       CODE
         ALIGN     0,8
VECMSK#  VFD,64    7E7E7FFF00000000(16) .BIT # + 3F(16) = VALID VEC OP CODE
DIVMSK#  VFD,64    0800000000000000(16) .BIT # + 3F(16) = DIVIDE INS
.                                           (IE, BIT 4 = OPCODE 43(16))
BRTB#    ALIGN     0,8
         BRXNE     X1,X0,ADDFV
         BRXNE     X1,X0,ADDFVR
         BRXNE     X1,X0,SUBFV
         BRXNE     X1,X0,SUBFVR
         BRXNE     X1,X0,MULFV
         BRXNE     X1,X0,MULFVR
         BRXNE     X1,X0,DIVFV
         BRXNE     X1,X0,DIVFVR
         BRXNE     X1,X0,ADDXV
         BRXNE     X1,X0,ADDXVR
         BRXNE     X1,X0,SUBXV
         BRXNE     X1,X0,SUBXVR
         BRXEQ     X0,X0,VTEXIT#       .PUNT
         BRXEQ     X0,X0,VTEXIT#       .PUNT
         BRXEQ     X0,X0,VTEXIT#       .PUNT
         BRXEQ     X0,X0,VTEXIT#       .PUNT
         BRXNE     X1,X0,IORV
         BRXNE     X1,X0,IORVR
         BRXNE     X1,X0,XORV
         BRXNE     X1,X0,XORVR
         BRXNE     X1,X0,ANDV
         BRXNE     X1,X0,ANDVR
         BRXNE     X1,X0,CNIFV
         BRXNE     X1,X0,CNIFVR
         BRXNE     X1,X0,CNFIV
         BRXNE     X1,X0,CNFIVR
         BRXNE     X1,X0,SHFCV
         BRXNE     X1,X0,SHFCVR
         BRXEQ     X0,X0,VTEXIT#       .PUNT
         BRXEQ     X0,X0,VTEXIT#       .PUNT
         BRXEQ     X0,X0,VTEXIT#       .PUNT
         BRXEQ     X0,X0,VTEXIT#       .PUNT
         BRXNE     X1,X0,CMPEQV
         BRXNE     X1,X0,CMPEQVR
         BRXNE     X1,X0,CMPLTV
         BRXNE     X1,X0,CMPLTVR
         BRXNE     X1,X0,CMPGEV
         BRXNE     X1,X0,CMPGEVR
         BRXNE     X1,X0,CMPNEV
         BRXNE     X1,X0,CMPNEVR
         BRXNE     X1,X0,MRGV
         BRXNE     X1,X0,MRGVR
         BRXNE     X1,X0,GTHV
         BRXNE     X1,X0,GTHVR
         BRXNE     X1,X0,SCTV
         BRXNE     X1,X0,SCTVR
         BRXNE     X1,X0,SUMFV
         BRXNE     X1,X0,SUMFV
         BRXNE     X1,X0,TPSFV
         BRXNE     X1,X0,TPSFVR
         BRXNE     X1,X0,TPDFV
         BRXNE     X1,X0,TPDFVR
         BRXNE     X1,X0,TSPFV
         BRXNE     X1,X0,TSPFVR
         BRXNE     X1,X0,TDPFV
         BRXNE     X1,X0,TDPFVR
         BRXNE     X1,X0,SUMPFV
         BRXNE     X1,X0,SUMPFVR
         BRXNE     X1,X0,GTHIV
         BRXNE     X1,X0,GTHIVR
         BRXNE     X1,X0,SCTIV
         BRXNE     X1,X0,SCTIVR
         BRXEQ     X0,X0,VTEXIT#       .PUNT
.
.                  INSTRUCTION DECODE
.
.        THIS SEGMENT DECODES THE INSTRUCTION FOUND AT P AND LEAVES -
.
.        XB - AI         X6 - XI        X1 - L
.        X9 - AJ         X7 - XJ        X2 - I(L/2)
.        XA - AK         X8 - K-FIELD   X3 - ODD/EVEN (L) FLAG
.        X0 - X0
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        ENTRY POINT FROM TRAP
.
         DEF       VTRAP#,VTRAPE#
VTRAP#   ALIAS     PMA$VECTOR_SIMULATOR
VTRAP#   ALIGN     0,8
.
         ENTE      XE,R_UM             .DISABLE ALL ARITHMETIC TRAPS BY
         ENTP      XF,0                . CLEARING THE UM SELECTIONS.
         CPYXS     XF,XE
         ENTE      XF,R_TE             .ENABLE TRAPS.
         CPYXS     XF,XF

         LX        X1,A2,18*8          .LOAD X1 FROM SFSA
         ENTE      X6,512              .FOR MAX L COMPARE
         ENTS      X1                  .LENGTH IN X1R
         ENTE      X2,03FF(16)         .MASK FOR L EXTRACTION
         ENTP      X3,1                .FOR ODD/EVEN FLAG
         LBYTS,3   XF,A4,X0,1          .JKID
         ANDX      X2,XF               .LENGTH FROM INSTRUCTION
          ISOB      X8,XF,X0,6400(8)    .BROADCAST BIT (B)
         BRXEQ     X2,X0,DCD1#         .BRANCH IF L  IN X1
         CPYXX     X1,X2               .PLACE L IN X1
         BRXGE     X6,X2,DCD3#         .BRANCH IF L IN RANGE
         BRXEQ     X0,X0,VTISE#        .***** ISE
.
DCD1#    BSS       0
         BRXEQ     X1,X0,VTEXIT#       .EXIT IF L=0
         BRXGT     X1,X0,DCD2#         .BRANCH IF L +VE
         BRXEQ     X0,X0,VTISE#        .***** ISE
.
DCD2#    BSS       0
         BRXGE     X6,X1,DCD3#         .BRANCH IF L IN RANGE
         CPYXX     X1,X6               .DEFAULT L = 512
.
DCD3#    BSS       0
         LX        X0,A2,17*8          .X0
         SHFX      X2,X1,X0,-1         .I(L/2)
          ADDX      X5,X5               .2*OP
           ISOB      X9,XF,X0,5003(8)    .J-FIELD
         ANDX      X3,X1               .ODD/EVEN FLAG
           ISOB      XB,XF,X0,6003(8)    .I-FIELD
          IORX      X5,X8               .2*OP + B
           ISOB      X8,XF,X0,5403(8)    .K-FIELD
          ADDXQ     X5,X5,-080(16)      .NORMALIZE
           LXI       X7,A2,X9,17*8       .XJ
           LXI       X6,A2,XB,17*8       .XI
           LXI       X9,A2,X9,1*8        .AJ
           LXI       XB,A2,XB,1*8        .AI
           LXI       XA,A2,X8,1*8        .AK
          ADDX      X5,X5               .2*(2*OP + B - 80(16))
          ADDXQ     X5,X5,(BRTB#-BRINS#)/2  .BRANCH TABLE INDEX
BRINS#   BRREL     X5                  .BRANCH TO SIMULATE
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        T P S F V   -   FLOATING POINT VECTOR TRIAD, * +
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
TPSFV    BSS       0
         CPYXA     A7,X9               .AJ
         CPYXA     A8,XA               .AK
         CPYXA     A6,XB               .AI
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,TPSF2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,TPSF1A#  .
TPSF1#   SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
TPSF1A#  MULF      X6,X0          .                                      VTRI           1
         MULF      XA,X0          .                                      VTRI           2
         ADDF      X6,X7          .                                      VTRI           3
         ADDF      XA,XB          .                                      VTRI           4
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         BRINC     X1,XE,TPSF1#   .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,TPSF3#   .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
TPSF2#   MULF      X6,X0          .                                      VTRI           5
         ADDF      X6,X7          .                                      VTRI           6
         SXI       X6,A8,XE,0     .
TPSF3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
TPSFVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,TPSFR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,TPSFR1A# .
TPSFR1#  SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
TPSFR1A# MULF      X6,X0          .                                      VTRI           7
         MULF      XA,X0          .                                      VTRI           8
         ADDF      X6,X7          .                                      VTRI           9
         ADDF      XA,X7          .                                      VTRI          10
         BRINC     X1,XE,TPSFR1#  .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,TPSFR3#  .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
TPSFR2#  MULF      X6,X0          .                                      VTRI          11
         ADDF      X6,X7          .                                      VTRI          12
         SXI       X6,A8,XE,0     .
TPSFR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        T P D F V   -   FLOATING POINT VECTOR TRIAD, * -
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
TPDFV    BSS       0
         CPYXA     A7,X9               .AJ
         CPYXA     A8,XA               .AK
         CPYXA     A6,XB               .AI
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,TPDF2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,TPDF1A#  .
TPDF1#   SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
TPDF1A#  MULF      X6,X0          .                                      VTRI          13
         MULF      XA,X0          .                                      VTRI          14
         SUBF      X6,X7          .                                      VTRI          15
         SUBF      XA,XB          .                                      VTRI          16
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         BRINC     X1,XE,TPDF1#   .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,TPDF3#   .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
TPDF2#   MULF      X6,X0          .                                      VTRI          17
         SUBF      X6,X7          .                                      VTRI          18
         SXI       X6,A8,XE,0     .
TPDF3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
TPDFVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,TPDFR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,TPDFR1A# .
TPDFR1#  SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
TPDFR1A# MULF      X6,X0          .                                      VTRI          19
         MULF      XA,X0          .                                      VTRI          20
         SUBF      X6,X7          .                                      VTRI          21
         SUBF      XA,X7          .                                      VTRI          22
         BRINC     X1,XE,TPDFR1#  .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,TPDFR3#  .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
TPDFR2#  MULF      X6,X0          .                                      VTRI          23
         SUBF      X6,X7          .                                      VTRI          24
         SXI       X6,A8,XE,0     .
TPDFR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        T S P F V   -   FLOATING POINT VECTOR TRIAD, + *
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
TSPFV    BSS       0
         CPYXA     A7,X9               .AJ
         CPYXA     A8,XA               .AK
         CPYXA     A6,XB               .AI
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,TSPF2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,TSPF1A#  .
TSPF1#   SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
TSPF1A#  ADDF      X6,X7          .
         ADDF      XA,XB          .
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         MULF      X6,X0          .
         MULF      XA,X0          .
         BRINC     X1,XE,TSPF1#   .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,TSPF3#   .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
TSPF2#   ADDF      X6,X7          .
         MULF      X6,X0          .
         SXI       X6,A8,XE,0     .
TSPF3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
TSPFVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         CPYXX     X4,X7          .XJ
         CPYXX     X5,X7          .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,TSPFR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,TSPFR1A# .
TSPFR1#  SXI       X4,AF,XE,0     .
         SXI       X5,AF,XE,8     .
         CPYXX     X4,X7          .
         CPYXX     X5,X7          .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
TSPFR1A# ADDF      X4,X6          .
         ADDF      X5,XA          .
         MULF      X4,X0          .
         MULF      X5,X0          .
         BRINC     X1,XE,TSPFR1#  .
         INCX      XE,1           .
         SXI       X4,AF,XE,0     .
         SXI       X5,AF,XE,8     .
         BRXEQ     X3,X0,TSPFR3#  .
         LXI       X6,A6,XE,0     .
         CPYXX     X4,X7          .
         INCX      XE,1           .
TSPFR2#  ADDF      X4,X6          .
         MULF      X4,X0          .
         SXI       X4,A8,XE,0     .
TSPFR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        T D P F V   -   FLOATING POINT VECTOR TRIAD, - *
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
TDPFV    BSS       0
         CPYXA     A7,X9               .AJ
         CPYXA     A8,XA               .AK
         CPYXA     A6,XB               .AI
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,TDPF2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,TDPF1A#  .
TDPF1#   SXI       X7,AF,XE,0     .
         SXI       XB,AF,XE,8     .
         LXI       X7,A7,XE,0     .
         LXI       XB,A7,XE,8     .
         INCX      XE,1           .
TDPF1A#  SUBF      X7,X6          .
         SUBF      XB,XA          .
         LXI       X6,A6,XE,8     .
         LXI       XA,A6,XE,16    .
         MULF      X7,X0          .
         MULF      XB,X0          .
         BRINC     X1,XE,TDPF1#   .
         INCX      XE,1           .
         SXI       X7,AF,XE,0     .
         SXI       XB,AF,XE,8     .
         BRXEQ     X3,X0,TDPF3#   .
         LXI       X7,A7,XE,0     .
         INCX      XE,1           .
TDPF2#   SUBF      X7,X6          .
         MULF      X7,X0          .
         SXI       X7,A8,XE,0     .
TDPF3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
TDPFVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         CPYXX     X4,X7          .
         CPYXX     X5,X7          .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,TDPFR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,TDPFR1A# .
TDPFR1#  SXI       X4,AF,XE,0     .
         SXI       X5,AF,XE,8     .
         CPYXX     X4,X7          .
         CPYXX     X5,X7          .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
TDPFR1A# SUBF      X4,X6          .
         SUBF      X5,XA          .
         MULF      X4,X0          .
         MULF      X5,X0          .
         BRINC     X1,XE,TDPFR1#  .
         INCX      XE,1           .
         SXI       X4,AF,XE,0     .
         SXI       X5,AF,XE,8     .
         BRXEQ     X3,X0,TDPFR3#  .
         LXI       X6,A6,XE,0     .
         CPYXX     X4,X7          .
         INCX      XE,1           .
TDPFR2#  SUBF      X4,X6          .
         MULF      X4,X0          .
         SXI       X4,A8,XE,0     .
TDPFR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        S U M P F V   -   FLT POINT VECTOR SUMMATION OF PRODUCTS
.
. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SUMPFV   BSS       0
         CPYXA     A7,XB               .SET-UP A-REG.
         CPYXA     A6,X9               .AJ
         CPYXX     X5,X8               .SAVE STORE INDEX
.
         ENTP      X6,0                .
         ENTP      X7,0                .
         ENTP      X8,0                .CLEAR SUM REGISTERS
         ENTP      X9,0                .
         ENTP      XA,0                .
         ENTP      XB,0                .
.
         ENTP      X2,1                .FOR LENGTH TEST
         LX        X6,A7,0*8           .V(0)
         LX        X0,A6,0*8
         MULF      X6,X0
         BRXEQ     X1,X2,SUMPV2#       .BRANCH IF L = 1
         ENTP      X2,2                .
         LX        X7,A7,1*8           .V(1)
         LX        X0,A6,1*8
         MULF      X7,X0
         BRXEQ     X1,X2,SUMPV2#       .BRANCH IF L = 2
         ENTP      X2,3                .
         LX        X8,A7,2*8           .V(2)
         LX        X0,A6,2*8
         MULF      X8,X0
         BRXEQ     X1,X2,SUMPV2#       .BRANCH IF L = 3
         ENTP      X2,4                .
         LX        X9,A7,3*8           .V(3)
         LX        X0,A6,3*8
         MULF      X9,X0
         BRXEQ     X1,X2,SUMPV2#       .BRANCH IF L = 4
         ENTP      X2,5                .
         LX        XA,A7,4*8           .V(4)
         LX        X0,A6,4*8
         MULF      XA,X0
         BRXEQ     X1,X2,SUMPV2#       .BRANCH IF L = 5
.
         LX        XB,A7,5*8           .V(5)
         LX        X0,A6,5*8
         LX        XC,A7,6*8           .V(6)
         LX        XD,A7,7*8           .V(7)
         LX        XE,A7,8*8           .V(8)
         LX        XF,A7,9*8           .V(9)
.
         ENTP      X3,10               .RUNNING INDEX
         ADDAQ     A6,A6,-4*8          .ADJUST FOR LOADS
SUMPV1#  BSS       0
         MULF      XB,X0
         LXI       X0,A6,X3,0
         INCX      X2,1                .
         ADDF      X6,XB               .R(0) = R(0) + V(K+0)
         LXI       XB,A7,X3,0*8        .V(K+5)
         BRXEQ     X1,X2,SUMPV2#
         MULF      XC,X0
         LXI       X0,A6,X3,+1*8
         INCX      X2,1                .
         ADDF      X7,XC               .R(1) = R(1) + V(K+1)
         LXI       XC,A7,X3,1*8        .V(K+6)
         BRXEQ     X1,X2,SUMPV2#       .
         MULF      XD,X0
         LXI       X0,A6,X3,+2*8
         INCX      X2,1                .
         ADDF      X8,XD               .R(2) = R(2) + V(K+2)
         LXI       XD,A7,X3,2*8        .V(K+7)
         BRXEQ     X1,X2,SUMPV2#       .
         MULF      XE,X0
         LXI       X0,A6,X3,+3*8
         INCX      X2,1                .
         ADDF      X9,XE               .R(3) = R(3) + V(K+3)
         LXI       XE,A7,X3,3*8        .V(K+8)
         BRXEQ     X1,X2,SUMPV2#       .
         MULF      XF,X0
         LXI       X0,A6,X3,+4*8
         INCX      X2,1                .
         ADDF      XA,XF               .R(4) = R(4) + V(K+4)
         LXI       XF,A7,X3,4*8        .V(K+9)
         BRXEQ     X1,X2,SUMPV2#       .
         INCX      X3,5                .BUMP RUNNING INDEX
         BRXEQ     X0,X0,SUMPV1#       .LOOP
.
SUMPV2#  BSS       0
         CPYXX     XF,X1               .L
         ENTP      XE,5                .
         DIVX      XF,XE               .I(L/5)
         CPYXX     XE,X1               .
         MULXQ     XF,XF,5             .I(L/5) * 5
         SUBX      XE,XF               .R(L/5)
         ENTP      X4,0                .CLEAR ACCUMULATOR
         SHFX      XE,XE,X0,1          .POSITION XE FOR BRREL
         ADDXQ     XE,XE,(SUMPV4#-SUMPV3#)/2   .BRANCH ADDRESS
SUMPV3#  BRREL     XE                  .
SUMPV4#  BSS       0
         BRXEQ     X0,X0,SUMPV5#       .ZERO
         BRXEQ     X0,X0,SUMPV6#       .ONE
         BRXEQ     X0,X0,SUMPV7#       .TWO
         BRXEQ     X0,X0,SUMPV8#       .THREE
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         BRXEQ     X0,X0,SUMPV9#       .PUNT
SUMPV5#  BSS       0
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         BRXEQ     X0,X0,SUMPV9#       .PUNT
SUMPV6#  BSS       0
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         BRXEQ     X0,X0,SUMPV9#       .PUNT
SUMPV7#  BSS       0
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         BRXEQ     X0,X0,SUMPV9#       .PUNT
SUMPV8#  BSS       0
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
SUMPV9#  BSS       0
         ENTE      X2,0E6(16)
         CPYSX     X2,X2               .READ USER MASK
         ENTE      X1,043(16)
         CPYSX     X1,X1               .READ UCR
         ANDX      X2,X1
         ENTE      X1,017F(16)         .CONDITIONS OF INTEREST
         ANDX      X2,X1               .SAVE
         ENTP      X1,4
         BRXEQ     X1,X2,SUMPV11#      .IF INDEFINITE ONLY
SUMPV10# BSS       0
         SXI       X4,A2,X5,17*8       .SAVE RESULT
SUMPV11# BSS       0
         BRXEQ     X0,X0,VTEXIT#       .PUNT
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SUMPFVR  BSS       0
         CPYXA     A7,XB               .SET-UP A-REG.
         CPYXX     X0,X7               .XJ VALUE
         CPYXX     X5,X8               .SAVE STORE INDEX
.
         ENTP      X6,0                .
         ENTP      X7,0                .
         ENTP      X8,0                .CLEAR SUM REGISTERS
         ENTP      X9,0                .
         ENTP      XA,0                .
         ENTP      XB,0                .
.
         ENTP      X2,1                .FOR LENGTH TEST
         LX        X6,A7,0*8           .V(0)
         MULF      X6,X0
         BRXEQ     X1,X2,SUMPVR2#      .BRANCH IF L = 1
         ENTP      X2,2                .
         LX        X7,A7,1*8           .V(1)
         MULF      X7,X0
         BRXEQ     X1,X2,SUMPVR2#      .BRANCH IF L = 2
         ENTP      X2,3                .
         LX        X8,A7,2*8           .V(2)
         MULF      X8,X0
         BRXEQ     X1,X2,SUMPVR2#      .BRANCH IF L = 3
         ENTP      X2,4                .
         LX        X9,A7,3*8           .V(3)
         MULF      X9,X0
         BRXEQ     X1,X2,SUMPVR2#      .BRANCH IF L = 4
         ENTP      X2,5                .
         LX        XA,A7,4*8           .V(4)
         MULF      XA,X0
         BRXEQ     X1,X2,SUMPVR2#      .BRANCH IF L = 5
.
         LX        XB,A7,5*8           .V(5)
         LX        XC,A7,6*8           .V(6)
         LX        XD,A7,7*8           .V(7)
         LX        XE,A7,8*8           .V(8)
         LX        XF,A7,9*8           .V(9)
.
         ENTP      X3,10               .RUNNING INDEX
SUMPVR1# BSS       0
         MULF      XB,X0
         INCX      X2,1                .
         ADDF      X6,XB               .R(0) = R(0) + V(K+0)
         LXI       XB,A7,X3,0*8        .V(K+5)
         BRXEQ     X1,X2,SUMPVR2#
         MULF      XC,X0
         INCX      X2,1                .
         ADDF      X7,XC               .R(1) = R(1) + V(K+1)
         LXI       XC,A7,X3,1*8        .V(K+6)
         BRXEQ     X1,X2,SUMPVR2#      .
         MULF      XD,X0
         INCX      X2,1                .
         ADDF      X8,XD               .R(2) = R(2) + V(K+2)
         LXI       XD,A7,X3,2*8        .V(K+7)
         BRXEQ     X1,X2,SUMPVR2#      .
         MULF      XE,X0
         INCX      X2,1                .
         ADDF      X9,XE               .R(3) = R(3) + V(K+3)
         LXI       XE,A7,X3,3*8        .V(K+8)
         BRXEQ     X1,X2,SUMPVR2#      .
         MULF      XF,X0
         INCX      X2,1                .
         ADDF      XA,XF               .R(4) = R(4) + V(K+4)
         LXI       XF,A7,X3,4*8        .V(K+9)
         BRXEQ     X1,X2,SUMPVR2#      .
         INCX      X3,5                .BUMP RUNNING INDEX
         BRXEQ     X0,X0,SUMPVR1#      .LOOP
.
SUMPVR2# BSS       0
         CPYXX     XF,X1               .L
         ENTP      XE,5                .
         DIVX      XF,XE               .I(L/5)
         CPYXX     XE,X1               .
         MULXQ     XF,XF,5             .I(L/5) * 5
         SUBX      XE,XF               .R(L/5)
         ENTP      X4,0                .CLEAR ACCUMULATOR
         SHFX      XE,XE,X0,1          .POSITION XE FOR BRREL
         ADDXQ     XE,XE,(SUMPVR4#-SUMPVR3#)/2   .BRANCH ADDRESS
SUMPVR3# BRREL     XE                  .
SUMPVR4# BSS       0
         BRXEQ     X0,X0,SUMPVR5#       .ZERO
         BRXEQ     X0,X0,SUMPVR6#       .ONE
         BRXEQ     X0,X0,SUMPVR7#       .TWO
         BRXEQ     X0,X0,SUMPVR8#      .THREE
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         BRXEQ     X0,X0,SUMPVR9#      .PUNT
SUMPVR5# BSS       0
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         BRXEQ     X0,X0,SUMPVR9#      .PUNT
SUMPVR6# BSS       0
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         BRXEQ     X0,X0,SUMPVR9#      .PUNT
SUMPVR7# BSS       0
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         BRXEQ     X0,X0,SUMPVR9#      .PUNT
SUMPVR8# BSS       0
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
SUMPVR9# BSS       0
         ENTE      X2,0E6(16)
         CPYSX     X2,X2               .READ USER MASK
         ENTE      X1,043(16)
         CPYSX     X1,X1               .READ UCR
         ANDX      X2,X1
         ENTE      X1,017F(16)         .CONDITIONS OF INTEREST
         ANDX      X2,X1               .SAVE
         ENTP      X1,4
         BRXEQ     X1,X2,SUMPR11#      .IF INDEFINITE ONLY
SUMPR10# BSS       0
         SXI       X4,A2,X5,17*8       .SAVE RESULT
SUMPR11# BSS       0
         BRXEQ     X0,X0,VTEXIT#       .PUNT
.
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +
.
.        G T H I V  -   GATHER VECTOR, INDEX
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
GTHIV    BSS       0
         CPYXA     A7,X9               .AJ
         CPYXA     A8,XA               .AK
         CPYXA     A6,XB               .AI
         ENTP      XE,1           .
         ADDAQ     A8,A8,-8       .
         ADDAQ     A6,A6,-8       .
GTHIV1#  LXI       X6,A6,XE,0     .1ST ELEMENT V(AI)
         SHFX      X6,X6,X0,3     .
         CPYAA     AF,A7          .
         ADDAX     AF,X6          .
         LX        X7,AF,0        .
         SXI       X7,A8,XE,0     .
         BRINC     X1,XE,GTHIV1#
         BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
GTHIVR   BSS       0
         CPYXA     A8,XA               .AK
         CPYXA     A6,XB               .AI
         ENTP      XE,1           .
         ADDAQ     A8,A8,-8       .
GTHIVR1# SXI       X7,A8,XE,0     .
         BRINC     X1,XE,GTHIVR1# .
         BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        S C T I V  -   SCATTER VECTOR, INDEX
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SCTIV    BSS       0
         CPYXA     A7,X9               .AJ
         CPYXA     A8,XA               .AK
         CPYXA     A6,XB               .AI
         ENTP      XE,1           .
         LX        X7,A7,0        .     1ST OPERAND V(AJ)
         LX        X6,A6,0        .     1ST OPERAND V(AI)
SCTIV1#  SHFX      X6,X6,X0,3     .
         CPYAA     AF,A8
         ADDAX     AF,X6
         SX        X7,AF,0        .
         LXI       X7,A7,XE,0     .
         LXI       X6,A6,XE,0     .
         BRINC     X1,XE,SCTIV1#  .
         BRXEQ     X0,X0,VTEXIT#  .
.
. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SCTIVR   BSS       0
         CPYXA     A8,XA               .AK
         CPYXA     A6,XB               .AI
         ENTP      XE,1           .
         LX        X6,A6,0        .    1ST ELEMENT V(AI)
SCTIVR1# SHFX      X6,X6,X0,3     .
         CPYAA     AF,A8
         ADDAX     AF,X6
         SX        X7,AF,0        .
         LXI       X6,A6,XE,0     .
         BRINC     X1,XE,SCTIVR1# .
         BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        A D D F V   -   FLOATING POINT VECTOR SUM
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
ADDFV    BSS       0
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,ADDF2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,ADDF1A#  .
ADDF1#   SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
ADDF1A#  ADDF      X6,X7          .
         ADDF      XA,XB          .
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         BRINC     X1,XE,ADDF1#   .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,ADDF3#   .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
ADDF2#   ADDF      X6,X7          .
         SXI       X6,A8,XE,0     .
ADDF3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
ADDFVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,ADDFR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,ADDFR1A# .
ADDFR1#  SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
ADDFR1A# ADDF      X6,X7          .
         ADDF      XA,X7          .
         BRINC     X1,XE,ADDFR1#  .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,ADDFR3#  .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
ADDFR2#  ADDF      X6,X7          .
         SXI       X6,A8,XE,0     .
ADDFR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        S U B F V   -   FLOATING POINT VECTOR DIFFERENCE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SUBFV    BSS       0
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,SUBF2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,SUBF1A#  .
SUBF1#   SXI       X7,AF,XE,0     .
         SXI       XB,AF,XE,8     .
         LXI       X7,A7,XE,0     .
         LXI       XB,A7,XE,8     .
         INCX      XE,1           .
SUBF1A#  SUBF      X7,X6          .
         SUBF      XB,XA          .
         LXI       X6,A6,XE,8     .
         LXI       XA,A6,XE,16    .
         BRINC     X1,XE,SUBF1#   .
         INCX      XE,1           .
         SXI       X7,AF,XE,0     .
         SXI       XB,AF,XE,8     .
         BRXEQ     X3,X0,SUBF3#   .
         LXI       X7,A7,XE,0     .
         INCX      XE,1           .
SUBF2#   SUBF      X7,X6          .
         SXI       X7,A8,XE,0     .
SUBF3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SUBFVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         CPYXX     X4,X7          .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,SUBFR2#  .
         LX        XA,A6,8        .
         CPYXX     X5,X7          .
         BRXEQ     X0,X0,SUBFR1A# .
SUBFR1#  SXI       X4,AF,XE,0     .
         SXI       X5,AF,XE,8     .
         CPYXX     X4,X7          .
         CPYXX     X5,X7          .
         INCX      XE,1           .
SUBFR1A# SUBF      X4,X6          .
         SUBF      X5,XA          .
         LXI       X6,A6,XE,8     .
         LXI       XA,A6,XE,16    .
         BRINC     X1,XE,SUBFR1#  .
         INCX      XE,1           .
         SXI       X4,AF,XE,0     .
         SXI       X5,AF,XE,8     .
         BRXEQ     X3,X0,SUBFR3#  .
         LXI       X6,A6,XE,0     .
         CPYXX     X4,X7          .
         INCX      XE,1           .
SUBFR2#  SUBF      X4,X6          .
         SXI       X4,A8,XE,0     .
SUBFR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        M U L F V   -   FLOATING POINT VECTOR PRODUCT
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
MULFV    BSS       0
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,MULF2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,MULF1A#  .
MULF1#   SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
MULF1A#  MULF      X6,X7          .
         MULF      XA,XB          .
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         BRINC     X1,XE,MULF1#   .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,MULF3#   .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
MULF2#   MULF      X6,X7          .
         SXI       X6,A8,XE,0     .
MULF3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
MULFVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,MULFR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,MULFR1A# .
MULFR1#  SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
MULFR1A# MULF      X6,X7          .
         MULF      XA,X7          .
         BRINC     X1,XE,MULFR1#  .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,MULFR3#  .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
MULFR2#  MULF      X6,X7          .
         SXI       X6,A8,XE,0     .
MULFR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        D I V F V   -   FLOATING POINT VECTOR QUOTIENT
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
DIVFV    BSS       0
         ENTP      X2,0                .
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0             .1ST OPERAND
         LX        X7,A7,0             .2ND OPERAND
         ENTP      XE,1                .LOOP COUNTER
         ADDAQ     A8,A8,-8            .
DIVF1#   DIVF      X7,X6               .
         BRCR      7,4,DIVF3#          .
DIVF2#   BSS       0
         LXI       X6,A6,XE,0          .
         SXI       X7,A8,XE,0          .
         LXI       X7,A7,XE,0          .
         BRINC     X1,XE,DIVF1#        .
         BRXEQ     X2,X0,VTEXIT#       .
         BRCR      0D(16),5,DIVF21#    .
DIVF21#  BSS       0
         BRCR      7,5,VTEXIT#         .
DIVF3#   BSS       0
         ENTP      X2,4                .
         ISOM      X7,X0,102(8)        .
         BRXEQ     X0,X0,DIVF2#        .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
DIVFVR   BSS       0
         ENTP      X2,0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0             .
         CPYXX     X4,X7               .
         ENTP      XE,1                .
         ADDAQ     A8,A8,-8            .
DIVFR1#  DIVF      X4,X6               .
         BRCR      7,4,DIVFR3#         .
DIVFR2#  BSS       0
         LXI       X6,A6,XE,0          .
         SXI       X4,A8,XE,0          .
         CPYXX     X4,X7               .
         BRINC     X1,XE,DIVFR1#       .
         BRXEQ     X2,X0,VTEXIT#       .
         BRCR      0D(16),5,DIVFR21#   .
DIVFR21# BSS       0
         BRCR      7,5,VTEXIT#         .
DIVFR3#  BSS       0
         ENTP      X2,4                .
         ISOM      X4,X0,102(8)        .
         BRXEQ     X0,X0,DIVFR2#       .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        A D D X V   -   INTEGER VECTOR SUM
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
ADDXV    BSS       0
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,ADDX2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,ADDX1A#  .
ADDX1#   SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
ADDX1A#  ADDX      X6,X7          .
         ADDX      XA,XB          .
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         BRINC     X1,XE,ADDX1#   .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,ADDX3#   .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
ADDX2#   ADDX      X6,X7          .
         SXI       X6,A8,XE,0     .
ADDX3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
ADDXVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,ADDXR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,ADDXR1A# .
ADDXR1#  SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
ADDXR1A# ADDX      X6,X7          .
         ADDX      XA,X7          .
         BRINC     X1,XE,ADDXR1#  .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,ADDXR3#  .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
ADDXR2#  ADDX      X6,X7          .
         SXI       X6,A8,XE,0     .
ADDXR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        S U B X V   -   INTEGER VECTOR DIFFERENCE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SUBXV    BSS       0
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,SUBX2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,SUBX1A#  .
SUBX1#   SXI       X7,AF,XE,0     .
         SXI       XB,AF,XE,8     .
         LXI       X7,A7,XE,0     .
         LXI       XB,A7,XE,8     .
         INCX      XE,1           .
SUBX1A#  SUBX      X7,X6          .
         SUBX      XB,XA          .
         LXI       X6,A6,XE,8     .
         LXI       XA,A6,XE,16    .
         BRINC     X1,XE,SUBX1#   .
         INCX      XE,1           .
         SXI       X7,AF,XE,0     .
         SXI       XB,AF,XE,8     .
         BRXEQ     X3,X0,SUBX3#   .
         LXI       X7,A7,XE,0     .
         INCX      XE,1           .
SUBX2#   SUBX      X7,X6          .
         SXI       X7,A8,XE,0     .
SUBX3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SUBXVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         CPYXX     X4,X7          .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,SUBXR2#  .
         LX        XA,A6,8        .
         CPYXX     X5,X7          .
         BRXEQ     X0,X0,SUBXR1A# .
SUBXR1#  SXI       X4,AF,XE,0     .
         SXI       X5,AF,XE,8     .
         CPYXX     X4,X7          .
         CPYXX     X5,X7          .
         INCX      XE,1           .
SUBXR1A# SUBX      X4,X6          .
         SUBX      X5,XA          .
         LXI       X6,A6,XE,8     .
         LXI       XA,A6,XE,16    .
         BRINC     X1,XE,SUBXR1#  .
         INCX      XE,1           .
         SXI       X4,AF,XE,0     .
         SXI       X5,AF,XE,8     .
         BRXEQ     X3,X0,SUBXR3#  .
         CPYXX     X4,X7          .
         INCX      XE,1           .
SUBXR2#  SUBX      X4,X6          .
         SXI       X4,A8,XE,0     .
SUBXR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        I O R V   -   LOGICAL VECTOR SUM
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
IORV     BSS       0
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,IORX2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,IORX1A#  .
IORX1#   SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
IORX1A#  IORX      X6,X7          .
         IORX      XA,XB          .
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         BRINC     X1,XE,IORX1#   .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,IORX3#   .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
IORX2#   IORX      X6,X7          .
         SXI       X6,A8,XE,0     .
IORX3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
IORVR    BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,IORXR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,IORXR1A# .
IORXR1#  SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
IORXR1A# IORX      X6,X7          .
         IORX      XA,X7          .
         BRINC     X1,XE,IORXR1#  .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,IORXR3#  .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
IORXR2#  IORX      X6,X7          .
         SXI       X6,A8,XE,0     .
IORXR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        X O R V   -   LOGICAL VECTOR DIFFERENCE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
XORV     BSS       0
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,XORX2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,XORX1A#  .
XORX1#   SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
XORX1A#  XORX      X6,X7          .
         XORX      XA,XB          .
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         BRINC     X1,XE,XORX1#   .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,XORX3#   .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
XORX2#   XORX      X6,X7          .
         SXI       X6,A8,XE,0     .
XORX3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
XORVR    BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,XORXR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,XORXR1A# .
XORXR1#  SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
XORXR1A# XORX      X6,X7          .
         XORX      XA,X7          .
         BRINC     X1,XE,XORXR1#  .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,IORXR3#  .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
XORXR2#  XORX      X6,X7          .
         SXI       X6,A8,XE,0     .
XORXR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        A N D V   -   LOGICAL VECTOR PRODUCT
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
ANDV     BSS       0
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,ANDX2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,ANDX1A#  .
ANDX1#   SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
ANDX1A#  ANDX      X6,X7          .
         ANDX      XA,XB          .
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         BRINC     X1,XE,ANDX1#   .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,ANDX3#   .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
ANDX2#   ANDX      X6,X7          .
         SXI       X6,A8,XE,0     .
ANDX3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
ANDVR    BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,ANDXR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,ANDXR1A# .
ANDXR1#  SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         LXI       X6,A6,XE,0     .
         LXI       XA,A6,XE,8     .
         INCX      XE,1           .
ANDXR1A# ANDX      X6,X7          .
         ANDX      XA,X7          .
         BRINC     X1,XE,ANDXR1#  .
         INCX      XE,1           .
         SXI       X6,AF,XE,0     .
         SXI       XA,AF,XE,8     .
         BRXEQ     X3,X0,IORXR3#  .
         LXI       X6,A6,XE,0     .
         INCX      XE,1           .
ANDXR2#  ANDX      X6,X7          .
         SXI       X6,A8,XE,0     .
ANDXR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        C N F I V   -   CONVERT INTEGER VECTOR TO FLOATING
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CNIFV    BSS       0
         CPYXA     A7,X9               .SET UP A-REGS
         CPYXA     A8,XA               .
         LX        X7,A7,0        .
         LX        XA,A7,8        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,CNIF3#   .
         BRXEQ     X0,X0,CNIF2#   .
CNIF1#   SXI       X8,AF,XE,0     .
         SXI       XB,AF,XE,8     .
         INCX      XE,1           .
CNIF2#   CNIF      X8,X7          .
         CNIF      XB,XA          .
         LXI       X7,A7,XE,8     .
         LXI       XA,A7,XE,16    .
         BRINC     X1,XE,CNIF1#   .
         INCX      XE,1           .
         SXI       X8,AF,XE,0     .
         SXI       XB,AF,XE,8     .
         BRXEQ     X3,X0,CNIF4#   .
         INCX      XE,1           .
CNIF3#   CNIF      X8,X7          .
         SXI       X8,A8,XE,0      .
CNIF4#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CNIFVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REG
         ENTP      XE,1
         CNIF      X8,X7          .
         ADDAQ     A8,A8,-8       .
CNIFR1#  SXI       X8,A8,XE,0     .
         BRINC     X1,XE,CNIFR1#  .
         BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        C N I F V   -   CONVERT FLOATING VECTOR TO INTEGER
.
. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CNFIV    BSS       0
         CPYXA     A7,X9               .SET UP A-REGS
         CPYXA     A8,XA               .
         LX        X7,A7,0        .
         LX        XA,A7,8        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-16      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,CNFI3#   .
         BRXEQ     X0,X0,CNFI2#   .
CNFI1#   SXI       X8,AF,XE,0   .
         SXI       XB,AF,XE,8    .
         INCX      XE,1           .
CNFI2#   CNFI      X8,X7          .
         CNFI      XB,XA          .
         LXI       X7,A7,XE,8     .
         LXI       XA,A7,XE,16    .
         BRINC     X1,XE,CNFI1#   .
         INCX      XE,1           .
         SXI       X8,AF,XE,0     .
         SXI       XB,AF,XE,8    .
         BRXEQ     X3,X0,CNFI4#   .
         INCX      XE,1           .
CNFI3#   CNFI      X8,X7          .
         SXI       X8,A8,XE,0      .
CNFI4#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CNFIVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REG
         ENTP      XE,1
         CNFI      X8,X7          .
         ADDAQ     A8,A8,-8       .
CNFIR1#  SXI       X8,A8,XE,0    .
         BRINC     X1,XE,CNFIR1#  .
         BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        S H F V   -   VECTOR SHIFT
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SHFCV    BSS       0
         CPYXA     A7,X9               .
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .     1ST OPERAND
         LX        X7,A7,0        .     2ND OPERAND
         ENTP      XE,1           .     LOOP COUNTER
         DECX      X1,1           .
         ADDAQ     AF,A8,-24      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,SHFC2#   .     BRANCH IF L = 1
         LX        XA,A6,8        .     3RD OPERAND
         LX        XB,A7,8        .     4TH OPERAND
         BRXEQ     X0,X0,SHFC1A#  .
SHFC1#   SXI       X8,AF,XE,0     .
         SXI       XC,AF,XE,8     .
SHFC1A#  SHFC      X8,X6,X7,0     .
         SHFC      XC,XA,XB,0     .
         LXI       X7,A7,XE,8     .
         LXI       XB,A7,XE,16    .
         LXI       X6,A6,XE,8     .
         LXI       XA,A6,XE,16    .
         INCX      XE,1           .
         BRINC     X1,XE,SHFC1#   .
         INCX      XE,1           .
         SXI       X8,AF,XE,0     .
         SXI       XC,AF,XE,8     .
         BRXEQ     X3,X0,SHFC3#   .
SHFC2#   SHFC      X8,X6,X7,0     .
         SXI       X8,A8,XE,0     .
SHFC3#   BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SHFCVR   BSS       0
         CPYXA     A8,XA               .SET UP A-REGS
         CPYXA     A6,XB               .
         LX        X6,A6,0        .
         ENTP      XE,1           .
         DECX      X1,1           .
         ADDAQ     AF,A8,-24      .
         ADDAQ     A8,A8,-8       .
         SUBX      X1,X3          .
         BRXEQ     X2,X0,SHFCR2#  .
         LX        XA,A6,8        .
         BRXEQ     X0,X0,SHFCR1A# .
SHFCR1#  SXI       X8,AF,XE,0     .
         SXI       XC,AF,XE,8     .
SHFCR1A# SHFC      X8,X6,X7,0     .
         SHFC      XC,XA,X7,0     .
         LXI       X6,A6,XE,8     .
         LXI       XA,A6,XE,16    .
         INCX      XE,1           .
         BRINC     X1,XE,SHFCR1#  .
         INCX      XE,1           .
         SXI       X8,AF,XE,0     .
         SXI       XC,AF,XE,8     .
         BRXEQ     X3,X0,SHFCR3#  .
SHFCR2#  SHFC      X8,X6,X7,0     .
         SXI       X8,A8,XE,0     .
SHFCR3#  BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        C M P E Q V   -   INTEGER VECTOR COMPARE FOR EQUAL
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CMPEQV   BSS       0
         ADDXQ     X4,X1,-1            .L - 1
         CPYXA     A6,XB               .AI
         CPYXA     A8,XA               .AK
         CPYXA     A7,X9               .AJ
         LX        X6,A6,0             .FIRST OPERAND
         LX        X7,A7,0             .SECOND OPERAND
         ENTP      XE,1                .LOOP INDEX
         ADDAQ     AF,A8,-3*8          .FOR STORES
         ADDAQ     A8,A8,-2*8          .
         SUBX      X4,X3               .REMOVE ODD COUNT
         BRXEQ     X2,X0,CMPEQ2#       .BRANCH IF ONE OPERAND
         LX        XA,A6,1*8           .1ST OPERAND
         LX        XB,A7,1*8           .2ND OPERAND
         BRXEQ     X0,X0,CMPEQ1A#      .ENTER LOOP
.
CMPEQ1#  BSS       0
         SXI       XC,AF,XE,0          .
         SXI       XD,AF,XE,1*8        .
CMPEQ1A# BSS       0
         CMPX      X1,X7,X6            .
         LXI       X6,A6,XE,1*8        .
         LXI       X7,A7,XE,1*8        .
         INCX      XE,1                .
         MARK      XC,X1,08(16)        .
         CMPX      X1,XB,XA            .
         LXI       XA,A6,XE,1*8        .
         LXI       XB,A7,XE,1*8        .
         MARK      XD,X1,08(16)        .
         BRINC     X4,XE,CMPEQ1#       .
.
         INCX      XE,1                .
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
         BRXEQ     X3,X0,CMPEQ3#       .
.
CMPEQ2#  BSS       0
         CMPX      X1,X7,X6            .
         INCX      XE,1                .
         MARK      XC,X1,08(16)        .
         SXI       XC,A8,XE,0*8        .
CMPEQ3#  BSS       0
         BRXEQ     X0,X0,VTEXIT#
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CMPEQVR  BSS       0
         CPYXA     A6,XB               .AI.
         CPYXA     A8,XA               .AK
         LX        X6,A6,0*8           .FIRST OPERAND
         ENTP      XE,1                .
         ADDXQ     X4,X1,-1            .LOOP MAX
         ADDAQ     AF,A8,-3*8          .FOR STORE
         ADDAQ     A8,A8,-2*8          .
         SUBX      X4,X3               .REMOVE ODD COUNT
         BRXEQ     X2,X0,CMPEQR2#      .BRANCH IF L = 1
         LX        XA,A6,1*8           .1ST OPERAND
         BRXEQ     X0,X0,CMPEQRA#      .ENTER LOOP
.
CMPEQR1# BSS       0
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
CMPEQRA# BSS       0
         CMPX      X1,X7,X6            .
         LXI       X6,A6,XE,1*8        .
         INCX      XE,1                .
         MARK      XC,X1,08(16)        .
         CMPX      X1,X7,XA            .
         LXI       XA,A6,XE,1*8        .
         MARK      XD,X1,08(16)        .
         BRINC     X4,XE,CMPEQR1#      .
         INCX      XE,1                .
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
         BRXEQ     X3,X0,CMPEQR3#      .
CMPEQR2# BSS       0
         CMPX      X1,X7,X6            .
         INCX      XE,1                .
         MARK      XC,X1,08(16)        .
         SXI       XC,A8,XE,0*8        .
CMPEQR3# BSS       0
         BRXEQ     X0,X0,VTEXIT#       .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        C M P L T V   -   INTEGER VECTOR COMPARE FOR LESS THAN
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CMPLTV   BSS       0
         ADDXQ     X4,X1,-1            .L - 1
         CPYXA     A6,XB               .AI
         CPYXA     A8,XA               .AK
         CPYXA     A7,X9               .AJ
         LX        X6,A6,0             .FIRST OPERAND
         LX        X7,A7,0             .SECOND OPERAND
         ENTP      XE,1                .LOOP INDEX
         ADDAQ     AF,A8,-3*8          .FOR STORES
         ADDAQ     A8,A8,-2*8          .
         SUBX      X4,X3               .REMOVE ODD COUNT
         BRXEQ     X2,X0,CMPLT2#       .BRANCH IF ONE OPERAND
         LX        XA,A6,1*8           .1ST OPERAND
         LX        XB,A7,1*8           .2ND OPERAND
         BRXEQ     X0,X0,CMPLT1A#      .ENTER LOOP
.
CMPLT1#  BSS       0
         SXI       XC,AF,XE,0          .
         SXI       XD,AF,XE,1*8        .
CMPLT1A# BSS       0
         CMPX      X1,X7,X6            .
         LXI       X6,A6,XE,1*8        .
         LXI       X7,A7,XE,1*8        .
         INCX      XE,1                .
         MARK      XC,X1,01(16)        .
         CMPX      X1,XB,XA            .
         LXI       XA,A6,XE,1*8        .
         LXI       XB,A7,XE,1*8        .
         MARK      XD,X1,01(16)        .
         BRINC     X4,XE,CMPLT1#       .
.
         INCX      XE,1                .
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
         BRXEQ     X3,X0,CMPLT3#       .
.
CMPLT2#  BSS       0
         CMPX      X1,X7,X6            .
         INCX      XE,1                .
         MARK      XC,X1,01(16)        .
         SXI       XC,A8,XE,0*8        .
CMPLT3#  BSS       0
         BRXEQ     X0,X0,VTEXIT#
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CMPLTVR  BSS       0
         CPYXA     A6,XB               .AI.
         CPYXA     A8,XA               .AK
         LX        X6,A6,0*8           .FIRST OPERAND
         ENTP      XE,1                .
         ADDXQ     X4,X1,-1            .LOOP MAX
         ADDAQ     AF,A8,-3*8          .FOR STORE
         ADDAQ     A8,A8,-2*8          .
         SUBX      X4,X3               .REMOVE ODD COUNT
         BRXEQ     X2,X0,CMPLTR2#      .BRANCH IF L = 1
         LX        XA,A6,1*8           .1ST OPERAND
         BRXEQ     X0,X0,CMPLTRA#      .ENTER LOOP
.
CMPLTR1# BSS       0
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
CMPLTRA# BSS       0
         CMPX      X1,X7,X6            .
         LXI       X6,A6,XE,1*8        .
         INCX      XE,1                .
         MARK      XC,X1,01(16)        .
         CMPX      X1,X7,XA            .
         LXI       XA,A6,XE,1*8        .
         MARK      XD,X1,01(16)        .
         BRINC     X4,XE,CMPLTR1#      .
         INCX      XE,1                .
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
         BRXEQ     X3,X0,CMPLTR3#      .
CMPLTR2# BSS       0
         CMPX      X1,X7,X6            .
         INCX      XE,1                .
         MARK      XC,X1,01(16)        .
         SXI       XC,A8,XE,0*8        .
CMPLTR3# BSS       0
         BRXEQ     X0,X0,VTEXIT#       .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        C M P G E V   -   INTEGER VECTOR COMPARE FOR GREATER OR EQUAL
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CMPGEV   BSS       0
         ADDXQ     X4,X1,-1            .L - 1
         CPYXA     A6,XB               .AI
         CPYXA     A8,XA               .AK
         CPYXA     A7,X9               .AJ
         LX        X6,A6,0             .FIRST OPERAND
         LX        X7,A7,0             .SECOND OPERAND
         ENTP      XE,1                .LOOP INDEX
         ADDAQ     AF,A8,-3*8          .FOR STORES
         ADDAQ     A8,A8,-2*8          .
         SUBX      X4,X3               .REMOVE ODD COUNT
         BRXEQ     X2,X0,CMPGE2#       .BRANCH IF ONE OPERAND
         LX        XA,A6,1*8           .1ST OPERAND
         LX        XB,A7,1*8           .2ND OPERAND
         BRXEQ     X0,X0,CMPGE1A#      .ENTER LOOP
.
CMPGE1#  BSS       0
         SXI       XC,AF,XE,0          .
         SXI       XD,AF,XE,1*8        .
CMPGE1A# BSS       0
         CMPX      X1,X7,X6            .
         LXI       X6,A6,XE,1*8        .
         LXI       X7,A7,XE,1*8        .
         INCX      XE,1                .
         MARK      XC,X1,0C(16)        .
         CMPX      X1,XB,XA            .
         LXI       XA,A6,XE,1*8        .
         LXI       XB,A7,XE,1*8        .
         MARK      XD,X1,0C(16)        .
         BRINC     X4,XE,CMPGE1#       .
.
         INCX      XE,1                .
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
         BRXEQ     X3,X0,CMPGE3#       .
.
CMPGE2#  BSS       0
         CMPX      X1,X7,X6            .
         INCX      XE,1                .
         MARK      XC,X1,0C(16)        .
         SXI       XC,A8,XE,0*8        .
CMPGE3#  BSS       0
         BRXEQ     X0,X0,VTEXIT#
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CMPGEVR  BSS       0
         CPYXA     A6,XB               .AI.
         CPYXA     A8,XA               .AK
         LX        X6,A6,0*8           .FIRST OPERAND
         ENTP      XE,1                .
         ADDXQ     X4,X1,-1            .LOOP MAX
         ADDAQ     AF,A8,-3*8          .FOR STORE
         ADDAQ     A8,A8,-2*8          .
         SUBX      X4,X3               .REMOVE ODD COUNT
         BRXEQ     X2,X0,CMPGER2#      .BRANCH IF L = 1
         LX        XA,A6,1*8           .1ST OPERAND
         BRXEQ     X0,X0,CMPGERA#      .ENTER LOOP
.
CMPGER1# BSS       0
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
CMPGERA# BSS       0
         CMPX      X1,X7,X6            .
         LXI       X6,A6,XE,1*8        .
         INCX      XE,1                .
         MARK      XC,X1,0C(16)        .
         CMPX      X1,X7,XA            .
         LXI       XA,A6,XE,1*8        .
         MARK      XD,X1,0C(16)        .
         BRINC     X4,XE,CMPGER1#      .
         INCX      XE,1                .
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
         BRXEQ     X3,X0,CMPGER3#      .
CMPGER2# BSS       0
         CMPX      X1,X7,X6            .
         INCX      XE,1                .
         MARK      XC,X1,0C(16)        .
         SXI       XC,A8,XE,0*8        .
CMPGER3# BSS       0
         BRXEQ     X0,X0,VTEXIT#       .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        C M P N E V   -   INTEGER VECTOR COMPARE FOR NOT EQUAL
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CMPNEV   BSS       0
         ADDXQ     X4,X1,-1            .L - 1
         CPYXA     A6,XB               .AI
         CPYXA     A8,XA               .AK
         CPYXA     A7,X9               .AJ
         LX        X6,A6,0             .FIRST OPERAND
         LX        X7,A7,0             .SECOND OPERAND
         ENTP      XE,1                .LOOP INDEX
         ADDAQ     AF,A8,-3*8          .FOR STORES
         ADDAQ     A8,A8,-2*8          .
         SUBX      X4,X3               .REMOVE ODD COUNT
         BRXEQ     X2,X0,CMPNE2#       .BRANCH IF ONE OPERAND
         LX        XA,A6,1*8           .1ST OPERAND
         LX        XB,A7,1*8           .2ND OPERAND
         BRXEQ     X0,X0,CMPNE1A#      .ENTER LOOP
.
CMPNE1#  BSS       0
         SXI       XC,AF,XE,0          .
         SXI       XD,AF,XE,1*8        .
CMPNE1A# BSS       0
         CMPX      X1,X7,X6            .
         LXI       X6,A6,XE,1*8        .
         LXI       X7,A7,XE,1*8        .
         INCX      XE,1                .
         MARK      XC,X1,05(16)        .
         CMPX      X1,XB,XA            .
         LXI       XA,A6,XE,1*8        .
         LXI       XB,A7,XE,1*8        .
         MARK      XD,X1,05(16)        .
         BRINC     X4,XE,CMPNE1#       .
.
         INCX      XE,1                .
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
         BRXEQ     X3,X0,CMPNE3#       .
.
CMPNE2#  BSS       0
         CMPX      X1,X7,X6            .
         INCX      XE,1                .
         MARK      XC,X1,05(16)        .
         SXI       XC,A8,XE,0*8        .
CMPNE3#  BSS       0
         BRXEQ     X0,X0,VTEXIT#
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
CMPNEVR  BSS       0
         CPYXA     A6,XB               .AI.
         CPYXA     A8,XA               .AK
         LX        X6,A6,0*8           .FIRST OPERAND
         ENTP      XE,1                .
         ADDXQ     X4,X1,-1            .LOOP MAX
         ADDAQ     AF,A8,-3*8          .FOR STORE
         ADDAQ     A8,A8,-2*8          .
         SUBX      X4,X3               .REMOVE ODD COUNT
         BRXEQ     X2,X0,CMPNER2#      .BRANCH IF L = 1
         LX        XA,A6,1*8           .1ST OPERAND
         BRXEQ     X0,X0,CMPNERA#      .ENTER LOOP
.
CMPNER1# BSS       0
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
CMPNERA# BSS       0
         CMPX      X1,X7,X6            .
         LXI       X6,A6,XE,1*8        .
         INCX      XE,1                .
         MARK      XC,X1,05(16)        .
         CMPX      X1,X7,XA            .
         LXI       XA,A6,XE,1*8        .
         MARK      XD,X1,05(16)        .
         BRINC     X4,XE,CMPNER1#      .
         INCX      XE,1                .
         SXI       XC,AF,XE,0*8        .
         SXI       XD,AF,XE,1*8        .
         BRXEQ     X3,X0,CMPNER3#      .
CMPNER2# BSS       0
         CMPX      X1,X7,X6            .
         INCX      XE,1                .
         MARK      XC,X1,05(16)        .
         SXI       XC,A8,XE,0*8        .
CMPNER3# BSS       0
         BRXEQ     X0,X0,VTEXIT#       .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +
.
.        M R G V   -   VECTOR MERGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
MRGV     BSS       0
         CPYXA     A6,XB               .AI
         CPYXA     A7,X9               .AJ
         CPYXA     A8,XA               .AK
         LX        X4,A6,0*8           .CONTROL VECTOR
         LX        X6,A7,0*8           .1ST OPERAND
         LX        X7,A8,0*8           .2ND OPERAND
         ADDAQ     AA,A8,-2*8          .FOR STORES
         BRXNE     X2,X0,MRGV1#        .BRANCH IF L NE 1
         SHFX      X4,X4,X0,-63
         ANDX      X6,X4               .
         INHX      X7,X4               .FORM RESULT
         IORX      X6,X7               .
         SX        X6,A8,0*8           .AND STORE
         BRXEQ     X0,X0,VTEXIT#       .PUNT
.
MRGV1#   BSS       0
         LX        XC,A6,1*8           .CONTROL VECTOR
         LX        XA,A7,1*8           .1ST OPERAND
         LX        XB,A8,1*8           .2ND OPERAND
         DECX      X1,1                .LOOP MAX
         ENTP      XE,1                .LOOP INDEX
         SUBX      X1,X3               .REMOVE ODD NUMBER
         SHFX      X4,X4,X0,-63        .FORM MASK
         SHFX      XC,XC,X0,-63        .FORM MASK
.
MRGV2#   BSS       0
         INCX      XE,1                .
         ANDX      X6,X4               .
         ANDX      XA,XC               .
         INHX      X7,X4               .
         INHX      XB,XC               .
         LXI       X4,A6,XE,0*8        .
         LXI       XC,A6,XE,1*8        .
         IORX      X6,X7               .
         IORX      XA,XB               .
         LXI       X7,A8,XE,0*8        .
         LXI       XB,A8,XE,1*8        .
         SXI       X6,AA,XE,0*8        .
         SXI       XA,AA,XE,1*8        .
         LXI       X6,A7,XE,0*8        .
         LXI       XA,A7,XE,1*8        .
         SHFX      X4,X4,X0,-63        .
         SHFX      XC,XC,X0,-63        .
         BRINC     X1,XE,MRGV2#        .
.
         BRXEQ     X3,X0,VTEXIT#       .PUNT IF EVEN
         ANDX      X6,X4               .
         INHX      X7,X4               .
         IORX      X6,X7               .
         SXI       X6,AA,XE,2*8        .
         BRXEQ     X0,X0,VTEXIT#       .PUNT
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
MRGVR    BSS       0
         CPYXA     A6,XB               .AI
         CPYXA     A8,XA               .AK
         CPYXX     XF,X7               .XJ
         LX        X4,A6,0*8           .CONTROL VECTOR
         LX        X8,A8,0*8           .2ND OPERAND
         ADDAQ     AA,A8,-2*8          .FOR STORES
         BRXNE     X2,X0,MRGVR1#       .BRANCH IF L NE 1
         SHFX      X4,X4,X0,-63
         ANDX      X7,X4               .
         INHX      X8,X4               .FORM RESULT
         IORX      X7,X8               .
         SX        X7,A8,0*8           .AND STORE
         BRXEQ     X0,X0,VTEXIT#       .PUNT
.
MRGVR1#  BSS       0
         LX        XC,A6,1*8           .CONTROL VECTOR
         CPYXX     XA,XF               .1ST OPERAND
         LX        XB,A8,1*8           .2ND OPERAND
         DECX      X1,1                .LOOP MAX
         ENTP      XE,1                .LOOP INDEX
         SUBX      X1,X3               .REMOVE ODD NUMBER
         SHFX      X4,X4,X0,-63        .FORM MASK
         SHFX      XC,XC,X0,-63        .FORM MASK
.
MRGVR2#  BSS       0
         INCX      XE,1                .
         ANDX      X7,X4               .
         ANDX      XA,XC               .
         INHX      X8,X4               .
         INHX      XB,XC               .
         LXI       X4,A6,XE,0*8        .
         LXI       XC,A6,XE,1*8        .
         IORX      X7,X8               .
         IORX      XA,XB               .
         LXI       X8,A8,XE,0*8        .
         LXI       XB,A8,XE,1*8        .
         SXI       X7,AA,XE,0*8        .
         SXI       XA,AA,XE,1*8        .
         CPYXX     X7,XF               .
         CPYXX     XA,XF               .
         SHFX      X4,X4,X0,-63        .
         SHFX      XC,XC,X0,-63        .
         BRINC     X1,XE,MRGVR2#       .
.
         BRXEQ     X3,X0,VTEXIT#       .PUNT IF EVEN
         ANDX      X7,X4               .
         INHX      X8,X4               .
         IORX      X7,X8               .
         SXI       X7,AA,XE,2*8        .
         BRXEQ     X0,X0,VTEXIT#       .PUNT
.
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +
.
.        G T H V   -   GATHER VECTOR
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
GTHV     BSS       0
         CPYXA     A7,X9               .SET UP A-REGS
         CPYXA     A8,XA               .
         LX        X7,A7,0        .     1ST OPERAND
         SHFX      X6,X6,X0,3     .
         ENTP      XE,1           .
         ADDAQ     A8,A8,-8       .
         ADDAX     A7,X6          .
GTHV1#   SXI       X7,A8,XE,0     .
         LX        X7,A7,0        .
         ADDAX     A7,X6          .
         BRINC     X1,XE,GTHV1#
         BRXEQ     X0,X0,VTEXIT#  .
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
GTHVR    BSS       0
         CPYXA     A8,XA               .SET UP A-REG
         ENTP      XE,1           .
         ADDAQ     A8,A8,-8       .
GTHVR1#  SXI       X7,A8,XE,0     .
         BRINC     X1,XE,GTHVR1#  .
         BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        S C T V   -   SCATTER VECTOR
.
.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SCTV     BSS       0
         CPYXA     A7,X9               .SET UP A-REGS
         CPYXA     A8,XA               .
         LX        X7,A7,0        .     1ST OPERAND
         SHFX      X6,X6,X0,3     .
         ENTP      XE,1           .
SCTV1#   SX        X7,A8,0        .
         LXI       X7,A7,XE,0     .
         ADDAX     A8,X6          .
         BRINC     X1,XE,SCTV1#   .
         BRXEQ     X0,X0,VTEXIT#  .
.
. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SCTVR    BSS       0
         CPYXA     A8,XA               .SET UP A-REG
         SHFX      X6,X6,X0,3     .
         ENTP      XE,1           .
SCTVR1#  SX        X7,A8,0        .
         ADDAX     A8,X6          .
         BRINC     X1,XE,SCTVR1#  .
         BRXEQ     X0,X0,VTEXIT#  .
         PAGE
.
. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
.        S U M F V   -   FLOATING POINT VECTOR SUMMATION
.
. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
SUMFV    BSS       0
         CPYXA     A7,XB               .SET-UP A-REG.
         CPYXX     X5,X8               .SAVE STORE INDEX
.
         ENTP      X6,0                .
         ENTP      X7,0                .
         ENTP      X8,0                .CLEAR SUMM REGISTERS
         ENTP      X9,0                .
         ENTP      XA,0                .
         ENTP      XB,0                .
.
         ENTP      X2,1                .FOR LENGTH TEST
         LX        X6,A7,0*8           .V(0)
         BRXEQ     X1,X2,SUMFV2#       .BRANCH IF L = 1
         ENTP      X2,2                .
         LX        X7,A7,1*8           .V(1)
         BRXEQ     X1,X2,SUMFV2#       .BRANCH IF L = 2
         ENTP      X2,3                .
         LX        X8,A7,2*8           .V(2)
         BRXEQ     X1,X2,SUMFV2#       .BRANCH IF L = 3
         ENTP      X2,4                .
         LX        X9,A7,3*8           .V(3)
         BRXEQ     X1,X2,SUMFV2#       .BRANCH IF L = 4
         ENTP      X2,5                .
         LX        XA,A7,4*8           .V(4)
         BRXEQ     X1,X2,SUMFV2#       .BRANCH IF L = 5
.
         LX        XB,A7,5*8           .V(5)
         LX        XC,A7,6*8           .V(6)
         LX        XD,A7,7*8           .V(7)
         LX        XE,A7,8*8           .V(8)
         LX        XF,A7,9*8           .V(9)
.
         ENTP      X3,10               .RUNNING INDEX
SUMFV1#  BSS       0
         INCX      X2,1                .
         ADDF      X6,XB               .R(0) = R(0) + V(K+0)
         LXI       XB,A7,X3,0*8        .V(K+5)
         BRXEQ     X1,X2,SUMFV2#
         INCX      X2,1                .
         ADDF      X7,XC               .R(1) = R(1) + V(K+1)
         LXI       XC,A7,X3,1*8        .V(K+6)
         BRXEQ     X1,X2,SUMFV2#       .
         INCX      X2,1                .
         ADDF      X8,XD               .R(2) = R(2) + V(K+2)
         LXI       XD,A7,X3,2*8        .V(K+7)
         BRXEQ     X1,X2,SUMFV2#       .
         INCX      X2,1                .
         ADDF      X9,XE               .R(3) = R(3) + V(K+3)
         LXI       XE,A7,X3,3*8        .V(K+8)
         BRXEQ     X1,X2,SUMFV2#       .
         INCX      X2,1                .
         ADDF      XA,XF               .R(4) = R(4) + V(K+4)
         LXI       XF,A7,X3,4*8        .V(K+9)
         BRXEQ     X1,X2,SUMFV2#       .
         INCX      X3,5                .BUMP RUNNING INDEX
         BRXEQ     X0,X0,SUMFV1#       .LOOP
.
SUMFV2#  BSS       0
         CPYXX     XF,X1               .L
         ENTP      XE,5                .
         DIVX      XF,XE               .I(L/5)
         CPYXX     XE,X1               .
         MULXQ     XF,XF,5             .I(L/5) * 5
         SUBX      XE,XF               .R(L/5)
         ENTP      X4,0                .CLEAR ACCUMULATOR
         SHFX      XE,XE,X0,1          .POSITION XE FOR BRREL
         ADDXQ     XE,XE,(SUMFV4#-SUMFV3#)/2   .BRANCH ADDRESS
SUMFV3#  BRREL     XE                  .
SUMFV4#  BSS       0
         BRXEQ     X0,X0,SUMFV5#       .ZERO
         BRXEQ     X0,X0,SUMFV6#       .ONE
         BRXEQ     X0,X0,SUMFV7#       .TWO
         BRXEQ     X0,X0,SUMFV8#       .THREE
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         BRXEQ     X0,X0,SUMFV9#       .PUNT
SUMFV5#  BSS       0
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         BRXEQ     X0,X0,SUMFV9#       .PUNT
SUMFV6#  BSS       0
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         BRXEQ     X0,X0,SUMFV9#       .PUNT
SUMFV7#  BSS       0
         ADDF      X4,X6               .R + V(0)
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         BRXEQ     X0,X0,SUMFV9#       .PUNT
SUMFV8#  BSS       0
         ADDF      X4,X7               .R + V(1)
         ADDF      X4,X8               .R + V(2)
         ADDF      X4,X9               .R + V(3)
         ADDF      X4,XA               .R + V(4)
         ADDF      X4,X6               .R + V(0)
SUMFV9#  BSS       0
         ENTE      X2,0E6(16)
         CPYSX     X2,X2               .READ USER MASK
         ENTE      X1,043(16)
         CPYSX     X1,X1               .READ UCR
         ANDX      X2,X1
         ENTE      X1,017F(16)         .CONDITIONS OF INTEREST
         ANDX      X2,X1               .SAVE
         ENTP      X1,4
         BRXEQ     X1,X2,SUMFV11#      .IF INDEFINITE ONLY
SUMFV10# BSS       0
         SXI       X4,A2,X5,17*8       .SAVE RESULT
SUMFV11# BSS       0
         BRXEQ     X0,X0,VTEXIT#       .PUNT
.
. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.
VTISE#   BSS       0
         HALT                          .CAUSE INS SPEC ERROR
.
VTEXIT#  BSS       0
         ENTL      X0,043(16)          .ADD(UCR)
         CPYSX     X1,X0               .READ UCR
         ENTE      X0,0EFFF(16)        .
         ANDX      X1,X0               .IGNORE PIT
         CPYXX     X2,X1               .
         ENTL      X0,0E6(16)          .ADD(UM)
         CPYSX     X0,X0               .READ UM
         ANDX      X2,X0               .CHECK FOR POTENTIAL TRAPS
         BRXEQ     X2,X0,VTEX50#       .BRANCH IF NONE
         ENTE      X2,0038(16)         .P+ INTERRUPTS
         ANDX      X2,X1               .
         BRXeq     X2,X0,VTEX55#       .BRANCH IF not P+
VTEX50#  BSS       0
         lx        x1,a2,0             .Increment P in SFSA.
         incx      x1,4
         sx        x1,a2,0
vtex55#  bss       0
         RETURN
VTRAPE#  BSS       0
VTRAPE#  ALIAS     PMA$VECTOR_SIMULATOR_END
         END
