summaryrefslogtreecommitdiff
path: root/devdocs/gcc~13/fixed-point.html
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2024-04-07 13:41:34 -0500
committerCraig Jennings <c@cjennings.net>2024-04-07 13:41:34 -0500
commit754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 (patch)
treef1190704f78f04a2b0b4c977d20fe96a828377f1 /devdocs/gcc~13/fixed-point.html
new repository
Diffstat (limited to 'devdocs/gcc~13/fixed-point.html')
-rw-r--r--devdocs/gcc~13/fixed-point.html33
1 files changed, 33 insertions, 0 deletions
diff --git a/devdocs/gcc~13/fixed-point.html b/devdocs/gcc~13/fixed-point.html
new file mode 100644
index 00000000..705f9150
--- /dev/null
+++ b/devdocs/gcc~13/fixed-point.html
@@ -0,0 +1,33 @@
+<div class="section-level-extent" id="Fixed-Point"> <div class="nav-panel"> <p> Next: <a href="named-address-spaces" accesskey="n" rel="next">Named Address Spaces</a>, Previous: <a href="hex-floats" accesskey="p" rel="prev">Hex Floats</a>, Up: <a href="c-extensions" accesskey="u" rel="up">Extensions to the C Language Family</a> [<a href="index#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="indices" title="Index" rel="index">Index</a>]</p> </div> <h1 class="section" id="Fixed-Point-Types"><span>6.16 Fixed-Point Types<a class="copiable-link" href="#Fixed-Point-Types"> ¶</a></span></h1> <p>As an extension, GNU C supports fixed-point types as defined in the N1169 draft of ISO/IEC DTR 18037. Support for fixed-point types in GCC will evolve as the draft technical report changes. Calling conventions for any target might also change. Not all targets support fixed-point types. </p> <p>The fixed-point types are <code class="code">short _Fract</code>, <code class="code">_Fract</code>, <code class="code">long _Fract</code>, <code class="code">long long _Fract</code>, <code class="code">unsigned short _Fract</code>, <code class="code">unsigned _Fract</code>, <code class="code">unsigned long _Fract</code>, <code class="code">unsigned long long _Fract</code>, <code class="code">_Sat short _Fract</code>, <code class="code">_Sat _Fract</code>, <code class="code">_Sat long _Fract</code>, <code class="code">_Sat long long _Fract</code>, <code class="code">_Sat unsigned short _Fract</code>, <code class="code">_Sat unsigned _Fract</code>, <code class="code">_Sat unsigned long _Fract</code>, <code class="code">_Sat unsigned long long _Fract</code>, <code class="code">short _Accum</code>, <code class="code">_Accum</code>, <code class="code">long _Accum</code>, <code class="code">long long _Accum</code>, <code class="code">unsigned short _Accum</code>, <code class="code">unsigned _Accum</code>, <code class="code">unsigned long _Accum</code>, <code class="code">unsigned long long _Accum</code>, <code class="code">_Sat short _Accum</code>, <code class="code">_Sat _Accum</code>, <code class="code">_Sat long _Accum</code>, <code class="code">_Sat long long _Accum</code>, <code class="code">_Sat unsigned short _Accum</code>, <code class="code">_Sat unsigned _Accum</code>, <code class="code">_Sat unsigned long _Accum</code>, <code class="code">_Sat unsigned long long _Accum</code>. </p> <p>Fixed-point data values contain fractional and optional integral parts. The format of fixed-point data varies and depends on the target machine. </p> <p>Support for fixed-point types includes: </p>
+<ul class="itemize mark-bullet"> <li>prefix and postfix increment and decrement operators (<code class="code">++</code>, <code class="code">--</code>) </li>
+<li>unary arithmetic operators (<code class="code">+</code>, <code class="code">-</code>, <code class="code">!</code>) </li>
+<li>binary arithmetic operators (<code class="code">+</code>, <code class="code">-</code>, <code class="code">*</code>, <code class="code">/</code>) </li>
+<li>binary shift operators (<code class="code">&lt;&lt;</code>, <code class="code">&gt;&gt;</code>) </li>
+<li>relational operators (<code class="code">&lt;</code>, <code class="code">&lt;=</code>, <code class="code">&gt;=</code>, <code class="code">&gt;</code>) </li>
+<li>equality operators (<code class="code">==</code>, <code class="code">!=</code>) </li>
+<li>assignment operators (<code class="code">+=</code>, <code class="code">-=</code>, <code class="code">*=</code>, <code class="code">/=</code>, <code class="code">&lt;&lt;=</code>, <code class="code">&gt;&gt;=</code>) </li>
+<li>conversions to and from integer, floating-point, or fixed-point types </li>
+</ul> <p>Use a suffix in a fixed-point literal constant: </p>
+<ul class="itemize mark-bullet"> <li>‘<samp class="samp">hr</samp>’ or ‘<samp class="samp">HR</samp>’ for <code class="code">short _Fract</code> and <code class="code">_Sat short _Fract</code> </li>
+<li>‘<samp class="samp">r</samp>’ or ‘<samp class="samp">R</samp>’ for <code class="code">_Fract</code> and <code class="code">_Sat _Fract</code> </li>
+<li>‘<samp class="samp">lr</samp>’ or ‘<samp class="samp">LR</samp>’ for <code class="code">long _Fract</code> and <code class="code">_Sat long _Fract</code> </li>
+<li>‘<samp class="samp">llr</samp>’ or ‘<samp class="samp">LLR</samp>’ for <code class="code">long long _Fract</code> and <code class="code">_Sat long long _Fract</code> </li>
+<li>‘<samp class="samp">uhr</samp>’ or ‘<samp class="samp">UHR</samp>’ for <code class="code">unsigned short _Fract</code> and <code class="code">_Sat unsigned short _Fract</code> </li>
+<li>‘<samp class="samp">ur</samp>’ or ‘<samp class="samp">UR</samp>’ for <code class="code">unsigned _Fract</code> and <code class="code">_Sat unsigned _Fract</code> </li>
+<li>‘<samp class="samp">ulr</samp>’ or ‘<samp class="samp">ULR</samp>’ for <code class="code">unsigned long _Fract</code> and <code class="code">_Sat unsigned long _Fract</code> </li>
+<li>‘<samp class="samp">ullr</samp>’ or ‘<samp class="samp">ULLR</samp>’ for <code class="code">unsigned long long _Fract</code> and <code class="code">_Sat unsigned long long _Fract</code> </li>
+<li>‘<samp class="samp">hk</samp>’ or ‘<samp class="samp">HK</samp>’ for <code class="code">short _Accum</code> and <code class="code">_Sat short _Accum</code> </li>
+<li>‘<samp class="samp">k</samp>’ or ‘<samp class="samp">K</samp>’ for <code class="code">_Accum</code> and <code class="code">_Sat _Accum</code> </li>
+<li>‘<samp class="samp">lk</samp>’ or ‘<samp class="samp">LK</samp>’ for <code class="code">long _Accum</code> and <code class="code">_Sat long _Accum</code> </li>
+<li>‘<samp class="samp">llk</samp>’ or ‘<samp class="samp">LLK</samp>’ for <code class="code">long long _Accum</code> and <code class="code">_Sat long long _Accum</code> </li>
+<li>‘<samp class="samp">uhk</samp>’ or ‘<samp class="samp">UHK</samp>’ for <code class="code">unsigned short _Accum</code> and <code class="code">_Sat unsigned short _Accum</code> </li>
+<li>‘<samp class="samp">uk</samp>’ or ‘<samp class="samp">UK</samp>’ for <code class="code">unsigned _Accum</code> and <code class="code">_Sat unsigned _Accum</code> </li>
+<li>‘<samp class="samp">ulk</samp>’ or ‘<samp class="samp">ULK</samp>’ for <code class="code">unsigned long _Accum</code> and <code class="code">_Sat unsigned long _Accum</code> </li>
+<li>‘<samp class="samp">ullk</samp>’ or ‘<samp class="samp">ULLK</samp>’ for <code class="code">unsigned long long _Accum</code> and <code class="code">_Sat unsigned long long _Accum</code> </li>
+</ul> <p>GCC support of fixed-point types as specified by the draft technical report is incomplete: </p> <ul class="itemize mark-bullet"> <li>Pragmas to control overflow and rounding behaviors are not implemented. </li>
+</ul> <p>Fixed-point types are supported by the DWARF debug information format. </p> </div> <div class="nav-panel"> <p> Next: <a href="named-address-spaces">Named Address Spaces</a>, Previous: <a href="hex-floats">Hex Floats</a>, Up: <a href="c-extensions">Extensions to the C Language Family</a> [<a href="index#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="indices" title="Index" rel="index">Index</a>]</p> </div><div class="_attribution">
+ <p class="_attribution-p">
+ &copy; Free Software Foundation<br>Licensed under the GNU Free Documentation License, Version 1.3.<br>
+ <a href="https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Fixed-Point.html" class="_attribution-link">https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Fixed-Point.html</a>
+ </p>
+</div>