COMPMID-2336: Fix build issues.

Change-Id: I0932dc9ca4649f0825950ed9d6d249212bc6971e
Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Reviewed-on: https://review.mlplatform.org/c/1671
Tested-by: Arm Jenkins <bsgcomp@arm.com>
diff --git a/support/ToolchainSupport.h b/support/ToolchainSupport.h
index 020a4a1..03bbff9 100644
--- a/support/ToolchainSupport.h
+++ b/support/ToolchainSupport.h
@@ -195,6 +195,23 @@
     return ::copysign(x, y);
 }
 
+/** Computes (x*y) + z as if to infinite precision and rounded only once to fit the result type.
+ *
+ * @note This function implements the same behaviour as std::fma except that it doesn't
+ *       support Integral type. The latter is not in the namespace std in some Android toolchains.
+ *
+ * @param[in] x floating-point value
+ * @param[in] y floating-point value
+ * @param[in] z floating-point value
+ *
+ * @return Result floating point value equal to (x*y) + z.c
+ */
+template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>::type>
+inline T fma(T x, T y, T z)
+{
+    return ::fma(x, y, z);
+}
+
 /** Loads the data from the given location, converts them to character string equivalents
  *  and writes the result to a character string buffer.
  *
@@ -304,6 +321,23 @@
     return std::copysign(x, y);
 }
 
+/** Computes (x*y) + z as if to infinite precision and rounded only once to fit the result type.
+ *
+ * @note This function implements the same behaviour as std::fma except that it doesn't
+ *       support Integral type. The latter is not in the namespace std in some Android toolchains.
+ *
+ * @param[in] x floating-point value
+ * @param[in] y floating-point value
+ * @param[in] z floating-point value
+ *
+ * @return Result floating point value equal to (x*y) + z.
+ */
+template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>::type>
+inline T fma(T x, T y, T z)
+{
+    return std::fma(x, y, z);
+}
+
 /** Loads the data from the given location, converts them to character string equivalents
  *  and writes the result to a character string buffer.
  *