// Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //specgen:category Logical package spec // And returns the bitwise AND of x and y. // // z[i] = x[i] & y[i] // //specgen:commutative func And[E Ints | Uints | MaskElt, W Width](x, y Vec[E, W]) (z Vec[E, W]) { return map2[E, W, E, W](x, y, func(x, y E) E { return x & y }) } // AndNot returns the bitwise AND NOT of x and y. // // z[i] = x[i] &^ y[i] func AndNot[E Ints | Uints | MaskElt, W Width](x, y Vec[E, W]) (z Vec[E, W]) { return map2[E, W, E, W](x, y, func(x, y E) E { return x &^ y }) } // Or returns the bitwise OR of x and y. // // z[i] = x[i] | y[i] // //specgen:commutative func Or[E Ints | Uints | MaskElt, W Width](x, y Vec[E, W]) (z Vec[E, W]) { return map2[E, W, E, W](x, y, func(x, y E) E { return x | y }) } // Xor returns the bitwise XOR of x and y. // // z[i] = x[i] ^ y[i] // //specgen:commutative func Xor[E Ints | Uints | MaskElt, W Width](x, y Vec[E, W]) (z Vec[E, W]) { return map2[E, W, E, W](x, y, func(x, y E) E { return x ^ y }) } // Not returns the bitwise negation of x. // // z[i] = ^x[i] func Not[E Ints | Uints | MaskElt, W Width](x Vec[E, W]) (z Vec[E, W]) { return map1[E, W, E, W](x, func(x E) E { return ^x }) }