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-")