summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2012-04-14 12:36:06 +0000
committerDuncan Sands <baldrick@free.fr>2012-04-14 12:36:06 +0000
commit34bd91a49f1535b9da08d1bbb86430c32c7545bd (patch)
treed45ce180cdfb2c02b6dccf42f61770cad7c46f3d
parent1e6b6060f943d53ecca748a7779866fdd53472ab (diff)
downloadbcm5719-llvm-34bd91a49f1535b9da08d1bbb86430c32c7545bd.tar.gz
bcm5719-llvm-34bd91a49f1535b9da08d1bbb86430c32c7545bd.zip
Rename "fpaccuracy" metadata to the more generic "fpmath". That's because I'm
thinking of generalizing it to be able to specify other freedoms beyond accuracy (such as that NaN's don't have to be respected). I'd like the 3.1 release (the first one with this metadata) to have the more generic name already rather than having to auto-upgrade it in 3.2. llvm-svn: 154744
-rw-r--r--llvm/docs/LangRef.html12
-rw-r--r--llvm/include/llvm/LLVMContext.h2
-rw-r--r--llvm/lib/VMCore/LLVMContext.cpp6
-rw-r--r--llvm/lib/VMCore/Verifier.cpp12
-rw-r--r--llvm/test/Verifier/fpaccuracy.ll31
-rw-r--r--llvm/test/Verifier/fpmath.ll31
6 files changed, 47 insertions, 47 deletions
diff --git a/llvm/docs/LangRef.html b/llvm/docs/LangRef.html
index 4f6b137ed18..c1482115a6f 100644
--- a/llvm/docs/LangRef.html
+++ b/llvm/docs/LangRef.html
@@ -103,7 +103,7 @@
<li><a href="#metadata">Metadata Nodes and Metadata Strings</a>
<ol>
<li><a href="#tbaa">'<tt>tbaa</tt>' Metadata</a></li>
- <li><a href="#fpaccuracy">'<tt>fpaccuracy</tt>' Metadata</a></li>
+ <li><a href="#fpmath">'<tt>fpmath</tt>' Metadata</a></li>
<li><a href="#range">'<tt>range</tt>' Metadata</a></li>
</ol>
</li>
@@ -3000,15 +3000,15 @@ call void @llvm.dbg.value(metadata !24, i64 0, metadata !25)
<!-- _______________________________________________________________________ -->
<h4>
- <a name="fpaccuracy">'<tt>fpaccuracy</tt>' Metadata</a>
+ <a name="fpmath">'<tt>fpmath</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 allowed in the result
- of that instruction, in ULPs, thus potentially allowing the compiler to use
- a more efficient but less accurate method of computing it.
+<p><tt>fpmath</tt> metadata may be attached to any instruction of floating point
+ type. It can be used to express the maximum acceptable relative error in the
+ result of that instruction, in ULPs, thus potentially allowing the compiler
+ to use a more efficient but less accurate method of computing it.
ULP is defined as follows:</p>
<blockquote>
diff --git a/llvm/include/llvm/LLVMContext.h b/llvm/include/llvm/LLVMContext.h
index 18adcd1e3c2..a8306a9e761 100644
--- a/llvm/include/llvm/LLVMContext.h
+++ b/llvm/include/llvm/LLVMContext.h
@@ -42,7 +42,7 @@ public:
MD_dbg = 0, // "dbg"
MD_tbaa = 1, // "tbaa"
MD_prof = 2, // "prof"
- MD_fpaccuracy = 3, // "fpaccuracy"
+ MD_fpmath = 3, // "fpmath"
MD_range = 4 // "range"
};
diff --git a/llvm/lib/VMCore/LLVMContext.cpp b/llvm/lib/VMCore/LLVMContext.cpp
index 68c56212bc6..f07f0b39392 100644
--- a/llvm/lib/VMCore/LLVMContext.cpp
+++ b/llvm/lib/VMCore/LLVMContext.cpp
@@ -44,9 +44,9 @@ LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) {
unsigned ProfID = getMDKindID("prof");
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");
+ // Create the 'fpmath' metadata kind.
+ unsigned FPAccuracyID = getMDKindID("fpmath");
+ assert(FPAccuracyID == MD_fpmath && "fpmath kind id drifted");
(void)FPAccuracyID;
// Create the 'range' metadata kind.
diff --git a/llvm/lib/VMCore/Verifier.cpp b/llvm/lib/VMCore/Verifier.cpp
index 96492e44d56..ab79d8ce62a 100644
--- a/llvm/lib/VMCore/Verifier.cpp
+++ b/llvm/lib/VMCore/Verifier.cpp
@@ -1653,16 +1653,16 @@ void Verifier::visitInstruction(Instruction &I) {
}
}
- if (MDNode *MD = I.getMetadata(LLVMContext::MD_fpaccuracy)) {
+ if (MDNode *MD = I.getMetadata(LLVMContext::MD_fpmath)) {
Assert1(I.getType()->isFPOrFPVectorTy(),
- "fpaccuracy requires a floating point result!", &I);
- Assert1(MD->getNumOperands() == 1, "fpaccuracy takes one operand!", &I);
+ "fpmath requires a floating point result!", &I);
+ Assert1(MD->getNumOperands() == 1, "fpmath takes one operand!", &I);
ConstantFP *Op = dyn_cast_or_null<ConstantFP>(MD->getOperand(0));
- Assert1(Op, "fpaccuracy ULPs not a floating point number!", &I);
+ Assert1(Op, "fpmath ULPs not a floating point number!", &I);
APFloat ULPs = Op->getValueAPF();
Assert1(ULPs.isNormal() || ULPs.isZero(),
- "fpaccuracy ULPs not a normal number!", &I);
- Assert1(!ULPs.isNegative(), "fpaccuracy ULPs is negative!", &I);
+ "fpmath ULPs not a normal number!", &I);
+ Assert1(!ULPs.isNegative(), "fpmath ULPs is negative!", &I);
}
MDNode *MD = I.getMetadata(LLVMContext::MD_range);
diff --git a/llvm/test/Verifier/fpaccuracy.ll b/llvm/test/Verifier/fpaccuracy.ll
deleted file mode 100644
index 2fefde09f18..00000000000
--- a/llvm/test/Verifier/fpaccuracy.ll
+++ /dev/null
@@ -1,31 +0,0 @@
-; RUN: not llvm-as < %s |& FileCheck %s
-
-define void @foo(i32 %i, float %f, <2 x float> %g) {
- %s = add i32 %i, %i, !fpaccuracy !0
-; CHECK: fpaccuracy requires a floating point result!
- %t = fadd float %f, %f, !fpaccuracy !1
-; CHECK: fpaccuracy takes one operand!
- %u = fadd float %f, %f, !fpaccuracy !2
-; CHECK: fpaccuracy takes one operand!
- %v = fadd float %f, %f, !fpaccuracy !3
-; CHECK: fpaccuracy ULPs not a floating point number!
- %w = fadd float %f, %f, !fpaccuracy !0
-; Above line is correct.
- %w2 = fadd <2 x float> %g, %g, !fpaccuracy !0
-; Above line is correct.
- %x = fadd float %f, %f, !fpaccuracy !4
-; CHECK: fpaccuracy ULPs is negative!
- %y = fadd float %f, %f, !fpaccuracy !5
-; CHECK: fpaccuracy ULPs is negative!
- %z = fadd float %f, %f, !fpaccuracy !6
-; CHECK: fpaccuracy ULPs not a normal number!
- ret void
-}
-
-!0 = metadata !{ float 1.0 }
-!1 = metadata !{ }
-!2 = metadata !{ float 1.0, float 1.0 }
-!3 = metadata !{ i32 1 }
-!4 = metadata !{ float -1.0 }
-!5 = metadata !{ float -0.0 }
-!6 = metadata !{ float 0x7FFFFFFF00000000 }
diff --git a/llvm/test/Verifier/fpmath.ll b/llvm/test/Verifier/fpmath.ll
new file mode 100644
index 00000000000..4cfed2a3979
--- /dev/null
+++ b/llvm/test/Verifier/fpmath.ll
@@ -0,0 +1,31 @@
+; RUN: not llvm-as < %s |& FileCheck %s
+
+define void @foo(i32 %i, float %f, <2 x float> %g) {
+ %s = add i32 %i, %i, !fpmath !0
+; CHECK: fpmath requires a floating point result!
+ %t = fadd float %f, %f, !fpmath !1
+; CHECK: fpmath takes one operand!
+ %u = fadd float %f, %f, !fpmath !2
+; CHECK: fpmath takes one operand!
+ %v = fadd float %f, %f, !fpmath !3
+; CHECK: fpmath ULPs not a floating point number!
+ %w = fadd float %f, %f, !fpmath !0
+; Above line is correct.
+ %w2 = fadd <2 x float> %g, %g, !fpmath !0
+; Above line is correct.
+ %x = fadd float %f, %f, !fpmath !4
+; CHECK: fpmath ULPs is negative!
+ %y = fadd float %f, %f, !fpmath !5
+; CHECK: fpmath ULPs is negative!
+ %z = fadd float %f, %f, !fpmath !6
+; CHECK: fpmath ULPs not a normal number!
+ ret void
+}
+
+!0 = metadata !{ float 1.0 }
+!1 = metadata !{ }
+!2 = metadata !{ float 1.0, float 1.0 }
+!3 = metadata !{ i32 1 }
+!4 = metadata !{ float -1.0 }
+!5 = metadata !{ float -0.0 }
+!6 = metadata !{ float 0x7FFFFFFF00000000 }
OpenPOWER on IntegriCloud