<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span lang="SV">Hello,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="SV"><o:p> </o:p></span></p>
<p class="MsoNormal">To facilitate the implementation of Embedded-C’s support for fixed-point numbers, classes were added to Clang to handle the representation of fixed-point type semantics and operations. These classes are FixedPointSemantics and APFixedPoint,
 mirroring fltSemantics and APFloat in LLVM. They were added to Clang and not LLVM as the fixed-point types they represent primarily exist as concepts on the C level rather than in IR. The possibility to move them to LLVM in the future was left open, should
 the need arise.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Following discussions in <a href="https://reviews.llvm.org/D82663">
https://reviews.llvm.org/D82663</a>, we’ve determined that it would be beneficial to add a canonical LLVM IR interface for constructing fixed-point operations. In order to describe the semantics of these operations, it’s necessary to describe the semantics
 of the conceptual fixed-point types that they operate on. For this reason, I would like to suggest moving the FixedPointSemantics and APFixedPoint classes into ADT/Support. Both classes are completely Clang-agnostic, so the move is simply a matter of moving
 the file+unittests in question, and remapping include paths and namespaces to the new location.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Most of the testing done on APFixedPoint has been done through C code rather than via unit tests. It may be that more tests need to be added on the LLVM side, unless it’s acceptable that the Clang usage tests the class sufficiently.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">A patch for moving the fixed-point classes can be found here:
<a href="https://reviews.llvm.org/D85312">https://reviews.llvm.org/D85312</a> <o:p>
</o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Following the move, a new FixedPointBuilder would be added to llvm/IR. The public interface would work similarly to MatrixBuilder.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">A patch for adding FixedPointBuilder can be found here: <a href="https://reviews.llvm.org/D85314">
https://reviews.llvm.org/D85314</a> <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<br>
Bevin<o:p></o:p></p>
</div>
</body>
</html>