From fab76b1c4fa21f16d009d756225d6876df260c40 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Fri, 9 Aug 2013 17:41:11 -0700 Subject: [PATCH] Set FTZ and DAZ flags by default for all JACK client threads. --- nonlib/JACK/Client.C | 9 +++++- wscript | 77 ++++++++++++++++++++++++-------------------- 2 files changed, 50 insertions(+), 36 deletions(-) diff --git a/nonlib/JACK/Client.C b/nonlib/JACK/Client.C index 380d1c9..489f439 100644 --- a/nonlib/JACK/Client.C +++ b/nonlib/JACK/Client.C @@ -26,7 +26,9 @@ #include "debug.h" - +#ifdef __SSE2_MATH__ +#include +#endif namespace JACK { @@ -113,6 +115,11 @@ namespace JACK void Client::thread_init ( void *arg ) { +#if __SSE2_MATH__ + /* set FTZ and DAZ flags */ + _mm_setcsr(_mm_getcsr() | 0x8040); +#endif + ((Client*)arg)->thread_init(); } diff --git a/wscript b/wscript index 4535b5f..8ec772b 100644 --- a/wscript +++ b/wscript @@ -19,6 +19,8 @@ def options(opt): # help="Link to system-installed shared NTK instead of bundled version") opt.add_option('--enable-debug', action='store_true', default=False, dest='debug', help='Build for debugging') + opt.add_option('--disable-sse', action='store_false', default=True, dest='sse', + help='Disable SSE optimization') opt.add_option('--project', action='store', default=False, dest='project', help='Limit build to a single project (' + ', '.join( projects ) + ')') @@ -33,24 +35,59 @@ def configure(conf): conf.load('gccdeps') conf.line_just = 52 + conf.env['LIB_PTHREAD'] = ['pthread'] + conf.env['LIB_DL'] = ['dl'] + conf.env['LIB_M'] = ['m'] + + # NTK_EXTRA_FLAGS='' + # if not Options.options.use_system_ntk: + # print 'Using bundled NTK' + # os.environ['PKG_CONFIG_PATH'] = 'lib/ntk/build/:' + os.environ.get('PKG_CONFIG_PATH','') + # NTK_EXTRA_FLAGS='--static' + # PWD = os.environ.get('PWD','') + # os.environ['PATH'] = PWD + '/lib/ntk/build/fluid:' + os.environ.get('PATH','') + + conf.check_cfg(package='ntk', uselib_store='NTK', args='--cflags --libs', + atleast_version='1.3.0', mandatory=True) + conf.check_cfg(package='ntk_images', uselib_store='NTK_IMAGES', args=' --cflags --libs', + atleast_version='1.3.0', mandatory=True) + + conf.find_program('ntk-fluid', var='NTK_FLUID') + + conf.check_cfg(package='jack', uselib_store='JACK', args="--cflags --libs", + atleast_version='0.103.0', mandatory=True) + + conf.check_cfg(package='liblo', uselib_store='LIBLO',args="--cflags --libs", + atleast_version='0.26', mandatory=True) + +### + + for i in common: + conf.recurse(i) + optimization_flags = [ "-O3", "-fomit-frame-pointer", "-ffast-math", - "-msse", - "-mfpmath=sse", - "-ftree-vectorize", -# "-fstrength-reduce", "-pipe" ] + + if Options.options.sse: + print('Using SSE optimization') + optimization_flags.extend( [ + "-msse2", + "-mfpmath=sse", + "-ftree-vectorize" ] ) + conf.define( 'USE_SSE', 1 ) debug_flags = [ '-O0', '-g3' ] - if Options.options.debug: + print('Building for debugging') conf.env.append_value('CFLAGS', debug_flags ) conf.env.append_value('CXXFLAGS', debug_flags ) else: + print('Building for performance') conf.env.append_value('CFLAGS', optimization_flags ) conf.env.append_value('CXXFLAGS', optimization_flags ) conf.define( 'NDEBUG', 1 ) @@ -70,36 +107,6 @@ def configure(conf): conf.env.append_value('CFLAGS', global_flags ) conf.env.append_value('CXXFLAGS', global_flags ) - conf.env['LIB_PTHREAD'] = ['pthread'] - conf.env['LIB_DL'] = ['dl'] - conf.env['LIB_M'] = ['m'] - - # NTK_EXTRA_FLAGS='' - # if not Options.options.use_system_ntk: - # print 'Using bundled NTK' - # os.environ['PKG_CONFIG_PATH'] = 'lib/ntk/build/:' + os.environ.get('PKG_CONFIG_PATH','') - # NTK_EXTRA_FLAGS='--static' - # PWD = os.environ.get('PWD','') - # os.environ['PATH'] = PWD + '/lib/ntk/build/fluid:' + os.environ.get('PATH','') - - conf.check_cfg(package='ntk', uselib_store='NTK', args='--cflags --libs', - atleast_version='1.3.0', mandatory=True) - conf.check_cfg(package='ntk_images', uselib_store='NTK_IMAGES', args=' --cflags --libs', - atleast_version='1.3.0', mandatory=True) - - conf.find_program('ntk-fluid', var='NTK_FLUID') - - conf.check_cfg(package='jack', uselib_store='JACK', args="--cflags --libs", - atleast_version='0.103.0', mandatory=True) - - conf.check_cfg(package='liblo', uselib_store='LIBLO',args="--cflags --libs", - atleast_version='0.26', mandatory=True) - - -### - - for i in common: - conf.recurse(i) conf.env.PROJECT = conf.options.project