Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

Half_002dPrecision.html 6.6KB

3 anos atrás
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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>Half-Precision (Using the GNU Compiler Collection (GCC))</title>
  21. <meta name="description" content="Half-Precision (Using the GNU Compiler Collection (GCC))">
  22. <meta name="keywords" content="Half-Precision (Using the GNU Compiler Collection (GCC))">
  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="C-Extensions.html#C-Extensions" rel="up" title="C Extensions">
  30. <link href="Decimal-Float.html#Decimal-Float" rel="next" title="Decimal Float">
  31. <link href="Floating-Types.html#Floating-Types" rel="prev" title="Floating Types">
  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="Half_002dPrecision"></a>
  62. <div class="header">
  63. <p>
  64. Next: <a href="Decimal-Float.html#Decimal-Float" accesskey="n" rel="next">Decimal Float</a>, Previous: <a href="Floating-Types.html#Floating-Types" accesskey="p" rel="prev">Floating Types</a>, Up: <a href="C-Extensions.html#C-Extensions" accesskey="u" rel="up">C Extensions</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="Half_002dPrecision-Floating-Point"></a>
  68. <h3 class="section">6.13 Half-Precision Floating Point</h3>
  69. <a name="index-half_002dprecision-floating-point"></a>
  70. <a name="index-_005f_005ffp16-data-type"></a>
  71. <p>On ARM and AArch64 targets, GCC supports half-precision (16-bit) floating
  72. point via the <code>__fp16</code> type defined in the ARM C Language Extensions.
  73. On ARM systems, you must enable this type explicitly with the
  74. <samp>-mfp16-format</samp> command-line option in order to use it.
  75. </p>
  76. <p>ARM targets support two incompatible representations for half-precision
  77. floating-point values. You must choose one of the representations and
  78. use it consistently in your program.
  79. </p>
  80. <p>Specifying <samp>-mfp16-format=ieee</samp> selects the IEEE 754-2008 format.
  81. This format can represent normalized values in the range of <em>2^{-14}</em> to 65504.
  82. There are 11 bits of significand precision, approximately 3
  83. decimal digits.
  84. </p>
  85. <p>Specifying <samp>-mfp16-format=alternative</samp> selects the ARM
  86. alternative format. This representation is similar to the IEEE
  87. format, but does not support infinities or NaNs. Instead, the range
  88. of exponents is extended, so that this format can represent normalized
  89. values in the range of <em>2^{-14}</em> to 131008.
  90. </p>
  91. <p>The GCC port for AArch64 only supports the IEEE 754-2008 format, and does
  92. not require use of the <samp>-mfp16-format</samp> command-line option.
  93. </p>
  94. <p>The <code>__fp16</code> type may only be used as an argument to intrinsics defined
  95. in <code>&lt;arm_fp16.h&gt;</code>, or as a storage format. For purposes of
  96. arithmetic and other operations, <code>__fp16</code> values in C or C++
  97. expressions are automatically promoted to <code>float</code>.
  98. </p>
  99. <p>The ARM target provides hardware support for conversions between
  100. <code>__fp16</code> and <code>float</code> values
  101. as an extension to VFP and NEON (Advanced SIMD), and from ARMv8-A provides
  102. hardware support for conversions between <code>__fp16</code> and <code>double</code>
  103. values. GCC generates code using these hardware instructions if you
  104. compile with options to select an FPU that provides them;
  105. for example, <samp>-mfpu=neon-fp16 -mfloat-abi=softfp</samp>,
  106. in addition to the <samp>-mfp16-format</samp> option to select
  107. a half-precision format.
  108. </p>
  109. <p>Language-level support for the <code>__fp16</code> data type is
  110. independent of whether GCC generates code using hardware floating-point
  111. instructions. In cases where hardware support is not specified, GCC
  112. implements conversions between <code>__fp16</code> and other types as library
  113. calls.
  114. </p>
  115. <p>It is recommended that portable code use the <code>_Float16</code> type defined
  116. by ISO/IEC TS 18661-3:2015. See <a href="Floating-Types.html#Floating-Types">Floating Types</a>.
  117. </p>
  118. <hr>
  119. <div class="header">
  120. <p>
  121. Next: <a href="Decimal-Float.html#Decimal-Float" accesskey="n" rel="next">Decimal Float</a>, Previous: <a href="Floating-Types.html#Floating-Types" accesskey="p" rel="prev">Floating Types</a>, Up: <a href="C-Extensions.html#C-Extensions" accesskey="u" rel="up">C Extensions</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>
  122. </div>
  123. </body>
  124. </html>