radeonsi: tell LLVM not to remove s_barrier instructions
[mesa.git] / src / gallium / drivers / swr / SConscript
index efcc686aaa709b09f7ad06e9fec285dd1b2aa19b..5e3784b51f472002c46c6482b4b3310306a121e9 100644 (file)
@@ -17,11 +17,6 @@ if env['LLVM_VERSION'] < distutils.version.LooseVersion('3.9'):
     env['swr'] = False
     Return()
 
-if env['platform'] != 'windows':
-    print "warning: swr scons build only supports windows: not building swr"
-    env['swr'] = False
-    Return()
-
 env.MSVC2013Compat()
 
 env = env.Clone()
@@ -43,59 +38,74 @@ loadersource = env.ParseSourceList('Makefile.sources', [
 
 if not env['msvc'] :
     env.Append(CCFLAGS = [
-        '-std=c++11',
+        '-std=c++14',
     ])
 
 swrroot = '#src/gallium/drivers/swr/'
+bldroot = Dir('.').abspath
 
 env.CodeGenerate(
     target = 'rasterizer/codegen/gen_knobs.cpp',
     script = swrroot + 'rasterizer/codegen/gen_knobs.py',
-    source = 'rasterizer/codegen/templates/knobs_template.cpp',
-    command = python_cmd + ' $SCRIPT --input $SOURCE --output $TARGET --gen_cpp'
+    source = '',
+    command = python_cmd + ' $SCRIPT --output $TARGET --gen_cpp'
 )
+Depends('rasterizer/codegen/gen_knobs.cpp',
+        swrroot + 'rasterizer/codegen/templates/gen_knobs.cpp')
 
 env.CodeGenerate(
     target = 'rasterizer/codegen/gen_knobs.h',
     script = swrroot + 'rasterizer/codegen/gen_knobs.py',
-    source = 'rasterizer/codegen/templates/knobs_template.cpp',
-    command = python_cmd + ' $SCRIPT --input $SOURCE --output $TARGET --gen_h'
+    source = '',
+    command = python_cmd + ' $SCRIPT --output $TARGET --gen_h'
 )
+Depends('rasterizer/codegen/gen_knobs.cpp',
+        swrroot + 'rasterizer/codegen/templates/gen_knobs.cpp')
 
 env.CodeGenerate(
-    target = 'rasterizer/jitter/state_llvm.h',
+    target = 'rasterizer/jitter/gen_state_llvm.h',
     script = swrroot + 'rasterizer/codegen/gen_llvm_types.py',
     source = 'rasterizer/core/state.h',
     command = python_cmd + ' $SCRIPT --input $SOURCE --output $TARGET'
 )
+Depends('rasterizer/jitter/gen_state_llvm.h',
+        swrroot + 'rasterizer/codegen/templates/gen_llvm.hpp')
 
 env.CodeGenerate(
     target = 'rasterizer/jitter/gen_builder.hpp',
     script = swrroot + 'rasterizer/codegen/gen_llvm_ir_macros.py',
     source = os.path.join(llvm_includedir, 'llvm/IR/IRBuilder.h'),
-    command = python_cmd + ' $SCRIPT --input $SOURCE --output rasterizer/jitter --gen_h'
+    command = python_cmd + ' $SCRIPT --input $SOURCE --output ' + bldroot + '/rasterizer/jitter --gen_h'
 )
+Depends('rasterizer/jitter/gen_builder.hpp',
+        swrroot + 'rasterizer/codegen/templates/gen_builder.hpp')
 
 env.CodeGenerate(
     target = 'rasterizer/jitter/gen_builder_x86.hpp',
     script = swrroot + 'rasterizer/codegen/gen_llvm_ir_macros.py',
     source = '',
-    command = python_cmd + ' $SCRIPT --output rasterizer/jitter --gen_x86_h'
+    command = python_cmd + ' $SCRIPT --output ' + bldroot + '/rasterizer/jitter --gen_x86_h'
 )
+Depends('rasterizer/jitter/gen_builder.hpp',
+        swrroot + 'rasterizer/codegen/templates/gen_builder.hpp')
 
 env.CodeGenerate(
-    target = './swr_context_llvm.h',
+    target = './gen_swr_context_llvm.h',
     script = swrroot + 'rasterizer/codegen/gen_llvm_types.py',
     source = 'swr_context.h',
     command = python_cmd + ' $SCRIPT --input $SOURCE --output $TARGET'
 )
+Depends('rasterizer/jitter/gen_state_llvm.h',
+        swrroot + 'rasterizer/codegen/templates/gen_llvm.hpp')
 
 env.CodeGenerate(
-    target = 'rasterizer/archrast/gen_ar_event.h',
+    target = 'rasterizer/archrast/gen_ar_event.hpp',
     script = swrroot + 'rasterizer/codegen/gen_archrast.py',
     source = 'rasterizer/archrast/events.proto',
     command = python_cmd + ' $SCRIPT --proto $SOURCE --output $TARGET --gen_event_h'
 )
+Depends('rasterizer/jitter/gen_state_llvm.h',
+        swrroot + 'rasterizer/codegen/templates/gen_ar_event.hpp')
 
 env.CodeGenerate(
     target = 'rasterizer/archrast/gen_ar_event.cpp',
@@ -103,20 +113,26 @@ env.CodeGenerate(
     source = 'rasterizer/archrast/events.proto',
     command = python_cmd + ' $SCRIPT --proto $SOURCE --output $TARGET --gen_event_cpp'
 )
+Depends('rasterizer/jitter/gen_state_llvm.h',
+        swrroot + 'rasterizer/codegen/templates/gen_ar_event.cpp')
 
 env.CodeGenerate(
-    target = 'rasterizer/archrast/gen_ar_eventhandler.h',
+    target = 'rasterizer/archrast/gen_ar_eventhandler.hpp',
     script = swrroot + 'rasterizer/codegen/gen_archrast.py',
     source = 'rasterizer/archrast/events.proto',
     command = python_cmd + ' $SCRIPT --proto $SOURCE --output $TARGET --gen_eventhandler_h'
 )
+Depends('rasterizer/jitter/gen_state_llvm.h',
+        swrroot + 'rasterizer/codegen/templates/gen_ar_eventhandler.hpp')
 
 env.CodeGenerate(
-    target = 'rasterizer/archrast/gen_ar_eventhandlerfile.h',
+    target = 'rasterizer/archrast/gen_ar_eventhandlerfile.hpp',
     script = swrroot + 'rasterizer/codegen/gen_archrast.py',
     source = 'rasterizer/archrast/events.proto',
     command = python_cmd + ' $SCRIPT --proto $SOURCE --output $TARGET --gen_eventhandlerfile_h'
 )
+Depends('rasterizer/jitter/gen_state_llvm.h',
+        swrroot + 'rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp')
 
 # 5 SWR_MULTISAMPLE_TYPE_COUNT
 # 2 SWR_MSAA_SAMPLE_PATTERN_COUNT
@@ -125,16 +141,19 @@ env.CodeGenerate(
 # 2 forcedSampleCount
 # 2 canEarlyZ
 env.CodeGenerate(
-    target = 'rasterizer/core/BackendPixelRate0.cpp',
+    target = 'rasterizer/core/gen_BackendPixelRate0.cpp',
     script = swrroot + 'rasterizer/codegen/gen_backends.py',
-    command = python_cmd + ' $SCRIPT --output rasterizer/core --dim 5 2 3 2 2 2 --split 0 --cpp'
+    source = '',
+    command = python_cmd + ' $SCRIPT --outdir ' + bldroot + '/rasterizer/core --dim 5 2 3 2 2 2 --split 0 --cpp'
 )
+Depends('rasterizer/jitter/gen_state_llvm.h',
+        swrroot + 'rasterizer/codegen/templates/gen_backend.cpp')
 
 # Auto-generated .cpp files (that need to generate object files)
 built_sources = [
     'rasterizer/codegen/gen_knobs.cpp',
     'rasterizer/archrast/gen_ar_event.cpp',
-    'rasterizer/core/BackendPixelRate0.cpp',
+    'rasterizer/core/gen_BackendPixelRate0.cpp',
     ]
 
 source = built_sources
@@ -181,7 +200,7 @@ envavx2.Append(CPPDEFINES = ['KNOB_ARCH=KNOB_ARCH_AVX2'])
 if env['platform'] == 'windows':
     envavx2.Append(CCFLAGS = ['/arch:AVX2'])
 else:
-    envavx2.Append(CCFLAGS = ['-mavx2'])
+    envavx2.Append(CCFLAGS = ['-mavx2', '-mfma', '-mbmi2', '-mf16c'])
 
 swrAVX2 = envavx2.SharedLibrary(
     target = 'swrAVX2',