You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
6.5KB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation; with the
  7. Invariant Sections being "Funding Free Software", the Front-Cover
  8. Texts being (a) (see below), and with the Back-Cover Texts being (b)
  9. (see below). A copy of the license is included in the section entitled
  10. "GNU Free Documentation License".
  11. (a) The FSF's Front-Cover Text is:
  12. A GNU Manual
  13. (b) The FSF's Back-Cover Text is:
  14. You have freedom to copy and modify this GNU Manual, like GNU
  15. software. Copies published by the Free Software Foundation raise
  16. funds for GNU development. -->
  17. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <title>Vector Operations (GNU Compiler Collection (GCC) Internals)</title>
  21. <meta name="description" content="Vector Operations (GNU Compiler Collection (GCC) Internals)">
  22. <meta name="keywords" content="Vector Operations (GNU Compiler Collection (GCC) Internals)">
  23. <meta name="resource-type" content="document">
  24. <meta name="distribution" content="global">
  25. <meta name="Generator" content="makeinfo">
  26. <link href="index.html#Top" rel="start" title="Top">
  27. <link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
  28. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  29. <link href="RTL.html#RTL" rel="up" title="RTL">
  30. <link href="Conversions.html#Conversions" rel="next" title="Conversions">
  31. <link href="Bit_002dFields.html#Bit_002dFields" rel="prev" title="Bit-Fields">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.indentedblock {margin-right: 0em}
  36. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  37. blockquote.smallquotation {font-size: smaller}
  38. div.display {margin-left: 3.2em}
  39. div.example {margin-left: 3.2em}
  40. div.lisp {margin-left: 3.2em}
  41. div.smalldisplay {margin-left: 3.2em}
  42. div.smallexample {margin-left: 3.2em}
  43. div.smalllisp {margin-left: 3.2em}
  44. kbd {font-style: oblique}
  45. pre.display {font-family: inherit}
  46. pre.format {font-family: inherit}
  47. pre.menu-comment {font-family: serif}
  48. pre.menu-preformatted {font-family: serif}
  49. pre.smalldisplay {font-family: inherit; font-size: smaller}
  50. pre.smallexample {font-size: smaller}
  51. pre.smallformat {font-family: inherit; font-size: smaller}
  52. pre.smalllisp {font-size: smaller}
  53. span.nolinebreak {white-space: nowrap}
  54. span.roman {font-family: initial; font-weight: normal}
  55. span.sansserif {font-family: sans-serif; font-weight: normal}
  56. ul.no-bullet {list-style: none}
  57. -->
  58. </style>
  59. </head>
  60. <body lang="en">
  61. <a name="Vector-Operations"></a>
  62. <div class="header">
  63. <p>
  64. 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> &nbsp; [<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>
  65. </div>
  66. <hr>
  67. <a name="Vector-Operations-1"></a>
  68. <h3 class="section">14.12 Vector Operations</h3>
  69. <a name="index-vector-operations"></a>
  70. <p>All normal RTL expressions can be used with vector modes; they are
  71. interpreted as operating on each part of the vector independently.
  72. Additionally, there are a few new expressions to describe specific vector
  73. operations.
  74. </p>
  75. <dl compact="compact">
  76. <dd><a name="index-vec_005fmerge"></a>
  77. </dd>
  78. <dt><code>(vec_merge:<var>m</var> <var>vec1</var> <var>vec2</var> <var>items</var>)</code></dt>
  79. <dd><p>This describes a merge operation between two vectors. The result is a vector
  80. of mode <var>m</var>; its elements are selected from either <var>vec1</var> or
  81. <var>vec2</var>. Which elements are selected is described by <var>items</var>, which
  82. is a bit mask represented by a <code>const_int</code>; a zero bit indicates the
  83. corresponding element in the result vector is taken from <var>vec2</var> while
  84. a set bit indicates it is taken from <var>vec1</var>.
  85. </p>
  86. <a name="index-vec_005fselect"></a>
  87. </dd>
  88. <dt><code>(vec_select:<var>m</var> <var>vec1</var> <var>selection</var>)</code></dt>
  89. <dd><p>This describes an operation that selects parts of a vector. <var>vec1</var> is
  90. the source vector, and <var>selection</var> is a <code>parallel</code> that contains a
  91. <code>const_int</code> (or another expression, if the selection can be made at
  92. runtime) for each of the subparts of the result vector, giving the number of
  93. the source subpart that should be stored into it. The result mode <var>m</var> is
  94. either the submode for a single element of <var>vec1</var> (if only one subpart is
  95. selected), or another vector mode with that element submode (if multiple
  96. subparts are selected).
  97. </p>
  98. <a name="index-vec_005fconcat"></a>
  99. </dd>
  100. <dt><code>(vec_concat:<var>m</var> <var>x1</var> <var>x2</var>)</code></dt>
  101. <dd><p>Describes a vector concat operation. The result is a concatenation of the
  102. vectors or scalars <var>x1</var> and <var>x2</var>; its length is the sum of the
  103. lengths of the two inputs.
  104. </p>
  105. <a name="index-vec_005fduplicate"></a>
  106. </dd>
  107. <dt><code>(vec_duplicate:<var>m</var> <var>x</var>)</code></dt>
  108. <dd><p>This operation converts a scalar into a vector or a small vector into a
  109. larger one by duplicating the input values. The output vector mode must have
  110. the same submodes as the input vector mode or the scalar modes, and the
  111. number of output parts must be an integer multiple of the number of input
  112. parts.
  113. </p>
  114. <a name="index-vec_005fseries"></a>
  115. </dd>
  116. <dt><code>(vec_series:<var>m</var> <var>base</var> <var>step</var>)</code></dt>
  117. <dd><p>This operation creates a vector in which element <var>i</var> is equal to
  118. &lsquo;<samp><var>base</var> + <var>i</var>*<var>step</var></samp>&rsquo;. <var>m</var> must be a vector integer mode.
  119. </p></dd>
  120. </dl>
  121. <hr>
  122. <div class="header">
  123. <p>
  124. 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> &nbsp; [<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>
  125. </div>
  126. </body>
  127. </html>