Ryan Brown
Ryan Brown

Reputation: 1095

x64 logical AND of packed 32 bit floating points

This is the description:

Performs a bitwise logical AND of the four or eight packed single-precision floating-point values from the first source operand and the second source operand, and stores the result in the destination operand.

Opcode:
0F 54 /r ANDPS xmm1, xmm2/m128

Description:
Bitwise logical AND of xmm2/m128 and xmm1.

The Opcode: says xmm1 first and the Description: says xmm2/m128 first. So which is it?

Upvotes: 1

Views: 116

Answers (1)

Jester
Jester

Reputation: 58782

Not sure what's unclear. The description you quoted applies to the 3 operand form, you need to consider this paragraph for the 2 operand version:

128-bit Legacy SSE version: The second source can be an XMM register or an 128-bit memory location. The destination is not distinct from the first source XMM register and the upper bits (VLMAX-1:128) of the corresponding YMM register destination are unmodified.

As such, the instruction does: xmm1 = xmm1 & xmm2/m128. Due to the fact that bitwise AND is commutative, that's the same as xmm1 = xmm2/m128 & xmm1. The important thing is that xmm1 is the destination.

Upvotes: 4

Related Questions