### ==========================================================================
### Compiler speed switches for both GCC and ICC. These settings are generally
### fast on a broad range of systems, but may be changed experimentally
+###
+### NOTE: Some versions of gcc miscompile value.h with -O2 or -O3, this is the
+### safe setup, try changing to -O3 or -O2 and verify it works for you.
### ==========================================================================
-GCCFLAGS = -O3 -msse
+GCCFLAGS = -O1 -msse
ICCFLAGS = -fast -msse
ICCFLAGS-OSX = -fast -mdynamic-no-pic
### ==========================================================================
-### Enable/disable compile for a big-endian CPU, disabled by default
+### Remove below comments to compile for a big-endian machine
### ==========================================================================
-GCCFLAGS += -DNBIGENDIAN
-ICCFLAGS += -DNBIGENDIAN
-ICCFLAGS-OSX += -DNBIGENDIAN
+#GCCFLAGS += -DBIGENDIAN
+#ICCFLAGS += -DBIGENDIAN
+#ICCFLAGS-OSX += -DBIGENDIAN
### ==========================================================================
@echo "make > Default: Compiler = g++"
@echo "make icc > Compiler = icpc"
@echo "make icc-profile > Compiler = icpc + automatic pgo-build"
+ @echo "make icc-profile-popcnt > Compiler = icpc + automatic pgo-build + popcnt-support"
@echo "make osx-ppc32 > PPC-Mac OS X 32 bit. Compiler = g++"
@echo "make osx-ppc64 > PPC-Mac OS X 64 bit. Compiler = g++"
@echo "make osx-x86 > x86-Mac OS X 32 bit. Compiler = g++"
$(MAKE) icc-profile-use
@rm -rf profdir bench.txt
+icc-profile-make-with-popcnt:
+ $(MAKE) \
+ CXX='icpc' \
+ CXXFLAGS="$(ICCFLAGS) -DUSE_POPCNT" \
+ CXXFLAGS+='-prof-gen=srcpos -prof_dir ./profdir' \
+ all
+
+icc-profile-use-with-popcnt:
+ $(MAKE) \
+ CXX='icpc' \
+ CXXFLAGS="$(ICCFLAGS) -DUSE_POPCNT" \
+ CXXFLAGS+='-prof_use -prof_dir ./profdir' \
+ all
+
+icc-profile-popcnt:
+ @rm -rf profdir
+ @mkdir profdir
+ @touch *.cpp *.h
+ $(MAKE) icc-profile-make
+ @echo ""
+ @echo "Running benchmark for pgo-build (popcnt disabled)..."
+ @$(PGOBENCH) > /dev/null
+ @touch *.cpp *.h
+ $(MAKE) icc-profile-make-with-popcnt
+ @echo ""
+ @echo "Running benchmark for pgo-build (popcnt enabled)..."
+ @$(PGOBENCH) > /dev/null
+ @echo "Benchmarks finished. Build final executable now ..."
+ @echo ""
+ @touch *.cpp *.h
+ $(MAKE) icc-profile-use-with-popcnt
+ @rm -rf profdir bench.txt
+
+
osx-ppc32:
$(MAKE) \
CXX='g++' \