diff options
Diffstat (limited to 'test/Verifier/fpmath.ll')
-rw-r--r-- | test/Verifier/fpmath.ll | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/test/Verifier/fpmath.ll b/test/Verifier/fpmath.ll index 4cfed2a..a7d3ea8 100644 --- a/test/Verifier/fpmath.ll +++ b/test/Verifier/fpmath.ll @@ -1,6 +1,6 @@ ; RUN: not llvm-as < %s |& FileCheck %s -define void @foo(i32 %i, float %f, <2 x float> %g) { +define void @fpmath1(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 @@ -8,17 +8,27 @@ define void @foo(i32 %i, float %f, <2 x float> %g) { %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! +; CHECK: invalid fpmath accuracy! %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! +; CHECK: fpmath accuracy not a positive number! %y = fadd float %f, %f, !fpmath !5 -; CHECK: fpmath ULPs is negative! +; CHECK: fpmath accuracy not a positive number! %z = fadd float %f, %f, !fpmath !6 -; CHECK: fpmath ULPs not a normal number! +; CHECK: fpmath accuracy not a positive number! + ret void +} + +define void @fpmath2(float %f, <2 x float> %g) { + %w = fadd float %f, %f, !fpmath !7 +; Above line is correct. + %w2 = fadd <2 x float> %g, %g, !fpmath !7 +; Above line is correct. + %x = fadd float %f, %f, !fpmath !8 +; CHECK: wrong fpmath accuracy keyword! ret void } @@ -27,5 +37,7 @@ define void @foo(i32 %i, float %f, <2 x float> %g) { !2 = metadata !{ float 1.0, float 1.0 } !3 = metadata !{ i32 1 } !4 = metadata !{ float -1.0 } -!5 = metadata !{ float -0.0 } +!5 = metadata !{ float 0.0 } !6 = metadata !{ float 0x7FFFFFFF00000000 } +!7 = metadata !{ metadata !"fast" } +!8 = metadata !{ metadata !"slow" } |