X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=zfpacc_proposal.mdwn;h=8b22582a5d984dacb72bb766a487a30045959e86;hb=d1c4c5d08320411b1c613e3160d4bcb4906d6224;hp=f75eb1cc8f8ab1d232ed9ce0612e59609897843d;hpb=69aaffd36b3aab8de9c882a90e687c395c14c749;p=libreriscv.git diff --git a/zfpacc_proposal.mdwn b/zfpacc_proposal.mdwn index f75eb1cc8..8b22582a5 100644 --- a/zfpacc_proposal.mdwn +++ b/zfpacc_proposal.mdwn @@ -1,3 +1,4 @@ + # FP Accuracy proposal Credits: @@ -20,6 +21,20 @@ this proposal. Only ULP (Unit in Last Place) of the instruction *result* is permitted to meet alternative accuracy requirements, whilst still retaining the instruction's requested format. +This proposal is *only* suitable for adding pre-existing accuracy standards +where it is clearly established, well in advance of applications being +written that conform to that standard, that dealing with variations in +accuracy across hardware implementations is the responsibility of the +application writer. This is the case for both Vulkan and OpenCL. + +This proposal is *not* suitable for inclusion of "de-facto" (proprietary) +accuracy standards (historic IBM Mainframe vs Ahmdahl incompatibility) +where there was no prior agreement or notification to applications +writers that variations in accuracy across hardware implementations +would occur. In the unlikely event that they *are* ever to be included +(n the future, rather than as a Custom Extension, then, unlike Vulkan +and OpenCL, they must **only** be added as "bit-for-bit compatible". + # Extension of FCSR Zfpacc would use some of the the reserved bits of FCSR. It would be treated @@ -153,11 +168,25 @@ Comments: ### function accuracy in standards (opencl, vulkan) +[[resources]] for OpenCL and Vulkan + Vulkan requires full ieee754 precision for all F/D instructions except for fdiv and fsqrt. -https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_Env.html#relative-error-as-ulps + + +Source is here: + + +OpenCL slightly different, suggest adding as an extra entry. + + + +Link, finds version 2.1 of opencl environment specification, table 8.4.1 however needs checking if it is the same as the above, which has "SPIRV" in it and is 2.2 not 2.1 +https://www.google.com/search?q=opencl+environment+specification +2.1 superceded by 2.2 + ### Compliance