VMS Help
MACRO, VAX MACRO Assembler, Vector Instructions, VSL

 *Conan The Librarian (sorry for the slow response - running on an old VAX)

      Vector Shift Logical

    Format:

      vector shift count:

       { VVSRLL }
       { VVSLLL }    [/V[0|1]]    Va, Vb, Vc
       {        }

      scalar shift count:

       { VSSRLL }
       { VSSLLL }    [/V[0|1]]    cnt, Vb, Vc
       {        }

    Architecture

    Format
    vector shift count:   opcode   cntrl.rw

    scalar shift count:   opcode   cntrl.rw, cnt.rl
    opcodes

    E0FD    VVSRLL    Vector Vector Shift Right Logical Longword

    E4FD    VVSLLL    Vector Vector Shift Left Logical Longword

    E1FD    VSSRLL    Vector Scalar Shift Right Logical Longword

    E5FD    VSSLLL    Vector Scalar Shift Left Logical Longword

    vector_control_word

             1 1 1 1 1
             5 4 3 2 1     8 7     4 3     0
            +-+-+-+-+-------+-------+-------+
            |M|M| | |  Va   |       |       |
            |O|T|0|0|  or   |  Vb   |  Vc   |
            |E|F| | |  0    |       |       |
            +-+-+-+-+-------+-------+-------+
    exceptions

       None.

    operation
      FOR i <- 0 TO VLR-1
        IF {{MOE EQL 0} OR {{MOE EQL 1} AND {VMR<i> EQL MTF}}} THEN
          BEGIN
            IF VVSRLL THEN
              Vc[i]<31:0> <- RIGHT_SHIFT(Vb[i]<31:0>, Va[i]<4:0>)
            IF VVSLLL THEN
              Vc[i]<31:0> <- LEFT_SHIFT(Vb[i]<31:0>,  Va[i]<4:0>)

            IF VSSRLL THEN
              Vc[i]<31:0> <- RIGHT_SHIFT(Vb[i]<31:0>, cnt<4:0>)
            IF VSSLLL THEN
              Vc[i]<31:0> <- LEFT_SHIFT(Vb[i]<31:0>,  cnt<4:0>)
          END
  Close     HLB-list     TLB-list     Help  

[legal] [privacy] [GNU] [policy] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.