Dale, that's a great link-thanks!!!

 

For anyone who might be interested, here's my wee program so far, with some
whitespace removed for compactness. I've written the zPDT owner to ask if
vector can be enabled-not that I think it'll Just Work then, but I'll be
farther along. 

 

The idea is that the guts of the DOIT subroutine will ultimately be inline
assembler in a C module.

 

Humorous, at least to me, at least at this point in this odyssey: Since this
is just an example, I'm just using two input parameters as my 64-bit values.
My command invocation is thus typically:

VGFMG    ASSEMBLE A1

which those of you who use CMS will recognize as the LISTFILE/FLIST output
showing the source file. Easy to copy/paste while I'm working with it!

 

VGFMG    START X'E000'                 CMS transient area

         USING *,R15                   Temporary base

         STM   R0,R15,SAVEAREA         Save registers

         DROP  R15                     Done with temporary base

         LR    R12,R15                 Get real base

         USING VGFMG,R12               And get addressable

* We need two operands, which we'll treat as 64-bit integers

         CLI   8(R1),X'FF'             Got first operand??

         BE    MISSING                 No, error

         MVC   PARM1(8),8(R1)          Save first operand

         CLI   16(R1),X'FF'            Got second operand??

         BE    MISSING                 No, error

         MVC   PARM2(8),16(R1)         Save second operand

         BAS   R14,DOIT                Call subroutine to do VGFMG

         XR    R15,R15                 If we get back, it worked

EXIT     DS    0H                      Restore and exit

         LM    R0,R14,SAVEAREA         Restore registers

         BR    R14                     And return to forever

MISSING  DS    0H                      Error, missing parameter

         WRTERM 'Missing parameter--need two'  Whinge

         LA    R15,24                  Set error RC

         B     EXIT                    And go restore and exit

* The subroutine that does the VGFMG

DOIT     DS    0H

         VL    1,WORK1,4               Set 64-bit output area

         VL    2,PARM1,4               Load 64-bit value #1

         VL    3,PARM2                 Load 64-bit value #2

         VGFMG 1,2,3                   VECTOR GALOIS FIELD MULTIPLY SUM

         BR    R14                     And return to caller

         DS    0L                      Quadword-aligned for PoE

PARM1    DS    D                       Slot for first operand

PARM2    DS    D                       Slot for second operand

WORK1    DC    8D'0'                   Work area (larger than needed)

WORK2    DC    8D'0'                   Work area (larger than needed)

SAVEAREA DS    16F                     Savearea (doh)

         REGEQU ,

         END   ,


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to