s390x: allow clang to emit fused multiply-adds (replicates gcc's default behavior)
authorMarius Hillenbrand <mhillen@linux.ibm.com>
Tue, 1 Sep 2020 13:09:32 +0000 (15:09 +0200)
committerMarius Hillenbrand <mhillen@linux.ibm.com>
Wed, 2 Sep 2020 11:49:31 +0000 (13:49 +0200)
gcc's default setting for floating-point expression contraction is
"fast", which allows the compiler to emit fused multiply adds instead of
separate multiplies and adds (amongst others). Fused multiply-adds,
which assembly kernels typically apply, also bring a significant
performance advantage to the C implementation for matrix-matrix
multiplication on s390x. To enable that performance advantage for builds
with clang, add -ffp-contract=fast to the compiler options.

Signed-off-by: Marius Hillenbrand <mhillen@linux.ibm.com>
Makefile.zarch

index be1e34f..b841d9b 100644 (file)
@@ -8,3 +8,9 @@ ifeq ($(CORE), Z14)
 CCOMMON_OPT += -march=z14 -mzvector -O3
 FCOMMON_OPT += -march=z14 -mzvector
 endif
+
+# Enable floating-point expression contraction for clang, since it is the
+# default for gcc
+ifeq ($(C_COMPILER), CLANG)
+CCOMMON_OPT += -ffp-contract=fast
+endif