gccint: Vector Operations
1
1 14.12 Vector Operations
1 =======================
1
1 All normal RTL expressions can be used with vector modes; they are
1 interpreted as operating on each part of the vector independently.
1 Additionally, there are a few new expressions to describe specific
1 vector operations.
1
1 '(vec_merge:M VEC1 VEC2 ITEMS)'
1 This describes a merge operation between two vectors. The result
1 is a vector of mode M; its elements are selected from either VEC1
1 or VEC2. Which elements are selected is described by ITEMS, which
1 is a bit mask represented by a 'const_int'; a zero bit indicates
1 the corresponding element in the result vector is taken from VEC2
1 while a set bit indicates it is taken from VEC1.
1
1 '(vec_select:M VEC1 SELECTION)'
1 This describes an operation that selects parts of a vector. VEC1
1 is the source vector, and SELECTION is a 'parallel' that contains a
1 'const_int' for each of the subparts of the result vector, giving
1 the number of the source subpart that should be stored into it.
1 The result mode M is either the submode for a single element of
1 VEC1 (if only one subpart is selected), or another vector mode with
1 that element submode (if multiple subparts are selected).
1
1 '(vec_concat:M X1 X2)'
1 Describes a vector concat operation. The result is a concatenation
1 of the vectors or scalars X1 and X2; its length is the sum of the
1 lengths of the two inputs.
1
1 '(vec_duplicate:M X)'
1 This operation converts a scalar into a vector or a small vector
1 into a larger one by duplicating the input values. The output
1 vector mode must have the same submodes as the input vector mode or
1 the scalar modes, and the number of output parts must be an integer
1 multiple of the number of input parts.
1
1 '(vec_series:M BASE STEP)'
1 This operation creates a vector in which element I is equal to
1 'BASE + I*STEP'. M must be a vector integer mode.
1