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
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