(no commit message)
[libreriscv.git] / zfpacc_proposal.mdwn
index d528ac46e3c3bfa74e4097904a09c201726160a7..4262c53f941ff770a76d25a34263267af4ad2560 100644 (file)
@@ -1,3 +1,5 @@
+[[!tag standards]]
+
 # FP Accuracy proposal
 
 Credits:
 # FP Accuracy proposal
 
 Credits:
@@ -20,6 +22,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.
 
 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
 # Extension of FCSR
 
 Zfpacc would use some of the the reserved bits of FCSR.  It would be treated
@@ -153,13 +169,18 @@ Comments:
 
 ### function accuracy in standards (opencl, vulkan)
 
 
 ### 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.
 
 Vulkan requires full ieee754 precision for all F/D instructions except for fdiv and fsqrt.
 
-https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#spirvenv-precision-operation
+<https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/chap40.html#spirvenv-precision-operation>
+
+Source is here:
+<https://github.com/KhronosGroup/Vulkan-Docs/blob/master/appendices/spirvenv.txt#L1172>
 
 OpenCL slightly different, suggest adding as an extra entry.
 
 
 OpenCL slightly different, suggest adding as an extra entry.
 
-https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_Env.html#relative-error-as-ulps
+<https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_Env.html#relative-error-as-ulps>
 
 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
 
 
 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