<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <!-- Copyright (C) 1988-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being "Funding Free Software", the Front-Cover Texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled "GNU Free Documentation License". (a) The FSF's Front-Cover Text is: A GNU Manual (b) The FSF's Back-Cover Text is: You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development. --> <!-- Created by GNU Texinfo 6.4, http://www.gnu.org/software/texinfo/ --> <head> <title>Vector Operations (GNU Compiler Collection (GCC) Internals)</title> <meta name="description" content="Vector Operations (GNU Compiler Collection (GCC) Internals)"> <meta name="keywords" content="Vector Operations (GNU Compiler Collection (GCC) Internals)"> <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="Generator" content="makeinfo"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="index.html#Top" rel="start" title="Top"> <link href="Option-Index.html#Option-Index" rel="index" title="Option Index"> <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> <link href="RTL.html#RTL" rel="up" title="RTL"> <link href="Conversions.html#Conversions" rel="next" title="Conversions"> <link href="Bit_002dFields.html#Bit_002dFields" rel="prev" title="Bit-Fields"> <style type="text/css"> <!-- a.summary-letter {text-decoration: none} blockquote.indentedblock {margin-right: 0em} blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} blockquote.smallquotation {font-size: smaller} div.display {margin-left: 3.2em} div.example {margin-left: 3.2em} div.lisp {margin-left: 3.2em} div.smalldisplay {margin-left: 3.2em} div.smallexample {margin-left: 3.2em} div.smalllisp {margin-left: 3.2em} kbd {font-style: oblique} pre.display {font-family: inherit} pre.format {font-family: inherit} pre.menu-comment {font-family: serif} pre.menu-preformatted {font-family: serif} pre.smalldisplay {font-family: inherit; font-size: smaller} pre.smallexample {font-size: smaller} pre.smallformat {font-family: inherit; font-size: smaller} pre.smalllisp {font-size: smaller} span.nolinebreak {white-space: nowrap} span.roman {font-family: initial; font-weight: normal} span.sansserif {font-family: sans-serif; font-weight: normal} ul.no-bullet {list-style: none} --> </style> </head> <body lang="en"> <a name="Vector-Operations"></a> <div class="header"> <p> Next: <a href="Conversions.html#Conversions" accesskey="n" rel="next">Conversions</a>, Previous: <a href="Bit_002dFields.html#Bit_002dFields" accesskey="p" rel="prev">Bit-Fields</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p> </div> <hr> <a name="Vector-Operations-1"></a> <h3 class="section">14.12 Vector Operations</h3> <a name="index-vector-operations"></a> <p>All normal RTL expressions can be used with vector modes; they are interpreted as operating on each part of the vector independently. Additionally, there are a few new expressions to describe specific vector operations. </p> <dl compact="compact"> <dd><a name="index-vec_005fmerge"></a> </dd> <dt><code>(vec_merge:<var>m</var> <var>vec1</var> <var>vec2</var> <var>items</var>)</code></dt> <dd><p>This describes a merge operation between two vectors. The result is a vector of mode <var>m</var>; its elements are selected from either <var>vec1</var> or <var>vec2</var>. Which elements are selected is described by <var>items</var>, which is a bit mask represented by a <code>const_int</code>; a zero bit indicates the corresponding element in the result vector is taken from <var>vec2</var> while a set bit indicates it is taken from <var>vec1</var>. </p> <a name="index-vec_005fselect"></a> </dd> <dt><code>(vec_select:<var>m</var> <var>vec1</var> <var>selection</var>)</code></dt> <dd><p>This describes an operation that selects parts of a vector. <var>vec1</var> is the source vector, and <var>selection</var> is a <code>parallel</code> that contains a <code>const_int</code> for each of the subparts of the result vector, giving the number of the source subpart that should be stored into it. The result mode <var>m</var> is either the submode for a single element of <var>vec1</var> (if only one subpart is selected), or another vector mode with that element submode (if multiple subparts are selected). </p> <a name="index-vec_005fconcat"></a> </dd> <dt><code>(vec_concat:<var>m</var> <var>x1</var> <var>x2</var>)</code></dt> <dd><p>Describes a vector concat operation. The result is a concatenation of the vectors or scalars <var>x1</var> and <var>x2</var>; its length is the sum of the lengths of the two inputs. </p> <a name="index-vec_005fduplicate"></a> </dd> <dt><code>(vec_duplicate:<var>m</var> <var>x</var>)</code></dt> <dd><p>This operation converts a scalar into a vector or a small vector into a larger one by duplicating the input values. The output vector mode must have the same submodes as the input vector mode or the scalar modes, and the number of output parts must be an integer multiple of the number of input parts. </p> <a name="index-vec_005fseries"></a> </dd> <dt><code>(vec_series:<var>m</var> <var>base</var> <var>step</var>)</code></dt> <dd><p>This operation creates a vector in which element <var>i</var> is equal to ‘<samp><var>base</var> + <var>i</var>*<var>step</var></samp>’. <var>m</var> must be a vector integer mode. </p></dd> </dl> <hr> <div class="header"> <p> Next: <a href="Conversions.html#Conversions" accesskey="n" rel="next">Conversions</a>, Previous: <a href="Bit_002dFields.html#Bit_002dFields" accesskey="p" rel="prev">Bit-Fields</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p> </div> </body> </html>