Under 5.9 Expression, the specs state:
"The equality operators equal (==), and not equal (!=) operate on all types except opaque types, aggregates that contain opaque types, subroutine uniforms, and aggregates that contain subroutine uniforms. ... For vectors, matrices, structures, and arrays, all components, members, or elements of one operand must equal the corresponding components, members, or elements in the other operand for the operands to be considered equal."
Under 8.7. Vector Relational Functions, it states:
"Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars"
Under 5.9 Expression, the specs state:
"The equality operators equal (==), and not equal (!=) operate on all types except opaque types, aggregates that contain opaque types, subroutine uniforms, and aggregates that contain subroutine uniforms. ... For vectors, matrices, structures, and arrays, all components, members, or elements of one operand must equal the corresponding components, members, or elements in the other operand for the operands to be considered equal."
Under 8.7. Vector Relational Functions, it states:
"Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars"