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