diff options
-rw-r--r-- | docs/LangRef.html | 12 | ||||
-rw-r--r-- | include/llvm/LLVMContext.h | 2 | ||||
-rw-r--r-- | lib/VMCore/LLVMContext.cpp | 6 | ||||
-rw-r--r-- | lib/VMCore/Verifier.cpp | 12 | ||||
-rw-r--r-- | test/Verifier/fpaccuracy.ll | 31 | ||||
-rw-r--r-- | test/Verifier/fpmath.ll | 31 |
6 files changed, 47 insertions, 47 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html index 4f6b137..c148211 100644 --- a/docs/LangRef.html +++ b/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/include/llvm/LLVMContext.h b/include/llvm/LLVMContext.h index 18adcd1..a8306a9 100644 --- a/include/llvm/LLVMContext.h +++ b/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/lib/VMCore/LLVMContext.cpp b/lib/VMCore/LLVMContext.cpp index 68c5621..f07f0b3 100644 --- a/lib/VMCore/LLVMContext.cpp +++ b/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/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index 96492e4..ab79d8c 100644 --- a/lib/VMCore/Verifier.cpp +++ b/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/test/Verifier/fpaccuracy.ll b/test/Verifier/fpaccuracy.ll deleted file mode 100644 index 2fefde0..0000000 --- a/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/test/Verifier/fpmath.ll b/test/Verifier/fpmath.ll new file mode 100644 index 0000000..4cfed2a --- /dev/null +++ b/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 } |