aboutsummaryrefslogtreecommitdiff
path: root/test/Verifier
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2012-04-10 08:22:43 +0000
committerDuncan Sands <baldrick@free.fr>2012-04-10 08:22:43 +0000
commit1fd63df6930a83d9d1378d2c68e19850c652078e (patch)
treea604adacb83bcc32a711f03f8e5dd862db6176c4 /test/Verifier
parentd9fc1ce8096f7138c60edc3a6655583bf209780e (diff)
Express the number of ULPs in fpaccuracy metadata as a real rather than a
rational number, eg as 2.5 rather than 5, 2. OK'd by Peter Collingbourne. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154387 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Verifier')
-rw-r--r--test/Verifier/fpaccuracy.ll31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/Verifier/fpaccuracy.ll b/test/Verifier/fpaccuracy.ll
new file mode 100644
index 0000000000..2fefde09f1
--- /dev/null
+++ b/test/Verifier/fpaccuracy.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, !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 }