mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-12 17:25:49 +00:00
through the use of 'fpmath' metadata. Currently this only provides a 'fpaccuracy' value, which may be a number in ULPs or the keyword 'fast', however the intent is that this will be extended with additional information about NaN's, infinities etc later. No optimizations have been hooked up to this so far. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154822 91177308-0d34-0410-b5e6-96231b3b80d8
44 lines
1.3 KiB
LLVM
44 lines
1.3 KiB
LLVM
; RUN: not llvm-as < %s |& FileCheck %s
|
|
|
|
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
|
|
; 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: 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 accuracy not a positive number!
|
|
%y = fadd float %f, %f, !fpmath !5
|
|
; CHECK: fpmath accuracy not a positive number!
|
|
%z = fadd float %f, %f, !fpmath !6
|
|
; 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
|
|
}
|
|
|
|
!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 }
|
|
!7 = metadata !{ metadata !"fast" }
|
|
!8 = metadata !{ metadata !"slow" }
|