/ src / optmized / vec / SConscript
SConscript
 1  # Copyright (C) 2019-2020 Advanced Micro Devices, Inc. All rights reserved.
 2  #
 3  # Redistribution and use in source and binary forms, with or without modification,
 4  # are permitted provided that the following conditions are met:
 5  # 1. Redistributions of source code must retain the above copyright notice,
 6  #    this list of conditions and the following disclaimer.
 7  # 2. Redistributions in binary form must reproduce the above copyright notice,
 8  #    this list of conditions and the following disclaimer in the documentation
 9  #    and/or other materials provided with the distribution.
10  # 3. Neither the name of the copyright holder nor the names of its contributors
11  #    may be used to endorse or promote products derived from this software without
12  #    specific prior written permission.
13  #
14  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17  # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
18  # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
19  # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
20  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
21  # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
23  # POSSIBILITY OF SUCH DAMAGE.
24  
25  # Inherit global environment
26  Import('env')
27  from os.path import join as joinpath
28  
29  builddir = joinpath(env['BUILDROOT'], 'src', 'optmized')
30  
31  e = env.Clone()
32  
33  # These rearrangements are not value-safe:
34  #	 (a ⊕ b) ⊕ c ⇒ a ⊕ (b ⊕ c)
35  #	 a ⊗ (b ⊕ c) ⇒ (a ⊗ b) ⊕ (a ⊕ c)
36  # 
37  # To Disallow these changes in gcc remove -ffast-math
38  if '-ffast-math' in e['CFLAGS']:
39      e['CFLAGS'].remove('-ffast-math')
40  
41  incpaths = [
42      '#' + joinpath(Dir('.').srcnode().path),
43      '#' + joinpath(Dir('.').srcnode().path, 'include')
44  ]
45  
46  e.Append(
47      CFLAGS = ['-O3', '-fPIC', '-flax-vector-conversions'],
48      CPPPATH = incpaths
49  )
50  
51  experimental_src = []
52  
53  source = Glob('*.c', exclude=experimental_src)
54  
55  objs = e.StaticObject(source)
56  
57  Return('objs')