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