mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-06 01:24:35 +00:00
Add a pinned metadata name for fpaccuracy, and document it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143135 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -103,6 +103,7 @@
|
|||||||
<li><a href="#metadata">Metadata Nodes and Metadata Strings</a>
|
<li><a href="#metadata">Metadata Nodes and Metadata Strings</a>
|
||||||
<ol>
|
<ol>
|
||||||
<li><a href="#tbaa">'<tt>tbaa</tt>' Metadata</a></li>
|
<li><a href="#tbaa">'<tt>tbaa</tt>' Metadata</a></li>
|
||||||
|
<li><a href="#fpaccuracy">'<tt>fpaccuracy</tt>' Metadata</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
@ -2966,6 +2967,35 @@ call void @llvm.dbg.value(metadata !24, i64 0, metadata !25)
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
<a name="fpaccuracy">'<tt>fpaccuracy</tt>' Metadata</a>
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><tt>fpaccuracy</tt> metadata may be attached to any instruction of floating
|
||||||
|
point type. It expresses the maximum relative error of the result of
|
||||||
|
that instruction, in ULPs. ULP is defined as follows:</p>
|
||||||
|
|
||||||
|
<blockquote><p>
|
||||||
|
If x is a real number that lies between two finite consecutive floating-point
|
||||||
|
numbers a and b, without being equal to one of them, then ulp(x) = |b - a|,
|
||||||
|
otherwise ulp(x) is the distance between the two non-equal finite
|
||||||
|
floating-point numbers nearest x. Moreover, ulp(NaN) is NaN.
|
||||||
|
</p></blockquote>
|
||||||
|
|
||||||
|
<p>The maximum relative error may be any rational number. The metadata node
|
||||||
|
shall consist of a pair of unsigned integers respectively representing
|
||||||
|
the numerator and denominator. For example, 2.5 ULP:</p>
|
||||||
|
|
||||||
|
<div class="doc_code">
|
||||||
|
<pre>
|
||||||
|
!0 = metadata !{ i32 5, i32 2 }
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -40,7 +40,8 @@ public:
|
|||||||
enum {
|
enum {
|
||||||
MD_dbg = 0, // "dbg"
|
MD_dbg = 0, // "dbg"
|
||||||
MD_tbaa = 1, // "tbaa"
|
MD_tbaa = 1, // "tbaa"
|
||||||
MD_prof = 2 // "prof"
|
MD_prof = 2, // "prof"
|
||||||
|
MD_fpaccuracy = 3 // "fpaccuracy"
|
||||||
};
|
};
|
||||||
|
|
||||||
/// getMDKindID - Return a unique non-zero ID for the specified metadata kind.
|
/// getMDKindID - Return a unique non-zero ID for the specified metadata kind.
|
||||||
|
@ -43,6 +43,11 @@ LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) {
|
|||||||
// Create the 'prof' metadata kind.
|
// Create the 'prof' metadata kind.
|
||||||
unsigned ProfID = getMDKindID("prof");
|
unsigned ProfID = getMDKindID("prof");
|
||||||
assert(ProfID == MD_prof && "prof kind id drifted"); (void)ProfID;
|
assert(ProfID == MD_prof && "prof kind id drifted"); (void)ProfID;
|
||||||
|
|
||||||
|
// Create the 'fpaccuracy' metadata kind.
|
||||||
|
unsigned FPAccuracyID = getMDKindID("fpaccuracy");
|
||||||
|
assert(FPAccuracyID == MD_fpaccuracy && "fpaccuracy kind id drifted");
|
||||||
|
(void)FPAccuracyID;
|
||||||
}
|
}
|
||||||
LLVMContext::~LLVMContext() { delete pImpl; }
|
LLVMContext::~LLVMContext() { delete pImpl; }
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user