gccint: Vectors

1 
1 11.6.4 Vectors
1 --------------
1 
1 'VEC_DUPLICATE_EXPR'
1      This node has a single operand and represents a vector in which
1      every element is equal to that operand.
1 
1 'VEC_SERIES_EXPR'
1      This node represents a vector formed from a scalar base and step,
1      given as the first and second operands respectively.  Element I of
1      the result is equal to 'BASE + I*STEP'.
1 
1      This node is restricted to integral types, in order to avoid
1      specifying the rounding behavior for floating-point types.
1 
1 'VEC_LSHIFT_EXPR'
1 'VEC_RSHIFT_EXPR'
1      These nodes represent whole vector left and right shifts,
1      respectively.  The first operand is the vector to shift; it will
1      always be of vector type.  The second operand is an expression for
1      the number of bits by which to shift.  Note that the result is
1      undefined if the second operand is larger than or equal to the
1      first operand's type size.
1 
1 'VEC_WIDEN_MULT_HI_EXPR'
1 'VEC_WIDEN_MULT_LO_EXPR'
1      These nodes represent widening vector multiplication of the high
1      and low parts of the two input vectors, respectively.  Their
1      operands are vectors that contain the same number of elements ('N')
1      of the same integral type.  The result is a vector that contains
1      half as many elements, of an integral type whose size is twice as
1      wide.  In the case of 'VEC_WIDEN_MULT_HI_EXPR' the high 'N/2'
1      elements of the two vector are multiplied to produce the vector of
1      'N/2' products.  In the case of 'VEC_WIDEN_MULT_LO_EXPR' the low
1      'N/2' elements of the two vector are multiplied to produce the
1      vector of 'N/2' products.
1 
1 'VEC_UNPACK_HI_EXPR'
1 'VEC_UNPACK_LO_EXPR'
1      These nodes represent unpacking of the high and low parts of the
1      input vector, respectively.  The single operand is a vector that
1      contains 'N' elements of the same integral or floating point type.
1      The result is a vector that contains half as many elements, of an
1      integral or floating point type whose size is twice as wide.  In
1      the case of 'VEC_UNPACK_HI_EXPR' the high 'N/2' elements of the
1      vector are extracted and widened (promoted).  In the case of
1      'VEC_UNPACK_LO_EXPR' the low 'N/2' elements of the vector are
1      extracted and widened (promoted).
1 
1 'VEC_UNPACK_FLOAT_HI_EXPR'
1 'VEC_UNPACK_FLOAT_LO_EXPR'
1      These nodes represent unpacking of the high and low parts of the
1      input vector, where the values are converted from fixed point to
1      floating point.  The single operand is a vector that contains 'N'
1      elements of the same integral type.  The result is a vector that
1      contains half as many elements of a floating point type whose size
1      is twice as wide.  In the case of 'VEC_UNPACK_HI_EXPR' the high
1      'N/2' elements of the vector are extracted, converted and widened.
1      In the case of 'VEC_UNPACK_LO_EXPR' the low 'N/2' elements of the
1      vector are extracted, converted and widened.
1 
1 'VEC_PACK_TRUNC_EXPR'
1      This node represents packing of truncated elements of the two input
1      vectors into the output vector.  Input operands are vectors that
1      contain the same number of elements of the same integral or
1      floating point type.  The result is a vector that contains twice as
1      many elements of an integral or floating point type whose size is
1      half as wide.  The elements of the two vectors are demoted and
1      merged (concatenated) to form the output vector.
1 
1 'VEC_PACK_SAT_EXPR'
1      This node represents packing of elements of the two input vectors
1      into the output vector using saturation.  Input operands are
1      vectors that contain the same number of elements of the same
1      integral type.  The result is a vector that contains twice as many
1      elements of an integral type whose size is half as wide.  The
1      elements of the two vectors are demoted and merged (concatenated)
1      to form the output vector.
1 
1 'VEC_PACK_FIX_TRUNC_EXPR'
1      This node represents packing of elements of the two input vectors
1      into the output vector, where the values are converted from
1      floating point to fixed point.  Input operands are vectors that
1      contain the same number of elements of a floating point type.  The
1      result is a vector that contains twice as many elements of an
1      integral type whose size is half as wide.  The elements of the two
1      vectors are merged (concatenated) to form the output vector.
1 
1 'VEC_COND_EXPR'
1      These nodes represent '?:' expressions.  The three operands must be
1      vectors of the same size and number of elements.  The second and
1      third operands must have the same type as the entire expression.
1      The first operand is of signed integral vector type.  If an element
1      of the first operand evaluates to a zero value, the corresponding
1      element of the result is taken from the third operand.  If it
1      evaluates to a minus one value, it is taken from the second
1      operand.  It should never evaluate to any other value currently,
1      but optimizations should not rely on that property.  In contrast
1      with a 'COND_EXPR', all operands are always evaluated.
1 
1 'SAD_EXPR'
1      This node represents the Sum of Absolute Differences operation.
1      The three operands must be vectors of integral types.  The first
1      and second operand must have the same type.  The size of the vector
1      element of the third operand must be at lease twice of the size of
1      the vector element of the first and second one.  The SAD is
1      calculated between the first and second operands, added to the
1      third operand, and returned.
1