xxeval

VSX Vector Evaluation

xxeval XT, XA, XB, XC, IMM

Performs an arbitrary 3-input boolean logic function (LUT3) on vectors. The 8-bit immediate 'IMM' defines the truth table.

Details

The xxeval instruction evaluates a vector by combining the bits from three source vectors (XA, XB, XC) using the immediate value IMM to determine which combination of bits to set in the target vector XT.

Pseudocode Operation

if MSR.VSX=0 then VSX_Unavailable()
src1 ←VSR[32xAX+A]
src2 ←VSR[32xBX+B]
src3 ←VSR[32xCX+C]
result ←
    (¬src1&¬src2&¬src3 & qword_bit_splat(IMM.bit[0])) |
     (¬src1&¬src2& src3 & qword_bit_splat(IMM.bit[1])) |
     (¬src1& src2&¬src3 & qword_bit_splat(IMM.bit[2])) |
     (¬src1& src2& src3 & qword_bit_splat(IMM.bit[3])) |
     ( src1&¬src2&¬src3 & qword_bit_splat(IMM.bit[4])) |
     ( src1&¬src2& src3 & qword_bit_splat(IMM.bit[5])) |
     ( src1& src2&¬src3 & qword_bit_splat(IMM.bit[6])) |
     ( src1& src2& src3 & qword_bit_splat(IMM.bit[7]))
VSR[32xTX+T] ←result

Programming Note

The xxeval instruction is used to perform complex logical operations on vector registers.

Example

xxeval 0, 1, 2, 3, 0x96

Encoding

Binary Layout
1
0
1
6
0
8
/
9
60
32
XT
38
XA
43
XB
48
XC
53
IMM
56
 
Format 8RR:XX4-form
Opcode 0x06000000
Extension VSX
Registers Altered MSR

Operands

  • XT
    Target
  • XA
    Source A
  • XB
    Source B
  • XC
    Source C
  • IMM
    Truth Table (8-bits)
  • RT
    Target Vector Register
  • RA
    Source Vector Register A
  • RB
    Source Vector Register B
  • RC
    Source Vector Register C