Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def build_extension(self, ext):
sources = ext.sources
if sources is None or not isinstance(sources, (list, tuple)):
raise DistutilsSetupError(
"in 'ext_modules' option (extension '%s'), "
"'sources' must be present and must be "
"a list of source filenames" % ext.name)
sources = list(sources)
simd_sources = dict()
simd_sources[CCompilerCapabilities.SIMD_SSSE3] = ext.sources_ssse3
simd_sources[CCompilerCapabilities.SIMD_SSE41] = ext.sources_sse41
simd_sources[CCompilerCapabilities.SIMD_SSE42] = ext.sources_sse42
simd_sources[CCompilerCapabilities.SIMD_AVX] = ext.sources_avx
simd_sources[CCompilerCapabilities.SIMD_AVX2] = ext.sources_avx2
simd_sources[CCompilerCapabilities.SIMD_NEON32] = \
ext.sources_neon32
simd_sources[CCompilerCapabilities.SIMD_NEON64] = \
ext.sources_neon64
ext_path = self.get_ext_fullpath(ext.name)
depends = sources + ext.depends
try:
simd_sources_values = simd_sources.itervalues()
except AttributeError:
simd_sources_values = simd_sources.values()
for add_sources in simd_sources_values:
depends = depends + add_sources
CCompilerCapabilities.SIMD_SSE41
]['support'])
)
self.__capabilities[CCompilerCapabilities.SIMD_SSE42] = \
self.__has_simd_support(
compiler,
['', '-msse4.2'],
['-D__SSE4_2__'],
'nmmintrin.h',
'__m128i t = _mm_loadu_si128((const __m128i*)argv[0]);'
'return _mm_cmpistra(t, t, 0);'
)
log.info(
"SSE42: %s" %
str(self.__capabilities[
CCompilerCapabilities.SIMD_SSE42
]['support'])
)
self.__capabilities[CCompilerCapabilities.SIMD_AVX] = \
self.__has_simd_support(
compiler,
['', '-mavx', '/arch:AVX'],
['-D__AVX__'],
'immintrin.h',
'__m256i y = _mm256_loadu_si256((const __m256i*)argv[0]);'
'return _mm256_testz_si256(y, y);'
)
log.info(
"AVX: %s" %
str(self.__capabilities[
CCompilerCapabilities.SIMD_AVX
]['support'])
def pybase64_write_config(capabilities):
log.info("creating 'base64/lib/config.h'")
with open(path.join(here, 'base64/lib/config.h'), mode='wt') as f:
f.write('\n#define HAVE_SSSE3 %i' %
capabilities.has(CCompilerCapabilities.SIMD_SSSE3))
f.write('\n#define HAVE_SSE41 %i' %
capabilities.has(CCompilerCapabilities.SIMD_SSE41))
f.write('\n#define HAVE_SSE42 %i' %
capabilities.has(CCompilerCapabilities.SIMD_SSE42))
f.write('\n#define HAVE_AVX %i' %
capabilities.has(CCompilerCapabilities.SIMD_AVX))
f.write('\n#define HAVE_AVX2 %i' %
capabilities.has(CCompilerCapabilities.SIMD_AVX2))
f.write('\n#define HAVE_NEON32 %i' % False)
f.write('\n#define HAVE_NEON64 %i' % False)
f.write('\n#define HAVE_FAST_UNALIGNED_ACCESS %i' % True)
f.write('\n')