// 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 Conditional logic package spec // Masked returns a vector with elements from x where mask is true, and zero // elsewhere. // // z[i] = if mask[i] { x[i] } else { 0 } // //specgen:require maskN=xN func Masked[E Elt, W Width, mE MaskElt](x Vec[E, W], mask Vec[mE, W]) (z Vec[E, W]) { z = makeVec[E, W]() for i, xi := range x { if mask[i] != 0 { z[i] = xi } } return z } // IfElse returns a vector with elements from x where mask is true, and y where // mask is false. // // z[i] = if mask[i] { x[i] } else { y[i] } // //specgen:require maskN=xN func IfElse[E Elt, W Width, mE MaskElt](x Vec[E, W], mask Vec[mE, W], y Vec[E, W]) (z Vec[E, W]) { z = makeVec[E, W]() for i, xi := range x { if mask[i] != 0 { z[i] = xi } else { z[i] = y[i] } } return z }