/sys$common/syshlp/helplib.hlb MACRO, VAX MACRO Assembler, Vector Instructions, VMUL *Conan The Librarian (sorry for the slow response - running on an old VAX) |
Vector Floating Multiply Format: vector * vector: { VVMULF } { VVMULD } [/U[0|1]] Va, Vb, Vc { VVMULG } { } scalar * vector: { VSMULF } { VSMULD } [/U[0|1]] scalar, Vb, Vc { VSMULG } { } Architecture Format vector * vector: opcode cntrl.rw scalar * vector (F_floating): opcode cntrl.rw, mulr.rl scalar * vector (D_ and G_floating): opcode cntrl.rw, mulr.rq opcodes A4FD VVMULF Vector Vector Multiply F_floating A5FD VSMULF Vector Scalar Multiply F_floating A6FD VVMULD Vector Vector Multiply F_floating A7FD VSMULD Vector Scalar Multiply D_floating A2FD VVMULG Vector Vector Multiply G_floating A3FD VSMULG Vector Scalar Multiply G_floating vector_control_word 1 1 1 1 1 5 4 3 2 1 8 7 4 3 0 +-+-+-+-+-------+-------+-------+ |M|M|E| | Va | | | |O|T|X|0| or | Vb | Vc | |E|F|C| | 0 | | | +-+-+-+-+-------+-------+-------+ exceptions floating overflow floating reserved operand floating underflow operation FOR i <- 0 TO VLR-1 IF {{MOE EQL 0} OR {{MOE EQL 1} AND {VMR<i> EQL MTF}}} THEN BEGIN IF VVMULF THEN Vc[i]<31:0> <- Va[i]<31:0> * Vb[i]<31:0> IF VSMULF THEN Vc[i]<31:0> <- mulr * Vb[i]<31:0> IF VVMULD OR VVMULG THEN Vc[i] <- Va[i] * Vb[i] IF VSMULD OR VSMULG THEN Vc[i] <- mulr * Vb[i] END
|