Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
for add_sources in simd_sources_values:
depends = depends + add_sources
if not (self.force or newer_group(depends, ext_path, 'newer')):
log.debug("skipping '%s' extension (up-to-date)", ext.name)
return
else:
log.info("building '%s' extension", ext.name)
capabilities = CCompilerCapabilities(self.compiler)
pybase64_write_config(capabilities)
objects = list()
for simd_opt in (CCompilerCapabilities.SIMD_SSSE3,
CCompilerCapabilities.SIMD_SSE41,
CCompilerCapabilities.SIMD_SSE42,
CCompilerCapabilities.SIMD_AVX,
CCompilerCapabilities.SIMD_AVX2,
CCompilerCapabilities.SIMD_NEON32,
CCompilerCapabilities.SIMD_NEON64):
if len(simd_sources[simd_opt]) == 0:
continue
if capabilities.has(simd_opt):
objects = objects + self.compiler.compile(
simd_sources[simd_opt],
output_dir=self.build_temp,
include_dirs=ext.include_dirs,
debug=self.debug,
extra_postargs=capabilities.flags(simd_opt),
depends=ext.depends)
else:
]['support'])
)
self.__capabilities[CCompilerCapabilities.SIMD_SSE41] = \
self.__has_simd_support(
compiler,
['', '-msse4.1'],
['-D__SSE4_1__'],
'smmintrin.h',
'__m128i t = _mm_loadu_si128((const __m128i*)argv[0]);'
't = _mm_mpsadbw_epu8(t, t, 1);'
'return _mm_cvtsi128_si32(t);'
)
log.info(
"SSE41: %s" %
str(self.__capabilities[
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'])
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')