Bug 1244: changes to description pospopcount
[libreriscv.git] / zfpacc_proposal.mdwn
index 4e7f6867f962016c7e18cd1ede35c57f32663fac..8b22582a5d984dacb72bb766a487a30045959e86 100644 (file)
@@ -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,18 +168,26 @@ 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/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.
 
-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
 
 https://www.google.com/search?q=opencl+environment+specification
 
+2.1 superceded by 2.2
+<https://github.com/KhronosGroup/OpenCL-Docs/blob/master/env/numerical_compliance.asciidoc>
+
 ### Compliance
 
 Dan Petroski: