Revert "[test-suite] Suppress FP_CONTRACT due to command line changes planned in D74436"

This reverts commit a52cf9f13240934991ba800d4188f61eb6816420.
build error, apologies, my testing didn't find this
diff --git a/MicroBenchmarks/ImageProcessing/BilateralFiltering/CMakeLists.txt b/MicroBenchmarks/ImageProcessing/BilateralFiltering/CMakeLists.txt
index cc1de53..fd0fafa 100644
--- a/MicroBenchmarks/ImageProcessing/BilateralFiltering/CMakeLists.txt
+++ b/MicroBenchmarks/ImageProcessing/BilateralFiltering/CMakeLists.txt
@@ -2,10 +2,6 @@
 list(APPEND CPPFLAGS -I ${CMAKE_SOURCE_DIR}/${IMAGEPROC_UTILS})
 list(APPEND LDFLAGS -lm)
 
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 llvm_test_verify_hash_program_output(bilateralFilterOutput.txt)
 llvm_test_verify(WORKDIR ${CMAKE_CURRENT_BINARY_DIR}
   ${FPCMP} bilateralFilter.reference_output bilateralFilterOutput.txt
diff --git a/MicroBenchmarks/ImageProcessing/Blur/CMakeLists.txt b/MicroBenchmarks/ImageProcessing/Blur/CMakeLists.txt
index d2d0e7e..291d240 100644
--- a/MicroBenchmarks/ImageProcessing/Blur/CMakeLists.txt
+++ b/MicroBenchmarks/ImageProcessing/Blur/CMakeLists.txt
@@ -3,10 +3,6 @@
 list(APPEND CPPFLAGS -I ${CMAKE_SOURCE_DIR}/${IMAGEPROC_UTILS})
 list(APPEND LDFLAGS -lm)
 
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 llvm_test_verify_hash_program_output(boxBlurOutput.txt)
 llvm_test_verify(WORKDIR ${CMAKE_CURRENT_BINARY_DIR}
   ${FPCMP} boxBlur.reference_output boxBlurOutput.txt
diff --git a/MultiSource/Applications/oggenc/CMakeLists.txt b/MultiSource/Applications/oggenc/CMakeLists.txt
index 047d9a4..e40bd55 100644
--- a/MultiSource/Applications/oggenc/CMakeLists.txt
+++ b/MultiSource/Applications/oggenc/CMakeLists.txt
@@ -1,8 +1,4 @@
 list(APPEND CFLAGS -fno-strict-aliasing)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 list(APPEND LDFLAGS -lm)
 set(RUN_OPTIONS -Q -s 901820 - < tune)
 llvm_multisource(oggenc)
diff --git a/MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/CMakeLists.txt b/MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/CMakeLists.txt
index e8f00cd..1058fd4 100644
--- a/MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/CMakeLists.txt
+++ b/MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/CMakeLists.txt
@@ -1,6 +1,2 @@
 set(RUN_OPTIONS -n 64 -t 1000)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 llvm_multisource(CLAMR)
diff --git a/MultiSource/Benchmarks/DOE-ProxyApps-C++/HPCCG/CMakeLists.txt b/MultiSource/Benchmarks/DOE-ProxyApps-C++/HPCCG/CMakeLists.txt
index 8202c97..e11109e 100644
--- a/MultiSource/Benchmarks/DOE-ProxyApps-C++/HPCCG/CMakeLists.txt
+++ b/MultiSource/Benchmarks/DOE-ProxyApps-C++/HPCCG/CMakeLists.txt
@@ -1,8 +1,4 @@
 list(APPEND CXXFLAGS -DREDSTORM) # -DREDSTORM for mkdir
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 list(APPEND LDFLAGS -lm)
 set(RUN_OPTIONS 50 50 50)
 llvm_multisource(HPCCG)
diff --git a/MultiSource/Benchmarks/DOE-ProxyApps-C++/miniFE/CMakeLists.txt b/MultiSource/Benchmarks/DOE-ProxyApps-C++/miniFE/CMakeLists.txt
index ad61fef..f465718 100644
--- a/MultiSource/Benchmarks/DOE-ProxyApps-C++/miniFE/CMakeLists.txt
+++ b/MultiSource/Benchmarks/DOE-ProxyApps-C++/miniFE/CMakeLists.txt
@@ -6,10 +6,6 @@
 if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
   list(APPEND CXXFLAGS -D_XOPEN_SOURCE=700 -DUseTimes)
 endif()
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 list(APPEND LDFLAGS -lm)
 set(RUN_OPTIONS -nx 64 -ny 64 -nz 64)
 llvm_multisource(miniFE)
diff --git a/MultiSource/Benchmarks/Rodinia/srad/CMakeLists.txt b/MultiSource/Benchmarks/Rodinia/srad/CMakeLists.txt
index f954fe1..a3ffcdb 100644
--- a/MultiSource/Benchmarks/Rodinia/srad/CMakeLists.txt
+++ b/MultiSource/Benchmarks/Rodinia/srad/CMakeLists.txt
@@ -1,10 +1,6 @@
 list(APPEND LDFLAGS -lm)
 set(FP_ABSTOLERANCE 0.00001)
 list(APPEND CFLAGS -I${CMAKE_CURRENT_SOURCE_DIR}/../Common)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 llvm_multisource(srad
   main.c
   sradKernel.c
diff --git a/SingleSource/Benchmarks/Linpack/CMakeLists.txt b/SingleSource/Benchmarks/Linpack/CMakeLists.txt
index 7e348d3..ac4dd8e 100644
--- a/SingleSource/Benchmarks/Linpack/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Linpack/CMakeLists.txt
@@ -1,7 +1,3 @@
 list(APPEND LDFLAGS -lm)
 set(FP_TOLERANCE 0.0001)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Misc-C++/Large/CMakeLists.txt b/SingleSource/Benchmarks/Misc-C++/Large/CMakeLists.txt
index bc5d91e..e729985 100644
--- a/SingleSource/Benchmarks/Misc-C++/Large/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Misc-C++/Large/CMakeLists.txt
@@ -1,8 +1,4 @@
 list(APPEND LDFLAGS -lm)
 set(FP_ABSTOLERANCE 0.01)
 set(HASH_PROGRAM_OUTPUT 1)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/datamining/correlation/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/datamining/correlation/CMakeLists.txt
index 66ab016..cc33024 100644
--- a/SingleSource/Benchmarks/Polybench/datamining/correlation/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/datamining/correlation/CMakeLists.txt
@@ -3,10 +3,6 @@
 if(SMALL_PROBLEM_SIZE)
   list(APPEND CFLAGS -DSMALL_DATASET)
 endif()
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c b/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c
index 79d4251..f70fec0 100644
--- a/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c
+++ b/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c
@@ -121,10 +121,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_correlation_StrictFP(int m, int n,
                             DATA_TYPE float_n,
@@ -210,7 +206,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -222,9 +217,7 @@
   DATA_TYPE float_n;
   POLYBENCH_2D_ARRAY_DECL(data,DATA_TYPE,M,N,m,n);
   POLYBENCH_2D_ARRAY_DECL(symmat,DATA_TYPE,M,M,m,m);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(symmat_StrictFP,DATA_TYPE,M,M,m,m);
-#endif
   POLYBENCH_1D_ARRAY_DECL(mean,DATA_TYPE,M,m);
   POLYBENCH_1D_ARRAY_DECL(stddev,DATA_TYPE,M,m);
 
@@ -245,11 +238,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(m, POLYBENCH_ARRAY(symmat)));
-#else
   init_array (m, n, &float_n, POLYBENCH_ARRAY(data));
   kernel_correlation (m, n, float_n,
 		      POLYBENCH_ARRAY(data),
@@ -262,14 +250,11 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(m, POLYBENCH_ARRAY(symmat_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(data);
   POLYBENCH_FREE_ARRAY(symmat);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(symmat_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(mean);
   POLYBENCH_FREE_ARRAY(stddev);
 
diff --git a/SingleSource/Benchmarks/Polybench/datamining/covariance/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/datamining/covariance/CMakeLists.txt
index 66ab016..cc33024 100644
--- a/SingleSource/Benchmarks/Polybench/datamining/covariance/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/datamining/covariance/CMakeLists.txt
@@ -3,10 +3,6 @@
 if(SMALL_PROBLEM_SIZE)
   list(APPEND CFLAGS -DSMALL_DATASET)
 endif()
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c b/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c
index 01c3c9d..eca3e90 100644
--- a/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c
+++ b/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c
@@ -93,10 +93,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_covariance_StrictFP(int m, int n,
                            DATA_TYPE float_n,
@@ -156,7 +152,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -168,9 +163,7 @@
   DATA_TYPE float_n;
   POLYBENCH_2D_ARRAY_DECL(data,DATA_TYPE,M,N,m,n);
   POLYBENCH_2D_ARRAY_DECL(symmat,DATA_TYPE,M,M,m,m);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(symmat_StrictFP,DATA_TYPE,M,M,m,m);
-#endif
   POLYBENCH_1D_ARRAY_DECL(mean,DATA_TYPE,M,m);
 
 
@@ -190,11 +183,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(m, POLYBENCH_ARRAY(symmat)));
-#else
   init_array (m, n, &float_n, POLYBENCH_ARRAY(data));
   kernel_covariance (m, n, float_n,
 		     POLYBENCH_ARRAY(data),
@@ -206,14 +194,11 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(m, POLYBENCH_ARRAY(symmat_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(data);
   POLYBENCH_FREE_ARRAY(symmat);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(symmat_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(mean);
 
   return 0;
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c
index de04216..1a1f833 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c
@@ -26,11 +26,8 @@
 		DATA_TYPE POLYBENCH_2D(A,NI,NK,ni,nl),
 		DATA_TYPE POLYBENCH_2D(B,NK,NJ,nk,nj),
 		DATA_TYPE POLYBENCH_2D(C,NL,NJ,nl,nj),
-		DATA_TYPE POLYBENCH_2D(D,NI,NL,ni,nl)
-#if !FMA_DISABLED
-                , DATA_TYPE POLYBENCH_2D(D_StrictFP,NI,NL,ni,nl)
-#endif
-		)
+		DATA_TYPE POLYBENCH_2D(D,NI,NL,ni,nl),
+                DATA_TYPE POLYBENCH_2D(D_StrictFP,NI,NL,ni,nl))
 {
 #pragma STDC FP_CONTRACT OFF
   int i, j;
@@ -46,11 +43,9 @@
   for (i = 0; i < nl; i++)
     for (j = 0; j < nj; j++)
       C[i][j] = ((DATA_TYPE) i*(j+3)) / nl;
-#if !FMA_DISABLED
   for (i = 0; i < ni; i++)
     for (j = 0; j < nl; j++)
       D_StrictFP[i][j] = D[i][j] = ((DATA_TYPE) i*(j+2)) / nk;
-#endif
 }
 
 
@@ -106,10 +101,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_2mm_StrictFP(int ni, int nj, int nk, int nl,
                          DATA_TYPE alpha,
@@ -164,7 +155,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -182,9 +172,7 @@
   POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NK,NJ,nk,nj);
   POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NL,NJ,nl,nj);
   POLYBENCH_2D_ARRAY_DECL(D,DATA_TYPE,NI,NL,ni,nl);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(D_StrictFP,DATA_TYPE,NI,NL,ni,nl);
-#endif
 
   /* Initialize array(s). */
   init_array (ni, nj, nk, nl, &alpha, &beta,
@@ -210,11 +198,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(ni, nl, POLYBENCH_ARRAY(D)));
-#else
   kernel_2mm_StrictFP(ni, nj, nk, nl,
                       alpha, beta,
                       POLYBENCH_ARRAY(tmp),
@@ -229,7 +212,6 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(ni, nl, POLYBENCH_ARRAY(D_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(tmp);
@@ -237,9 +219,7 @@
   POLYBENCH_FREE_ARRAY(B);
   POLYBENCH_FREE_ARRAY(C);
   POLYBENCH_FREE_ARRAY(D);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(D_StrictFP);
-#endif
 
   return 0;
 }
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/CMakeLists.txt
index 5cff44c..cc33024 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/CMakeLists.txt
@@ -5,7 +5,4 @@
 endif()
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c
index a1c796e..41b11de 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c
@@ -105,10 +105,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_3mm_StrictFP(int ni, int nj, int nk, int nl, int nm,
                          DATA_TYPE POLYBENCH_2D(E,NI,NJ,ni,nj),
@@ -171,7 +167,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -190,9 +185,7 @@
   POLYBENCH_2D_ARRAY_DECL(C, DATA_TYPE, NJ, NM, nj, nm);
   POLYBENCH_2D_ARRAY_DECL(D, DATA_TYPE, NM, NL, nm, nl);
   POLYBENCH_2D_ARRAY_DECL(G, DATA_TYPE, NI, NL, ni, nl);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(G_StrictFP, DATA_TYPE, NI, NL, ni, nl);
-#endif
 
   /* Initialize array(s). */
   init_array (ni, nj, nk, nl, nm,
@@ -218,11 +211,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(ni, nl, POLYBENCH_ARRAY(G)));
-#else
   kernel_3mm_StrictFP(ni, nj, nk, nl, nm,
                       POLYBENCH_ARRAY(E),
                       POLYBENCH_ARRAY(A),
@@ -237,7 +225,6 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(ni, nl, POLYBENCH_ARRAY(G_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(E);
@@ -247,9 +234,7 @@
   POLYBENCH_FREE_ARRAY(C);
   POLYBENCH_FREE_ARRAY(D);
   POLYBENCH_FREE_ARRAY(G);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(G_StrictFP);
-#endif
 
   return 0;
 }
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/CMakeLists.txt
index 5cff44c..cc33024 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/CMakeLists.txt
@@ -5,7 +5,4 @@
 endif()
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/CMakeLists.txt
index f1b82ec..9b102d9 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/CMakeLists.txt
@@ -2,8 +2,4 @@
 list(APPEND CFLAGS -I ${CMAKE_SOURCE_DIR}/${POLYBENCH_UTILS} -DPOLYBENCH_DUMP_ARRAYS)
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c
index 323691d..de95391 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c
@@ -77,10 +77,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_atax_StrictFP(int nx, int ny,
                           DATA_TYPE POLYBENCH_2D(A,NX,NY,nx,ny),
@@ -125,7 +121,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -137,9 +132,7 @@
   POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, NX, NY, nx, ny);
   POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, NY, ny);
   POLYBENCH_1D_ARRAY_DECL(y, DATA_TYPE, NY, ny);
-#if !FMA_DISABLED
   POLYBENCH_1D_ARRAY_DECL(y_StrictFP, DATA_TYPE, NY, ny);
-#endif
   POLYBENCH_1D_ARRAY_DECL(tmp, DATA_TYPE, NX, nx);
 
   /* Initialize array(s). */
@@ -159,11 +152,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(nx, POLYBENCH_ARRAY(y)));
-#else
   kernel_atax_StrictFP (nx, ny,
                         POLYBENCH_ARRAY(A),
                         POLYBENCH_ARRAY(x),
@@ -175,15 +163,12 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(nx, POLYBENCH_ARRAY(y_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
   POLYBENCH_FREE_ARRAY(x);
   POLYBENCH_FREE_ARRAY(y);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(y_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(tmp);
 
   return 0;
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/CMakeLists.txt
index f1b82ec..9b102d9 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/CMakeLists.txt
@@ -2,8 +2,4 @@
 list(APPEND CFLAGS -I ${CMAKE_SOURCE_DIR}/${POLYBENCH_UTILS} -DPOLYBENCH_DUMP_ARRAYS)
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c
index c8357d0..decfea9 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c
@@ -90,10 +90,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_bicg_StrictFP(int nx, int ny,
                           DATA_TYPE POLYBENCH_2D(A,NX,NY,nx,ny),
@@ -141,7 +137,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -155,10 +150,8 @@
   POLYBENCH_1D_ARRAY_DECL(q, DATA_TYPE, NX, nx);
   POLYBENCH_1D_ARRAY_DECL(p, DATA_TYPE, NY, ny);
   POLYBENCH_1D_ARRAY_DECL(r, DATA_TYPE, NX, nx);
-#if !FMA_DISABLED
   POLYBENCH_1D_ARRAY_DECL(s_StrictFP, DATA_TYPE, NY, ny);
   POLYBENCH_1D_ARRAY_DECL(q_StrictFP, DATA_TYPE, NX, nx);
-#endif
 
   /* Initialize array(s). */
   init_array (nx, ny,
@@ -181,12 +174,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(nx, ny, POLYBENCH_ARRAY(s),
-                                    POLYBENCH_ARRAY(q)));
-#else
   kernel_bicg_StrictFP(nx, ny,
                        POLYBENCH_ARRAY(A),
                        POLYBENCH_ARRAY(s_StrictFP),
@@ -203,7 +190,6 @@
      by the function call in argument. */
   polybench_prevent_dce(print_array(nx, ny, POLYBENCH_ARRAY(s_StrictFP),
                                     POLYBENCH_ARRAY(q_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
@@ -211,10 +197,8 @@
   POLYBENCH_FREE_ARRAY(q);
   POLYBENCH_FREE_ARRAY(p);
   POLYBENCH_FREE_ARRAY(r);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(s_StrictFP);
   POLYBENCH_FREE_ARRAY(q_StrictFP);
-#endif
 
   return 0;
 }
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c
index 27e59ac..f1a8c2f 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c
@@ -22,11 +22,8 @@
 static
 void init_array(int n,
 		DATA_TYPE POLYBENCH_1D(p,N,n),
-		DATA_TYPE POLYBENCH_2D(A,N,N,n,n)
-#if !FMA_DISABLED
-                , DATA_TYPE POLYBENCH_2D(A_StrictFP,N,N,n,n)
-#endif
-		)
+		DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+                DATA_TYPE POLYBENCH_2D(A_StrictFP,N,N,n,n))
 {
 #pragma STDC FP_CONTRACT OFF
   int i, j;
@@ -46,10 +43,7 @@
     {
       p[i] = i + n;
       for (j = 0; j < n; j++)
-#if !FMA_DISABLED
-        A_StrictFP[i][j] = 
-#endif
-		A[i][j] = j + n;
+        A_StrictFP[i][j] = A[i][j] = j + n;
     }
 }
 
@@ -110,10 +104,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_cholesky_StrictFP(int n,
                               DATA_TYPE POLYBENCH_1D(p,N,n),
@@ -170,7 +160,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -180,17 +169,12 @@
   /* Variable declaration/allocation. */
   POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
   POLYBENCH_1D_ARRAY_DECL(p, DATA_TYPE, N, n);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(A_StrictFP, DATA_TYPE, N, N, n, n);
-#endif
 
 
   /* Initialize array(s). */
   init_array (n, POLYBENCH_ARRAY(p), POLYBENCH_ARRAY(A),
-#if !FMA_DISABLED
-              POLYBENCH_ARRAY(A_StrictFP)
-#endif
-	      );
+              POLYBENCH_ARRAY(A_StrictFP));
 
   /* Start timer. */
   polybench_start_instruments;
@@ -202,11 +186,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
-#else
   kernel_cholesky_StrictFP(n, POLYBENCH_ARRAY(p), POLYBENCH_ARRAY(A_StrictFP));
   if (!check_FP(n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(A_StrictFP)))
     return 1;
@@ -214,13 +193,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(A_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(p);
 
   return 0;
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c
index 1e746e1..2ec5317 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c
@@ -21,10 +21,8 @@
 /* Array initialization. */
 static
 void init_array(int nr, int nq, int np,
-		DATA_TYPE POLYBENCH_3D(A,NR,NQ,NP,nr,nq,np)
-#if !FMA_DISABLED
-		, DATA_TYPE POLYBENCH_3D(A_StrictFP,NR,NQ,NP,nr,nq,np),
-#endif
+		DATA_TYPE POLYBENCH_3D(A,NR,NQ,NP,nr,nq,np),
+		DATA_TYPE POLYBENCH_3D(A_StrictFP,NR,NQ,NP,nr,nq,np),
 		DATA_TYPE POLYBENCH_2D(C4,NP,NP,np,np))
 {
 #pragma STDC FP_CONTRACT OFF
@@ -33,10 +31,7 @@
   for (i = 0; i < nr; i++)
     for (j = 0; j < nq; j++)
       for (k = 0; k < np; k++)
-#if !FMA_DISABLED
-	A_StrictFP[i][j][k] =
-#endif
-	       	A[i][j][k] = ((DATA_TYPE) i*j + k) / np;
+	A_StrictFP[i][j][k] = A[i][j][k] = ((DATA_TYPE) i*j + k) / np;
   for (i = 0; i < np; i++)
     for (j = 0; j < np; j++)
       C4[i][j] = ((DATA_TYPE) i*j) / np;
@@ -87,10 +82,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_doitgen_StrictFP(int nr, int nq, int np,
                              DATA_TYPE POLYBENCH_3D(A,NR,NQ,NP,nr,nq,np),
@@ -136,7 +127,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -147,18 +137,14 @@
 
   /* Variable declaration/allocation. */
   POLYBENCH_3D_ARRAY_DECL(A,DATA_TYPE,NR,NQ,NP,nr,nq,np);
-#if !FMA_DISABLED
   POLYBENCH_3D_ARRAY_DECL(A_StrictFP,DATA_TYPE,NR,NQ,NP,nr,nq,np);
-#endif
   POLYBENCH_3D_ARRAY_DECL(sum,DATA_TYPE,NR,NQ,NP,nr,nq,np);
   POLYBENCH_2D_ARRAY_DECL(C4,DATA_TYPE,NP,NP,np,np);
 
   /* Initialize array(s). */
   init_array (nr, nq, np,
 	      POLYBENCH_ARRAY(A),
-#if !FMA_DISABLED
 	      POLYBENCH_ARRAY(A_StrictFP),
-#endif
 	      POLYBENCH_ARRAY(C4));
 
   /* Start timer. */
@@ -174,11 +160,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(nr, nq, np, POLYBENCH_ARRAY(A)));
-#else
   kernel_doitgen_StrictFP(nr, nq, np,
                           POLYBENCH_ARRAY(A_StrictFP),
                           POLYBENCH_ARRAY(C4),
@@ -190,13 +171,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(nr, nq, np, POLYBENCH_ARRAY(A_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(A_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(sum);
   POLYBENCH_FREE_ARRAY(C4);
 
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c
index 5af2ebf..04020fa 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c
@@ -24,9 +24,7 @@
 		DATA_TYPE *alpha,
 		DATA_TYPE *beta,
 		DATA_TYPE POLYBENCH_2D(C,NI,NJ,ni,nj),
-#if !FMA_DISABLED
 		DATA_TYPE POLYBENCH_2D(C_StrictFP,NI,NJ,ni,nj),
-#endif
 		DATA_TYPE POLYBENCH_2D(A,NI,NK,ni,nk),
 		DATA_TYPE POLYBENCH_2D(B,NK,NJ,nk,nj))
 {
@@ -37,10 +35,7 @@
   *beta = 2123;
   for (i = 0; i < ni; i++)
     for (j = 0; j < nj; j++)
-#if !FMA_DISABLED
-      C_StrictFP[i][j] =
-#endif
-	      C[i][j] = ((DATA_TYPE) i*j) / ni;
+      C_StrictFP[i][j] = C[i][j] = ((DATA_TYPE) i*j) / ni;
   for (i = 0; i < ni; i++)
     for (j = 0; j < nk; j++)
       A[i][j] = ((DATA_TYPE) i*j) / ni;
@@ -93,10 +88,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_gemm_StrictFP(int ni, int nj, int nk,
                           DATA_TYPE alpha,
@@ -142,7 +133,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -155,18 +145,14 @@
   DATA_TYPE alpha;
   DATA_TYPE beta;
   POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NI,NJ,ni,nj);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(C_StrictFP,DATA_TYPE,NI,NJ,ni,nj);
-#endif
   POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NK,ni,nk);
   POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NK,NJ,nk,nj);
 
   /* Initialize array(s). */
   init_array (ni, nj, nk, &alpha, &beta,
 	      POLYBENCH_ARRAY(C),
-#if !FMA_DISABLED
 	      POLYBENCH_ARRAY(C_StrictFP),
-#endif
 	      POLYBENCH_ARRAY(A),
 	      POLYBENCH_ARRAY(B));
 
@@ -184,11 +170,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(ni, nj,  POLYBENCH_ARRAY(C)));
-#else
   kernel_gemm_StrictFP(ni, nj, nk,
                        alpha, beta,
                        POLYBENCH_ARRAY(C_StrictFP),
@@ -200,13 +181,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(ni, nj,  POLYBENCH_ARRAY(C_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(C);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(C_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(A);
   POLYBENCH_FREE_ARRAY(B);
 
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/CMakeLists.txt
index f1b82ec..9b102d9 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/CMakeLists.txt
@@ -2,8 +2,4 @@
 list(APPEND CFLAGS -I ${CMAKE_SOURCE_DIR}/${POLYBENCH_UTILS} -DPOLYBENCH_DUMP_ARRAYS)
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c
index 7fd6b9d..c35ff4e 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c
@@ -29,9 +29,7 @@
 		 DATA_TYPE POLYBENCH_1D(u2,N,n),
 		 DATA_TYPE POLYBENCH_1D(v2,N,n),
 		 DATA_TYPE POLYBENCH_1D(w,N,n),
-#if !FMA_DISABLED
 		 DATA_TYPE POLYBENCH_1D(w_StrictFP,N,n),
-#endif
 		 DATA_TYPE POLYBENCH_1D(y,N,n),
 		 DATA_TYPE POLYBENCH_1D(z,N,n))
 {
@@ -49,9 +47,7 @@
       v2[i] = (i+1)/n/6.0;
       y[i] = (i+1)/n/8.0;
       z[i] = (i+1)/n/9.0;
-#if !FMA_DISABLED
       w_StrictFP[i] = w[i] = 0.0;
-#endif
       for (j = 0; j < n; j++)
 	A[i][j] = ((DATA_TYPE) i*j) / n;
     }
@@ -113,10 +109,6 @@
 #pragma endscop
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_gemver_StrictFP(int n,
                             DATA_TYPE alpha,
@@ -175,7 +167,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -192,9 +183,7 @@
   POLYBENCH_1D_ARRAY_DECL(u2, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(v2, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(w, DATA_TYPE, N, n);
-#if !FMA_DISABLED
   POLYBENCH_1D_ARRAY_DECL(w_StrictFP, DATA_TYPE, N, n);
-#endif
   POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(y, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(z, DATA_TYPE, N, n);
@@ -208,9 +197,7 @@
 	      POLYBENCH_ARRAY(u2),
 	      POLYBENCH_ARRAY(v2),
 	      POLYBENCH_ARRAY(w),
-#if !FMA_DISABLED
 	      POLYBENCH_ARRAY(w_StrictFP),
-#endif
 	      POLYBENCH_ARRAY(y),
 	      POLYBENCH_ARRAY(z));
 
@@ -234,11 +221,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(w)));
-#else
   kernel_gemver_StrictFP(n, alpha, beta,
                          POLYBENCH_ARRAY(A),
                          POLYBENCH_ARRAY(A_tmp),
@@ -256,7 +238,6 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(w_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
@@ -266,9 +247,7 @@
   POLYBENCH_FREE_ARRAY(u2);
   POLYBENCH_FREE_ARRAY(v2);
   POLYBENCH_FREE_ARRAY(w);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(w_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(x);
   POLYBENCH_FREE_ARRAY(y);
   POLYBENCH_FREE_ARRAY(z);
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/CMakeLists.txt
index 66ab016..cc33024 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/CMakeLists.txt
@@ -3,10 +3,6 @@
 if(SMALL_PROBLEM_SIZE)
   list(APPEND CFLAGS -DSMALL_DATASET)
 endif()
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c
index 615c1c3..2c7744d 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c
@@ -90,10 +90,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_gesummv_StrictFP(int n,
                              DATA_TYPE alpha,
@@ -142,7 +138,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -157,9 +152,7 @@
   POLYBENCH_1D_ARRAY_DECL(tmp, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(y, DATA_TYPE, N, n);
-#if !FMA_DISABLED
   POLYBENCH_1D_ARRAY_DECL(y_StrictFP, DATA_TYPE, N, n);
-#endif
 
 
   /* Initialize array(s). */
@@ -183,11 +176,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(y)));
-#else
   kernel_gesummv_StrictFP(n, alpha, beta,
                           POLYBENCH_ARRAY(A),
                           POLYBENCH_ARRAY(B),
@@ -200,7 +188,6 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(y_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c
index 5b94be3..af0721f 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c
@@ -23,10 +23,8 @@
 void init_array(int n,
 		DATA_TYPE POLYBENCH_1D(x1,N,n),
 		DATA_TYPE POLYBENCH_1D(x2,N,n),
-#if !FMA_DISABLED
 		DATA_TYPE POLYBENCH_1D(x1_StrictFP,N,n),
 		DATA_TYPE POLYBENCH_1D(x2_StrictFP,N,n),
-#endif
 		DATA_TYPE POLYBENCH_1D(y_1,N,n),
 		DATA_TYPE POLYBENCH_1D(y_2,N,n),
 		DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
@@ -36,14 +34,8 @@
 
   for (i = 0; i < n; i++)
     {
-#if !FMA_DISABLED
-      x1_StrictFP[i] =
-#endif
-	      x1[i] = ((DATA_TYPE) i) / n;
-#if !FMA_DISABLED
-      x2_StrictFP[i] =
-#endif
-	      x2[i] = ((DATA_TYPE) i + 1) / n;
+      x1_StrictFP[i] = x1[i] = ((DATA_TYPE) i) / n;
+      x2_StrictFP[i] = x2[i] = ((DATA_TYPE) i + 1) / n;
       y_1[i] = ((DATA_TYPE) i + 3) / n;
       y_2[i] = ((DATA_TYPE) i + 4) / n;
       for (j = 0; j < n; j++)
@@ -96,10 +88,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_mvt_StrictFP(int n,
                          DATA_TYPE POLYBENCH_1D(x1,N,n),
@@ -141,7 +129,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -152,10 +139,8 @@
   POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
   POLYBENCH_1D_ARRAY_DECL(x1, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(x2, DATA_TYPE, N, n);
-#if !FMA_DISABLED
   POLYBENCH_1D_ARRAY_DECL(x1_StrictFP, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(x2_StrictFP, DATA_TYPE, N, n);
-#endif
   POLYBENCH_1D_ARRAY_DECL(y_1, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(y_2, DATA_TYPE, N, n);
 
@@ -164,10 +149,8 @@
   init_array (n,
 	      POLYBENCH_ARRAY(x1),
 	      POLYBENCH_ARRAY(x2),
-#if !FMA_DISABLED
 	      POLYBENCH_ARRAY(x1_StrictFP),
 	      POLYBENCH_ARRAY(x2_StrictFP),
-#endif
 	      POLYBENCH_ARRAY(y_1),
 	      POLYBENCH_ARRAY(y_2),
 	      POLYBENCH_ARRAY(A));
@@ -187,12 +170,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(x1),
-                                    POLYBENCH_ARRAY(x2)));
-#else
   kernel_mvt_StrictFP(n,
                       POLYBENCH_ARRAY(x1_StrictFP),
                       POLYBENCH_ARRAY(x2_StrictFP),
@@ -208,16 +185,13 @@
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(x1_StrictFP),
                                     POLYBENCH_ARRAY(x2_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
   POLYBENCH_FREE_ARRAY(x1);
   POLYBENCH_FREE_ARRAY(x2);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(x1_StrictFP);
   POLYBENCH_FREE_ARRAY(x2_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(y_1);
   POLYBENCH_FREE_ARRAY(y_2);
 
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/CMakeLists.txt
index 66ab016..cc33024 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/CMakeLists.txt
@@ -3,10 +3,6 @@
 if(SMALL_PROBLEM_SIZE)
   list(APPEND CFLAGS -DSMALL_DATASET)
 endif()
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c
index 843fbb1..e5d9280 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c
@@ -24,9 +24,7 @@
 		DATA_TYPE *alpha,
 		DATA_TYPE *beta,
 		DATA_TYPE POLYBENCH_2D(C,NI,NJ,ni,nj),
-#if !FMA_DISABLED
 		DATA_TYPE POLYBENCH_2D(C_StrictFP,NI,NJ,ni,nj),
-#endif
 		DATA_TYPE POLYBENCH_2D(A,NJ,NJ,nj,nj),
 		DATA_TYPE POLYBENCH_2D(B,NI,NJ,ni,nj))
 {
@@ -37,10 +35,7 @@
   *beta = 2123;
   for (i = 0; i < ni; i++)
     for (j = 0; j < nj; j++) {
-#if !FMA_DISABLED
-      C_StrictFP[i][j] =
-#endif
-	      C[i][j] = ((DATA_TYPE) i*j) / ni;
+      C_StrictFP[i][j] = C[i][j] = ((DATA_TYPE) i*j) / ni;
       B[i][j] = ((DATA_TYPE) i*j) / ni;
     }
   for (i = 0; i < nj; i++)
@@ -97,10 +92,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_symm_StrictFP(int ni, int nj,
                           DATA_TYPE alpha,
@@ -151,7 +142,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -163,18 +153,14 @@
   DATA_TYPE alpha;
   DATA_TYPE beta;
   POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NI,NJ,ni,nj);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(C_StrictFP,DATA_TYPE,NI,NJ,ni,nj);
-#endif
   POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NJ,NJ,nj,nj);
   POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NI,NJ,ni,nj);
 
   /* Initialize array(s). */
   init_array (ni, nj, &alpha, &beta,
 	      POLYBENCH_ARRAY(C),
-#if !FMA_DISABLED
 	      POLYBENCH_ARRAY(C_StrictFP),
-#endif
 	      POLYBENCH_ARRAY(A),
 	      POLYBENCH_ARRAY(B));
 
@@ -192,11 +178,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(ni, nj, POLYBENCH_ARRAY(C)));
-#else
   kernel_symm_StrictFP(ni, nj,
                        alpha, beta,
                        POLYBENCH_ARRAY(C_StrictFP),
@@ -208,13 +189,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(ni, nj, POLYBENCH_ARRAY(C_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(C);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(C_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(A);
   POLYBENCH_FREE_ARRAY(B);
 
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c
index 3f4004f..3e25e8f 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c
@@ -24,9 +24,7 @@
 		DATA_TYPE *alpha,
 		DATA_TYPE *beta,
 		DATA_TYPE POLYBENCH_2D(C,NI,NI,ni,ni),
-#if !FMA_DISABLED
 		DATA_TYPE POLYBENCH_2D(C_StrictFP,NI,NI,ni,ni),
-#endif
 		DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj),
 		DATA_TYPE POLYBENCH_2D(B,NI,NJ,ni,nj))
 {
@@ -42,10 +40,7 @@
     }
   for (i = 0; i < ni; i++)
     for (j = 0; j < ni; j++)
-#if !FMA_DISABLED
-      C_StrictFP[i][j] =
-#endif
-	      C[i][j] = ((DATA_TYPE) i*j) / ni;
+      C_StrictFP[i][j] = C[i][j] = ((DATA_TYPE) i*j) / ni;
 }
 
 
@@ -95,10 +90,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_syr2k_StrictFP(int ni, int nj,
                       DATA_TYPE alpha,
@@ -147,7 +138,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -159,18 +149,14 @@
   DATA_TYPE alpha;
   DATA_TYPE beta;
   POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NI,NI,ni,ni);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(C_StrictFP,DATA_TYPE,NI,NI,ni,ni);
-#endif
   POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,ni,nj);
   POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NI,NJ,ni,nj);
 
   /* Initialize array(s). */
   init_array (ni, nj, &alpha, &beta,
 	      POLYBENCH_ARRAY(C),
-#if !FMA_DISABLED
 	      POLYBENCH_ARRAY(C_StrictFP),
-#endif
 	      POLYBENCH_ARRAY(A),
 	      POLYBENCH_ARRAY(B));
 
@@ -188,11 +174,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(ni, POLYBENCH_ARRAY(C)));
-#else
   kernel_syr2k_StrictFP(ni, nj,
                         alpha, beta,
                         POLYBENCH_ARRAY(C_StrictFP),
@@ -205,13 +186,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(ni, POLYBENCH_ARRAY(C_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(C);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(C_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(A);
   POLYBENCH_FREE_ARRAY(B);
 
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c
index fb81b00..cc8483a 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c
@@ -24,9 +24,7 @@
 		DATA_TYPE *alpha,
 		DATA_TYPE *beta,
 		DATA_TYPE POLYBENCH_2D(C,NI,NI,ni,ni),
-#if !FMA_DISABLED
 		DATA_TYPE POLYBENCH_2D(C_StrictFP,NI,NI,ni,ni),
-#endif
 		DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj))
 {
 #pragma STDC FP_CONTRACT OFF
@@ -39,10 +37,7 @@
       A[i][j] = ((DATA_TYPE) i*j) / ni;
   for (i = 0; i < ni; i++)
     for (j = 0; j < ni; j++)
-#if !FMA_DISABLED
-      C_StrictFP[i][j] =
-#endif
-	      C[i][j] = ((DATA_TYPE) i*j) / ni;
+      C_StrictFP[i][j] = C[i][j] = ((DATA_TYPE) i*j) / ni;
 }
 
 
@@ -88,10 +83,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_syrk_StrictFP(int ni, int nj,
                           DATA_TYPE alpha,
@@ -136,7 +127,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -148,17 +138,12 @@
   DATA_TYPE alpha;
   DATA_TYPE beta;
   POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NI,NI,ni,ni);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(C_StrictFP,DATA_TYPE,NI,NI,ni,ni);
-#endif
   POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,ni,nj);
 
   /* Initialize array(s). */
   init_array (ni, nj, &alpha, &beta, POLYBENCH_ARRAY(C),
-#if !FMA_DISABLED
-              POLYBENCH_ARRAY(C_StrictFP),
-#endif
-	      POLYBENCH_ARRAY(A));
+              POLYBENCH_ARRAY(C_StrictFP), POLYBENCH_ARRAY(A));
 
   /* Start timer. */
   polybench_start_instruments;
@@ -170,11 +155,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(ni, POLYBENCH_ARRAY(C)));
-#else
   kernel_syrk_StrictFP(ni, nj, alpha, beta, POLYBENCH_ARRAY(C_StrictFP),
                        POLYBENCH_ARRAY(A));
 
@@ -184,13 +164,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(ni, POLYBENCH_ARRAY(C_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(C);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(C_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(A);
 
   return 0;
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/CMakeLists.txt
index d6da32e..9b102d9 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/CMakeLists.txt
@@ -1,9 +1,5 @@
 set(POLYBENCH_UTILS SingleSource/Benchmarks/Polybench/utilities )
 list(APPEND CFLAGS -I ${CMAKE_SOURCE_DIR}/${POLYBENCH_UTILS} -DPOLYBENCH_DUMP_ARRAYS)
 set(HASH_PROGRAM_OUTPUT 1)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c
index 9d434b5..cc684a9 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c
@@ -23,9 +23,7 @@
 void init_array(int n,
 		DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
 		DATA_TYPE POLYBENCH_1D(x,N,n),
-#if !FMA_DISABLED
 		DATA_TYPE POLYBENCH_1D(x_StrictFP,N,n),
-#endif
 		DATA_TYPE POLYBENCH_1D(c,N,n))
 {
 #pragma STDC FP_CONTRACT OFF
@@ -44,11 +42,7 @@
   */
   for (i = 0; i < n; i++)
     {
-      c[i] =
-#if !FMA_DISABLED
-	      x_StrictFP[i] = 
-#endif
-	      x[i] = ((DATA_TYPE) i+n) / n;
+      c[i] = x_StrictFP[i] = x[i] = ((DATA_TYPE) i+n) / n;
       for (j = 0; j < n; j++)
       	A[i][j] = ((DATA_TYPE) i*j+n) / n;
     }
@@ -94,10 +88,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_trisolv_StrictFP(int n,
                         DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
@@ -138,7 +128,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -148,18 +137,13 @@
   /* Variable declaration/allocation. */
   POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
   POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, N, n);
-#if !FMA_DISABLED
   POLYBENCH_1D_ARRAY_DECL(x_StrictFP, DATA_TYPE, N, n);
-#endif
   POLYBENCH_1D_ARRAY_DECL(c, DATA_TYPE, N, n);
 
 
   /* Initialize array(s). */
   init_array (n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(x),
-#if !FMA_DISABLED
-              POLYBENCH_ARRAY(x_StrictFP),
-#endif
-	      POLYBENCH_ARRAY(c));
+              POLYBENCH_ARRAY(x_StrictFP), POLYBENCH_ARRAY(c));
 
   /* Start timer. */
   polybench_start_instruments;
@@ -171,24 +155,16 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(x)));
-#else
   kernel_trisolv (n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(x_StrictFP), POLYBENCH_ARRAY(c));
 
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(x_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
   POLYBENCH_FREE_ARRAY(x);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(x_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(c);
 
   return 0;
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/CMakeLists.txt
index 66ab016..cc33024 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/CMakeLists.txt
@@ -3,10 +3,6 @@
 if(SMALL_PROBLEM_SIZE)
   list(APPEND CFLAGS -DSMALL_DATASET)
 endif()
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c
index db775b1..5309af9 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c
@@ -23,11 +23,8 @@
 void init_array(int ni,
 		DATA_TYPE *alpha,
 		DATA_TYPE POLYBENCH_2D(A,NI,NI,ni,ni),
-		DATA_TYPE POLYBENCH_2D(B,NI,NI,ni,ni)
-#if !FMA_DISABLED
-                , DATA_TYPE POLYBENCH_2D(B_StrictFP,NI,NI,ni,ni)
-#endif
-		)
+		DATA_TYPE POLYBENCH_2D(B,NI,NI,ni,ni),
+                DATA_TYPE POLYBENCH_2D(B_StrictFP,NI,NI,ni,ni))
 {
 #pragma STDC FP_CONTRACT OFF
   int i, j;
@@ -36,10 +33,7 @@
   for (i = 0; i < ni; i++)
     for (j = 0; j < ni; j++) {
       A[i][j] = ((DATA_TYPE) i*j) / ni;
-#if !FMA_DISABLED
-      B_StrictFP[i][j] =
-#endif
-	      B[i][j] = ((DATA_TYPE) i*j) / ni;
+      B_StrictFP[i][j] = B[i][j] = ((DATA_TYPE) i*j) / ni;
     }
 }
 
@@ -82,10 +76,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_trmm_StrictFP(int ni,
                      DATA_TYPE alpha,
@@ -126,7 +116,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -137,16 +126,11 @@
   DATA_TYPE alpha;
   POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NI,ni,ni);
   POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NI,NI,ni,ni);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(B_StrictFP,DATA_TYPE,NI,NI,ni,ni);
-#endif
 
   /* Initialize array(s). */
-  init_array (ni, &alpha, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B)
-#if !FMA_DISABLED
-              , POLYBENCH_ARRAY(B_StrictFP)
-#endif
-	      );
+  init_array (ni, &alpha, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B),
+              POLYBENCH_ARRAY(B_StrictFP));
 
   /* Start timer. */
   polybench_start_instruments;
@@ -158,11 +142,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(ni, POLYBENCH_ARRAY(B)));
-#else
   kernel_trmm_StrictFP(ni, alpha, POLYBENCH_ARRAY(A),
                        POLYBENCH_ARRAY(B_StrictFP));
 
@@ -172,7 +151,6 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(ni, POLYBENCH_ARRAY(B_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c
index 294f4bf..3cc6880 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c
@@ -92,10 +92,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static
 void kernel_durbin_StrictFP(int n,
                             DATA_TYPE POLYBENCH_2D(y,N,N,n,n),
@@ -148,7 +144,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -162,9 +157,7 @@
   POLYBENCH_1D_ARRAY_DECL(beta, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(r, DATA_TYPE, N, n);
   POLYBENCH_1D_ARRAY_DECL(out, DATA_TYPE, N, n);
-#if !FMA_DISABLED
   POLYBENCH_1D_ARRAY_DECL(out_StrictFP, DATA_TYPE, N, n);
-#endif
 
 
   /* Initialize array(s). */
@@ -191,11 +184,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(out)));
-#else
   init_array (n,
 	      POLYBENCH_ARRAY(y),
 	      POLYBENCH_ARRAY(sum),
@@ -217,7 +205,6 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(out_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(y);
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c
index 30b40c3..c94db51 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c
@@ -81,10 +81,6 @@
   *out = out_l;
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_dynprog_StrictFP(int tsteps, int length,
                         DATA_TYPE POLYBENCH_2D(c,LENGTH,LENGTH,length,length),
@@ -135,7 +131,6 @@
   }
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -144,10 +139,7 @@
   int tsteps = TSTEPS;
 
   /* Variable declaration/allocation. */
-  DATA_TYPE out;
-#if !FMA_DISABLED
-  DATA_TYPE out_StrictFP;
-#endif
+  DATA_TYPE out, out_StrictFP;
   POLYBENCH_3D_ARRAY_DECL(sum_c,DATA_TYPE,LENGTH,LENGTH,LENGTH,length,length,length);
   POLYBENCH_2D_ARRAY_DECL(c,DATA_TYPE,LENGTH,LENGTH,length,length);
   POLYBENCH_2D_ARRAY_DECL(W,DATA_TYPE,LENGTH,LENGTH,length,length);
@@ -169,11 +161,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(out));
-#else
   init_array (length, POLYBENCH_ARRAY(c), POLYBENCH_ARRAY(W));
   kernel_dynprog (tsteps, length,
 		  POLYBENCH_ARRAY(c),
@@ -187,7 +174,6 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(out_StrictFP));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(sum_c);
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/CMakeLists.txt
index 66ab016..cc33024 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/CMakeLists.txt
@@ -3,10 +3,6 @@
 if(SMALL_PROBLEM_SIZE)
   list(APPEND CFLAGS -DSMALL_DATASET)
 endif()
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c
index 253e722..4240b01 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c
@@ -120,10 +120,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_gramschmidt_StrictFP(int ni, int nj,
                             DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj),
@@ -178,7 +174,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -190,11 +185,9 @@
   POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,ni,nj);
   POLYBENCH_2D_ARRAY_DECL(R,DATA_TYPE,NJ,NJ,nj,nj);
   POLYBENCH_2D_ARRAY_DECL(Q,DATA_TYPE,NI,NJ,ni,nj);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(A_StrictFP,DATA_TYPE,NI,NJ,ni,nj);
   POLYBENCH_2D_ARRAY_DECL(R_StrictFP,DATA_TYPE,NJ,NJ,nj,nj);
   POLYBENCH_2D_ARRAY_DECL(Q_StrictFP,DATA_TYPE,NI,NJ,ni,nj);
-#endif
 
   /* Initialize array(s). */
   init_array (ni, nj,
@@ -215,14 +208,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(ni, nj,
-                                    POLYBENCH_ARRAY(A),
-                                    POLYBENCH_ARRAY(R),
-                                    POLYBENCH_ARRAY(Q)));
-#else
   init_array (ni, nj,
 	      POLYBENCH_ARRAY(A_StrictFP),
 	      POLYBENCH_ARRAY(R_StrictFP),
@@ -245,17 +230,14 @@
                                     POLYBENCH_ARRAY(A_StrictFP),
                                     POLYBENCH_ARRAY(R_StrictFP),
                                     POLYBENCH_ARRAY(Q_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
   POLYBENCH_FREE_ARRAY(R);
   POLYBENCH_FREE_ARRAY(Q);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(A_StrictFP);
   POLYBENCH_FREE_ARRAY(R_StrictFP);
   POLYBENCH_FREE_ARRAY(Q_StrictFP);
-#endif
 
   return 0;
 }
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c
index 538faf5..dad2f71 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c
@@ -80,10 +80,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_lu_StrictFP(int n,
                    DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
@@ -131,7 +127,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -140,9 +135,7 @@
 
   /* Variable declaration/allocation. */
   POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(A_StrictFP, DATA_TYPE, N, N, n, n);
-#endif
 
   /* Initialize array(s). */
   init_array (n, POLYBENCH_ARRAY(A));
@@ -157,11 +150,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
-#else
   init_array (n, POLYBENCH_ARRAY(A_StrictFP));
   kernel_lu (n, POLYBENCH_ARRAY(A_StrictFP));
   if (!check_FP(n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(A_StrictFP)))
@@ -170,13 +158,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(A_StrictFP);
-#endif
 
   return 0;
 }
diff --git a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c
index 0055335..1bfbebc 100644
--- a/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c
+++ b/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c
@@ -109,10 +109,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_ludcmp_StrictFP(int n,
                        DATA_TYPE POLYBENCH_2D(A,N+1,N+1,n+1,n+1),
@@ -183,7 +179,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -194,9 +189,7 @@
   POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N+1, N+1, n+1, n+1);
   POLYBENCH_1D_ARRAY_DECL(b, DATA_TYPE, N+1, n+1);
   POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, N+1, n+1);
-#if !FMA_DISABLED
   POLYBENCH_1D_ARRAY_DECL(x_StrictFP, DATA_TYPE, N+1, n+1);
-#endif
   POLYBENCH_1D_ARRAY_DECL(y, DATA_TYPE, N+1, n+1);
 
 
@@ -221,11 +214,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(X)));
-#else
   init_array (n,
 	      POLYBENCH_ARRAY(A),
 	      POLYBENCH_ARRAY(b),
@@ -242,15 +230,12 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(x_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
   POLYBENCH_FREE_ARRAY(b);
   POLYBENCH_FREE_ARRAY(x);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(x_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(y);
 
   return 0;
diff --git a/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c b/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c
index 4668a69..9d1d991 100644
--- a/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c
+++ b/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c
@@ -71,10 +71,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_floyd_warshall_StrictFP(int n, DATA_TYPE POLYBENCH_2D(path,N,N,n,n))
 {
@@ -114,7 +110,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -123,9 +118,7 @@
 
   /* Variable declaration/allocation. */
   POLYBENCH_2D_ARRAY_DECL(path, DATA_TYPE, N, N, n, n);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(path_StrictFP, DATA_TYPE, N, N, n, n);
-#endif
 
   /* Initialize array(s). */
   init_array (n, POLYBENCH_ARRAY(path));
@@ -140,11 +133,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(path)));
-#else
   init_array (n, POLYBENCH_ARRAY(path_StrictFP));
   kernel_floyd_warshall_StrictFP(n, POLYBENCH_ARRAY(path_StrictFP));
   if (!check_FP(n, POLYBENCH_ARRAY(path), POLYBENCH_ARRAY(path_StrictFP)))
@@ -153,13 +141,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(path_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(path);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(path_StrictFP);
-#endif
 
   return 0;
 }
diff --git a/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c b/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c
index a0aa10b..b183d2d 100644
--- a/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c
+++ b/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c
@@ -100,10 +100,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_reg_detect_StrictFP(int niter, int maxgrid, int length,
                            DATA_TYPE POLYBENCH_2D(sum_tang,MAXGRID,MAXGRID,maxgrid,maxgrid),
@@ -166,7 +162,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -179,9 +174,7 @@
   POLYBENCH_2D_ARRAY_DECL(sum_tang, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid);
   POLYBENCH_2D_ARRAY_DECL(mean, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid);
   POLYBENCH_2D_ARRAY_DECL(path, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(path_StrictFP, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid);
-#endif
   POLYBENCH_3D_ARRAY_DECL(diff, DATA_TYPE, MAXGRID, MAXGRID, LENGTH, maxgrid, maxgrid, length);
   POLYBENCH_3D_ARRAY_DECL(sum_diff, DATA_TYPE, MAXGRID, MAXGRID, LENGTH, maxgrid, maxgrid, length);
 
@@ -206,11 +199,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(maxgrid, POLYBENCH_ARRAY(path)));
-#else
   init_array (maxgrid,
 	      POLYBENCH_ARRAY(sum_tang),
 	      POLYBENCH_ARRAY(mean),
@@ -227,15 +215,12 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(maxgrid, POLYBENCH_ARRAY(path_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(sum_tang);
   POLYBENCH_FREE_ARRAY(mean);
   POLYBENCH_FREE_ARRAY(path);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(path_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(diff);
   POLYBENCH_FREE_ARRAY(sum_diff);
 
diff --git a/SingleSource/Benchmarks/Polybench/stencils/adi/CMakeLists.txt b/SingleSource/Benchmarks/Polybench/stencils/adi/CMakeLists.txt
index 66ab016..cc33024 100644
--- a/SingleSource/Benchmarks/Polybench/stencils/adi/CMakeLists.txt
+++ b/SingleSource/Benchmarks/Polybench/stencils/adi/CMakeLists.txt
@@ -3,10 +3,6 @@
 if(SMALL_PROBLEM_SIZE)
   list(APPEND CFLAGS -DSMALL_DATASET)
 endif()
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-
 set(HASH_PROGRAM_OUTPUT 1)
 add_definitions(-DFP_ABSTOLERANCE=1e-5)
 llvm_singlesource()
diff --git a/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c b/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c
index 402e461..962ad1b 100644
--- a/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c
+++ b/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c
@@ -102,10 +102,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_adi_StrictFP(int tsteps,
                     int n,
@@ -171,7 +167,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -181,9 +176,7 @@
 
   /* Variable declaration/allocation. */
   POLYBENCH_2D_ARRAY_DECL(X, DATA_TYPE, N, N, n, n);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(X_StrictFP, DATA_TYPE, N, N, n, n);
-#endif
   POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
   POLYBENCH_2D_ARRAY_DECL(B, DATA_TYPE, N, N, n, n);
 
@@ -202,11 +195,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(X)));
-#else
   init_array (n, POLYBENCH_ARRAY(X_StrictFP), POLYBENCH_ARRAY(A),
               POLYBENCH_ARRAY(B));
   kernel_adi (tsteps, n, POLYBENCH_ARRAY(X_StrictFP),
@@ -217,13 +205,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(X_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(X);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(X_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(A);
   POLYBENCH_FREE_ARRAY(B);
 
diff --git a/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c b/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c
index bb9e954..89531e8 100644
--- a/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c
+++ b/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c
@@ -104,10 +104,6 @@
 #pragma endscop
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_fdtd_2d_StrictFP(int tmax,
                         int nx,
@@ -161,7 +157,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -174,11 +169,9 @@
   POLYBENCH_2D_ARRAY_DECL(ex,DATA_TYPE,NX,NY,nx,ny);
   POLYBENCH_2D_ARRAY_DECL(ey,DATA_TYPE,NX,NY,nx,ny);
   POLYBENCH_2D_ARRAY_DECL(hz,DATA_TYPE,NX,NY,nx,ny);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(ex_StrictFP,DATA_TYPE,NX,NY,nx,ny);
   POLYBENCH_2D_ARRAY_DECL(ey_StrictFP,DATA_TYPE,NX,NY,nx,ny);
   POLYBENCH_2D_ARRAY_DECL(hz_StrictFP,DATA_TYPE,NX,NY,nx,ny);
-#endif
   POLYBENCH_1D_ARRAY_DECL(_fict_,DATA_TYPE,TMAX,tmax);
 
   /* Initialize array(s). */
@@ -203,13 +196,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(nx, ny, POLYBENCH_ARRAY(ex),
-				    POLYBENCH_ARRAY(ey),
-				    POLYBENCH_ARRAY(hz)));
-#else
   init_array (tmax, nx, ny,
 	      POLYBENCH_ARRAY(ex_StrictFP),
 	      POLYBENCH_ARRAY(ey_StrictFP),
@@ -226,17 +212,14 @@
   polybench_prevent_dce(print_array(nx, ny, POLYBENCH_ARRAY(ex_StrictFP),
 				    POLYBENCH_ARRAY(ey_StrictFP),
 				    POLYBENCH_ARRAY(hz_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(ex);
   POLYBENCH_FREE_ARRAY(ey);
   POLYBENCH_FREE_ARRAY(hz);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(ex_StrictFP);
   POLYBENCH_FREE_ARRAY(ey_StrictFP);
   POLYBENCH_FREE_ARRAY(hz_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(_fict_);
 
   return 0;
diff --git a/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c b/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c
index 63bccad..1fc0ce0 100644
--- a/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c
+++ b/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c
@@ -166,10 +166,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_fdtd_apml_StrictFP(int cz,
                           int cxm,
@@ -257,7 +253,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -277,12 +272,10 @@
   POLYBENCH_3D_ARRAY_DECL(Ex,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
   POLYBENCH_3D_ARRAY_DECL(Ey,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
   POLYBENCH_3D_ARRAY_DECL(Hz,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
-#if !FMA_DISABLED
   POLYBENCH_3D_ARRAY_DECL(Bza_StrictFP,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
   POLYBENCH_3D_ARRAY_DECL(Ex_StrictFP,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
   POLYBENCH_3D_ARRAY_DECL(Ey_StrictFP,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
   POLYBENCH_3D_ARRAY_DECL(Hz_StrictFP,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
-#endif
   POLYBENCH_1D_ARRAY_DECL(czm,DATA_TYPE,CZ+1,cz+1);
   POLYBENCH_1D_ARRAY_DECL(czp,DATA_TYPE,CZ+1,cz+1);
   POLYBENCH_1D_ARRAY_DECL(cxmh,DATA_TYPE,CXM+1,cxm+1);
@@ -328,15 +321,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(cz, cxm, cym,
-  				    POLYBENCH_ARRAY(Bza),
-  				    POLYBENCH_ARRAY(Ex),
-  				    POLYBENCH_ARRAY(Ey),
-  				    POLYBENCH_ARRAY(Hz)));
-#else
   init_array (cz, cxm, cym, &mui, &ch,
   	      POLYBENCH_ARRAY(Ax),
   	      POLYBENCH_ARRAY(Ry),
@@ -380,7 +364,6 @@
   				    POLYBENCH_ARRAY(Ex_StrictFP),
   				    POLYBENCH_ARRAY(Ey_StrictFP),
   				    POLYBENCH_ARRAY(Hz_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(Ax);
@@ -391,12 +374,10 @@
   POLYBENCH_FREE_ARRAY(Ex);
   POLYBENCH_FREE_ARRAY(Ey);
   POLYBENCH_FREE_ARRAY(Hz);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(Bza_StrictFP);
   POLYBENCH_FREE_ARRAY(Ex_StrictFP);
   POLYBENCH_FREE_ARRAY(Ey_StrictFP);
   POLYBENCH_FREE_ARRAY(Hz_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(czm);
   POLYBENCH_FREE_ARRAY(czp);
   POLYBENCH_FREE_ARRAY(cxmh);
diff --git a/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c b/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c
index ec544d4..df5ab1a 100644
--- a/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c
+++ b/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c
@@ -74,10 +74,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_jacobi_1d_imper_StrictFP(int tsteps,
                                 int n,
@@ -118,7 +114,6 @@
 
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -128,9 +123,7 @@
 
   /* Variable declaration/allocation. */
   POLYBENCH_1D_ARRAY_DECL(A, DATA_TYPE, N, n);
-#if !FMA_DISABLED
   POLYBENCH_1D_ARRAY_DECL(A_StrictFP, DATA_TYPE, N, n);
-#endif
   POLYBENCH_1D_ARRAY_DECL(B, DATA_TYPE, N, n);
 
 
@@ -147,11 +140,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
-#else
   init_array (n, POLYBENCH_ARRAY(A_StrictFP), POLYBENCH_ARRAY(B));
   kernel_jacobi_1d_imper (tsteps, n, POLYBENCH_ARRAY(A_StrictFP),
                           POLYBENCH_ARRAY(B));
@@ -161,7 +149,6 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
diff --git a/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c b/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c
index 9d03392..bc52807 100644
--- a/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c
+++ b/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c
@@ -79,10 +79,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_jacobi_2d_imper_StrictFP(int tsteps,
                                 int n,
@@ -127,7 +123,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -137,9 +132,7 @@
 
   /* Variable declaration/allocation. */
   POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(A_StrictFP, DATA_TYPE, N, N, n, n);
-#endif
   POLYBENCH_2D_ARRAY_DECL(B, DATA_TYPE, N, N, n, n);
 
 
@@ -156,11 +149,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
-#else
   init_array (n, POLYBENCH_ARRAY(A_StrictFP), POLYBENCH_ARRAY(B));
   kernel_jacobi_2d_imper_StrictFP(tsteps, n, POLYBENCH_ARRAY(A_StrictFP),
                                   POLYBENCH_ARRAY(B));
@@ -170,13 +158,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(A_StrictFP);
-#endif
   POLYBENCH_FREE_ARRAY(B);
 
   return 0;
diff --git a/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c b/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c
index 89e65ae..189122a 100644
--- a/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c
+++ b/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c
@@ -71,10 +71,6 @@
 
 }
 
-#if !FMA_DISABLED
-// NOTE: FMA_DISABLED is true for targets where FMA contraction causes
-// discrepancies which cause the accuracy checks to fail.
-// In this case, the test runs with the option -ffp-contract=off
 static void
 kernel_seidel_2d_StrictFP(int tsteps,
                           int n,
@@ -115,7 +111,6 @@
   /* All elements are within the allowed FP_ABSTOLERANCE error margin.  */
   return 1;
 }
-#endif
 
 int main(int argc, char** argv)
 {
@@ -125,9 +120,7 @@
 
   /* Variable declaration/allocation. */
   POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
-#if !FMA_DISABLED
   POLYBENCH_2D_ARRAY_DECL(A_StrictFP, DATA_TYPE, N, N, n, n);
-#endif
 
 
   /* Initialize array(s). */
@@ -143,11 +136,6 @@
   polybench_stop_instruments;
   polybench_print_instruments;
 
-#if FMA_DISABLED
-  /* Prevent dead-code elimination. All live-out data must be printed
-     by the function call in argument. */
-  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
-#else
   init_array (n, POLYBENCH_ARRAY(A_StrictFP));
   kernel_seidel_2d (tsteps, n, POLYBENCH_ARRAY(A_StrictFP));
 
@@ -157,13 +145,10 @@
   /* Prevent dead-code elimination. All live-out data must be printed
      by the function call in argument. */
   polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A_StrictFP)));
-#endif
 
   /* Be clean. */
   POLYBENCH_FREE_ARRAY(A);
-#if !FMA_DISABLED
   POLYBENCH_FREE_ARRAY(A_StrictFP);
-#endif
 
   return 0;
 }
diff --git a/SingleSource/UnitTests/Vector/SSE/CMakeLists.txt b/SingleSource/UnitTests/Vector/SSE/CMakeLists.txt
index eda39ed..cc008b1 100644
--- a/SingleSource/UnitTests/Vector/SSE/CMakeLists.txt
+++ b/SingleSource/UnitTests/Vector/SSE/CMakeLists.txt
@@ -2,7 +2,4 @@
 list(APPEND LDFLAGS -lm)
 list(APPEND TARGET_FLAGS -msse2)
 list(APPEND LCCFLAGS -msse2)
-# Floating point contraction must be suppressed due to accuracy issues
-list(APPEND CXXFLAGS -ffp-contract=off -DFMA_DISABLED=1)
-list(APPEND CFLAGS -ffp-contract=off -DFMA_DISABLED=1)
 llvm_singlesource(PREFIX "Vector-")