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
|