vmulosb

Vector Multiply Odd Signed Byte

vmulosb vD, vA, vB

Multiplies odd signed bytes to halfwords.

Details

Multiplies the odd-indexed signed bytes from vA and vB, producing signed halfword results in vD. Operates on bytes at indices 1, 3, 5, 7, 9, 11, 13, 15, generating four halfword products. No condition flags are affected.

Pseudocode Operation

vD[0:15] ← (vA[8:15] × vB[8:15]) as signed
vD[16:31] ← (vA[24:31] × vB[24:31]) as signed
vD[32:47] ← (vA[40:47] × vB[40:47]) as signed
vD[48:63] ← (vA[56:63] × vB[56:63]) as signed
vD[64:79] ← (vA[72:79] × vB[72:79]) as signed
vD[80:95] ← (vA[88:95] × vB[88:95]) as signed
vD[96:111] ← (vA[104:111] × vB[104:111]) as signed
vD[112:127] ← (vA[120:127] × vB[120:127]) as signed

Programming Note

This instruction is useful for performing element-wise multiplication of odd-numbered bytes from two vectors, storing the results as signed halfwords. Ensure that the Vector Facility (MSR.VEC) is enabled; otherwise, a Vector_Unavailable exception will be raised. The operation respects byte ordering, so developers must ensure proper alignment and data format to avoid unexpected results.

Example

vmulosb vd, va, vb

Encoding

Binary Layout
4
0
vD
6
vA
11
vB
16
264
21
 
Format VX-form
Opcode 0x10000108
Extension VMX (AltiVec)
Registers Altered MSR

Operands

  • vD
    Target
  • vA
    Src A
  • vB
    Src B