1. A method for propagating values to a result vector, comprising: receiving a first input vector and a control vector, and optionally receiving a predicate vector, wherein each vector includes N elements; and generating the result vector, wherein generating the result vector involves, if the predicate vector is received, for each element in the result vector at and to the right of a key element position for which a corresponding element in the predicate vector contains a non-zero value, otherwise, for each element in the result vector at and to the right of the key element position, if a corresponding element in the control vector contains a non-zero value, setting the element in the result vector equal to a value in a corresponding element in the first input vector; and otherwise, if the corresponding element in the control vector contains a zero, setting the element in the result vector equal to a value contained in an element at an element position in the first input vector which corresponds to a rightmost relevant element to the left of the corresponding element in the control vector.