summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2014-06-24 17:34:07 -0700
committerThiago Macieira <thiago.macieira@intel.com>2014-07-25 17:48:53 +0200
commit1f0823cc271856b8d21be3c3bcbde57393e731f0 (patch)
treef7effe5244117f5cb06848d0c153d113c1807e57 /mkspecs
parent86ac3a98b50a29882e896a0703ec9201e71fe989 (diff)
Rewrite simd.prf to share more code
This was a long-time coming. One innovation from this commit is that it will add the source to SOURCES if the compiler is already generating code for that specific target. That is currently always the case for Neon, and the MIPS DSPs since that is the only condition in which configure will enable those targets. And because of qt_module.prf, it's also always the case for SSE2 (but not for SSE3 or higher). So simplify the .pri files by removing always-true conditions. Change-Id: Ib24af74717b652c9a6be246e3c17a839470f37da Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/simd.prf370
1 files changed, 77 insertions, 293 deletions
diff --git a/mkspecs/features/simd.prf b/mkspecs/features/simd.prf
index 258a1f63e2..7d9eaffafa 100644
--- a/mkspecs/features/simd.prf
+++ b/mkspecs/features/simd.prf
@@ -18,298 +18,82 @@ QT_CPU_FEATURES = $$eval(QT_CPU_FEATURES.$$QT_ARCH)
#
# Set up compilers for SIMD (SSE/AVX, NEON etc)
#
-gcc { # includes intel_icc and clang variants
- sse2 {
- HEADERS += $$SSE2_HEADERS
-
- sse2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, sse2):sse2_compiler.commands += $$QMAKE_CFLAGS_SSE2
- sse2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- sse2_compiler.dependency_type = TYPE_C
- sse2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- sse2_compiler.input = SSE2_SOURCES
- sse2_compiler.variable_out = OBJECTS
- sse2_compiler.name = compiling[sse2] ${QMAKE_FILE_IN}
- silent:sse2_compiler.commands = @echo compiling[sse2] ${QMAKE_FILE_IN} && $$sse2_compiler.commands
- QMAKE_EXTRA_COMPILERS += sse2_compiler
- }
- sse3 {
- HEADERS += $$SSE3_HEADERS
-
- sse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, sse3):sse3_compiler.commands += $$QMAKE_CFLAGS_SSE3
- sse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- sse3_compiler.dependency_type = TYPE_C
- sse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- sse3_compiler.input = SSE3_SOURCES
- sse3_compiler.variable_out = OBJECTS
- sse3_compiler.name = compiling[sse3] ${QMAKE_FILE_IN}
- silent:sse3_compiler.commands = @echo compiling[sse3] ${QMAKE_FILE_IN} && $$sse3_compiler.commands
- QMAKE_EXTRA_COMPILERS += sse3_compiler
- }
- ssse3 {
- HEADERS += $$SSSE3_HEADERS
-
- ssse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, ssse3):ssse3_compiler.commands += $$QMAKE_CFLAGS_SSSE3
- ssse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- ssse3_compiler.dependency_type = TYPE_C
- ssse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- ssse3_compiler.input = SSSE3_SOURCES
- ssse3_compiler.variable_out = OBJECTS
- ssse3_compiler.name = compiling[ssse3] ${QMAKE_FILE_IN}
- silent:ssse3_compiler.commands = @echo compiling[ssse3] ${QMAKE_FILE_IN} && $$ssse3_compiler.commands
- QMAKE_EXTRA_COMPILERS += ssse3_compiler
- }
- sse4_1 {
- HEADERS += $$SSE4_1_HEADERS
-
- sse4_1_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, sse4_1):sse4_1_compiler.commands += $$QMAKE_CFLAGS_SSE4_1
- sse4_1_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- sse4_1_compiler.dependency_type = TYPE_C
- sse4_1_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- sse4_1_compiler.input = SSE4_1_SOURCES
- sse4_1_compiler.variable_out = OBJECTS
- sse4_1_compiler.name = compiling[sse4_1] ${QMAKE_FILE_IN}
- silent:sse4_1_compiler.commands = @echo compiling[sse4_1] ${QMAKE_FILE_IN} && $$sse4_1_compiler.commands
- QMAKE_EXTRA_COMPILERS += sse4_1_compiler
- }
- sse4_2 {
- HEADERS += $$SSE4_2_HEADERS
-
- sse4_2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, sse4_2):sse4_2_compiler.commands += $$QMAKE_CFLAGS_SSE4_2
- sse4_2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- sse4_2_compiler.dependency_type = TYPE_C
- sse4_2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- sse4_2_compiler.input = SSE4_2_SOURCES
- sse4_2_compiler.variable_out = OBJECTS
- sse4_2_compiler.name = compiling[sse4_2] ${QMAKE_FILE_IN}
- silent:sse4_2_compiler.commands = @echo compiling[sse4_2] ${QMAKE_FILE_IN} && $$sse4_2_compiler.commands
- QMAKE_EXTRA_COMPILERS += sse4_2_compiler
- }
- avx {
- HEADERS += $$AVX_HEADERS
-
- avx_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, avx):avx_compiler.commands += $$QMAKE_CFLAGS_AVX
- avx_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- avx_compiler.dependency_type = TYPE_C
- avx_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- avx_compiler.input = AVX_SOURCES
- avx_compiler.variable_out = OBJECTS
- avx_compiler.name = compiling[avx] ${QMAKE_FILE_IN}
- silent:avx_compiler.commands = @echo compiling[avx] ${QMAKE_FILE_IN} && $$avx_compiler.commands
- QMAKE_EXTRA_COMPILERS += avx_compiler
- }
- avx2 {
- HEADERS += $$AVX2_HEADERS
-
- avx2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, avx2):avx2_compiler.commands += $$QMAKE_CFLAGS_AVX2
- avx2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- avx2_compiler.dependency_type = TYPE_C
- avx2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- avx2_compiler.input = AVX2_SOURCES
- avx2_compiler.variable_out = OBJECTS
- avx2_compiler.name = compiling[avx2] ${QMAKE_FILE_IN}
- silent:avx2_compiler.commands = @echo compiling[avx2] ${QMAKE_FILE_IN} && $$avx2_compiler.commands
- QMAKE_EXTRA_COMPILERS += avx2_compiler
- }
- neon {
- HEADERS += $$NEON_HEADERS
-
- neon_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, neon):neon_compiler.commands += $$QMAKE_CFLAGS_NEON
- neon_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- neon_compiler.dependency_type = TYPE_C
- neon_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- neon_compiler.input = NEON_SOURCES
- neon_compiler.variable_out = OBJECTS
- neon_compiler.name = compiling[neon] ${QMAKE_FILE_IN}
- silent:neon_compiler.commands = @echo compiling[neon] ${QMAKE_FILE_IN} && $$neon_compiler.commands
- neon_assembler.commands = $$QMAKE_CC -c $(CFLAGS)
- !contains(QT_CPU_FEATURES, neon):neon_assembler.commands += $$QMAKE_CFLAGS_NEON
- neon_assembler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- clang:no_clang_integrated_as:neon_assembler.commands += -fno-integrated-as
- neon_assembler.dependency_type = TYPE_C
- neon_assembler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- neon_assembler.input = NEON_ASM
- neon_assembler.variable_out = OBJECTS
- neon_assembler.name = assembling[neon] ${QMAKE_FILE_IN}
- silent:neon_assembler.commands = @echo assembling[neon] ${QMAKE_FILE_IN} && $$neon_assembler.commands
- QMAKE_EXTRA_COMPILERS += neon_compiler neon_assembler
- }
- iwmmxt {
- HEADERS += $$IWMMXT_HEADERS
-
- iwmmxt_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- iwmmxt_compiler.commands += $$QMAKE_CFLAGS_IWMMXT
- iwmmxt_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- iwmmxt_compiler.dependency_type = TYPE_C
- iwmmxt_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- iwmmxt_compiler.input = IWMMXT_SOURCES
- iwmmxt_compiler.variable_out = OBJECTS
- iwmmxt_compiler.name = compiling[iwmmxt] ${QMAKE_FILE_IN}
- silent:iwmmxt_compiler.commands = @echo compiling[iwmmxt] ${QMAKE_FILE_IN} && $$iwmmxt_compiler.commands
- QMAKE_EXTRA_COMPILERS += iwmmxt_compiler
- }
- mips_dsp {
- HEADERS += $$MIPS_DSP_HEADERS
-
- mips_dsp_compiler.commands = $$QMAKE_CXX -c
- mips_dsp_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- mips_dsp_compiler.dependency_type = TYPE_C
- mips_dsp_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- mips_dsp_compiler.input = MIPS_DSP_SOURCES
- mips_dsp_compiler.variable_out = OBJECTS
- mips_dsp_compiler.name = compiling[mips_dsp] ${QMAKE_FILE_IN}
- silent:mips_dsp_compiler.commands = @echo compiling[mips_dsp] ${QMAKE_FILE_IN} && $$mips_dsp_compiler.commands
- mips_dsp_assembler.commands = $$QMAKE_CC -c
- mips_dsp_assembler.commands += $(CFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- mips_dsp_assembler.dependency_type = TYPE_C
- mips_dsp_assembler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- mips_dsp_assembler.input = MIPS_DSP_ASM
- mips_dsp_assembler.variable_out = OBJECTS
- mips_dsp_assembler.name = assembling[mips_dsp] ${QMAKE_FILE_IN}
- silent:mips_dsp_assembler.commands = @echo assembling[mips_dsp] ${QMAKE_FILE_IN} && $$mips_dsp_assembler.commands
- QMAKE_EXTRA_COMPILERS += mips_dsp_compiler
- QMAKE_EXTRA_COMPILERS += mips_dsp_assembler
+defineTest(addSimdCompiler) {
+ name = $$1
+ upname = $$upper($$name)
+ headers_var = $${upname}_HEADERS
+ sources_var = $${upname}_SOURCES
+ asm_var = $${upname}_ASM
+
+ CONFIG($$1) {
+ cflags = $$eval(QMAKE_CFLAGS_$${upname})
+ contains(QT_CPU_FEATURES, $$name) {
+ # Default compiler settings include this feature, so just add to SOURCES
+ SOURCES += $$eval($$sources_var)
+ export(SOURCES)
+ } else {
+ # We need special compiler flags
+ $${name}_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) $$cflags $(INCPATH) ${QMAKE_FILE_IN}
+ msvc: $${name}_compiler.commands += -Fo${QMAKE_FILE_OUT}
+ else: $${name}_compiler.commands += -o ${QMAKE_FILE_OUT}
+
+ $${name}_compiler.dependency_type = TYPE_C
+ $${name}_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
+ $${name}_compiler.input = $$sources_var
+ $${name}_compiler.variable_out = OBJECTS
+ $${name}_compiler.name = compiling[$${name}] ${QMAKE_FILE_IN}
+ silent: $${name}_compiler.commands = @echo compiling[$${name}] ${QMAKE_FILE_IN} && $$eval($${name}_compiler.commands)
+ QMAKE_EXTRA_COMPILERS += $${name}_compiler
+
+ export($${name}_compiler.commands)
+ export($${name}_compiler.dependency_type)
+ export($${name}_compiler.output)
+ export($${name}_compiler.input)
+ export($${name}_compiler.variable_out)
+ export($${name}_compiler.name)
+ }
+
+ # We always need an assembler (need to run the C compiler and without precompiled headers)
+ msvc {
+ # Don't know how to run MSVC's assembler...
+ !isEmpty($$asm_var): error("Sorry, not implemented: assembling $$upname for MSVC.")
+ } else: false {
+ # This is just for the IDE
+ SOURCES += $$eval($$asm_var)
+ export(SOURCES)
+ } else {
+ $${name}_assembler.commands = $$QMAKE_CC -c $(CFLAGS)
+ !contains(QT_CPU_FEATURES, $${name}): $${name}_assembler.commands += $$cflags
+ clang:no_clang_integrated_as: $${name}_assembler.commands += -fno-integrated-as
+ $${name}_assembler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
+ $${name}_assembler.dependency_type = TYPE_C
+ $${name}_assembler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
+ $${name}_assembler.input = $$asm_var
+ $${name}_assembler.variable_out = OBJECTS
+ $${name}_assembler.name = assembling[$${name}] ${QMAKE_FILE_IN}
+ silent: $${name}_assembler.commands = @echo assembling[$${name}] ${QMAKE_FILE_IN} && $$eval($${name}_assembler.commands)
+ QMAKE_EXTRA_COMPILERS += $${name}_assembler
+
+ export($${name}_assembler.commands)
+ export($${name}_assembler.dependency_type)
+ export($${name}_assembler.output)
+ export($${name}_assembler.input)
+ export($${name}_assembler.variable_out)
+ export($${name}_assembler.name)
+ }
+
+ HEADERS += $$eval($$headers_var)
+ export(HEADERS)
+ export(QMAKE_EXTRA_COMPILERS)
}
- mips_dspr2 {
- HEADERS += $$MIPS_DSP_HEADERS
-
- mips_dspr2_compiler.commands = $$QMAKE_CXX -c
- mips_dspr2_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- mips_dspr2_compiler.dependency_type = TYPE_C
- mips_dspr2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- mips_dspr2_compiler.input = MIPS_DSPR2_SOURCES
- mips_dspr2_compiler.variable_out = OBJECTS
- mips_dspr2_compiler.name = compiling[mips_dspr2] ${QMAKE_FILE_IN}
- silent:mips_dspr2_compiler.commands = @echo compiling[mips_dspr2] ${QMAKE_FILE_IN} && $$mips_dspr2_compiler.commands
- mips_dspr2_assembler.commands = $$QMAKE_CC -c
- mips_dspr2_assembler.commands += $(CFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
- mips_dspr2_assembler.dependency_type = TYPE_C
- mips_dspr2_assembler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- mips_dspr2_assembler.input = MIPS_DSPR2_ASM
- mips_dspr2_assembler.variable_out = OBJECTS
- mips_dspr2_assembler.name = assembling[mips_dspr2] ${QMAKE_FILE_IN}
- silent:mips_dspr2_assembler.commands = @echo assembling[mips_dspr2] ${QMAKE_FILE_IN} && $$mips_dspr2_assembler.commands
- QMAKE_EXTRA_COMPILERS += mips_dspr2_compiler
- QMAKE_EXTRA_COMPILERS += mips_dspr2_assembler
- }
-} else:msvc {
- sse2 {
- HEADERS += $$SSE2_HEADERS
-
- sse2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, sse2):sse2_compiler.commands += $$QMAKE_CFLAGS_SSE2
- sse2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT}
- sse2_compiler.dependency_type = TYPE_C
- sse2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- sse2_compiler.input = SSE2_SOURCES
- sse2_compiler.variable_out = OBJECTS
- sse2_compiler.name = compiling[sse2] ${QMAKE_FILE_IN}
- silent:sse2_compiler.commands = @echo compiling[sse2] ${QMAKE_FILE_IN} && $$sse2_compiler.commands
- QMAKE_EXTRA_COMPILERS += sse2_compiler
- }
- # MSVC doesn't have an option for anything higher than SSE2 specifically, so check if SSE2 is
- # already enabled instead (this is for code generation - intrinsics should still be supported)
- sse3 {
- HEADERS += $$SSE3_HEADERS
-
- sse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, sse2):sse3_compiler.commands += $$QMAKE_CFLAGS_SSE3
- sse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT}
- sse3_compiler.dependency_type = TYPE_C
- sse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- sse3_compiler.input = SSE3_SOURCES
- sse3_compiler.variable_out = OBJECTS
- sse3_compiler.name = compiling[sse3] ${QMAKE_FILE_IN}
- silent:sse3_compiler.commands = @echo compiling[sse3] ${QMAKE_FILE_IN} && $$sse3_compiler.commands
- QMAKE_EXTRA_COMPILERS += sse3_compiler
- }
- ssse3 {
- HEADERS += $$SSSE3_HEADERS
-
- ssse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, sse2):ssse3_compiler.commands += $$QMAKE_CFLAGS_SSSE3
- ssse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT}
- ssse3_compiler.dependency_type = TYPE_C
- ssse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- ssse3_compiler.input = SSSE3_SOURCES
- ssse3_compiler.variable_out = OBJECTS
- ssse3_compiler.name = compiling[ssse3] ${QMAKE_FILE_IN}
- silent:ssse3_compiler.commands = @echo compiling[ssse3] ${QMAKE_FILE_IN} && $$ssse3_compiler.commands
- QMAKE_EXTRA_COMPILERS += ssse3_compiler
- }
- sse4_1 {
- HEADERS += $$SSE4_1_HEADERS
-
- sse4_1_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, sse2):sse4_1_compiler.commands += $$QMAKE_CFLAGS_SSE4_1
- sse4_1_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT}
- sse4_1_compiler.dependency_type = TYPE_C
- sse4_1_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- sse4_1_compiler.input = SSE4_1_SOURCES
- sse4_1_compiler.variable_out = OBJECTS
- sse4_1_compiler.name = compiling[sse4_1] ${QMAKE_FILE_IN}
- silent:sse4_1_compiler.commands = @echo compiling[sse4_1] ${QMAKE_FILE_IN} && $$sse4_1_compiler.commands
- QMAKE_EXTRA_COMPILERS += sse4_1_compiler
- }
- sse4_2 {
- HEADERS += $$SSE4_2_HEADERS
-
- sse4_2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, sse2):sse4_2_compiler.commands += $$QMAKE_CFLAGS_SSE4_2
- sse4_2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT}
- sse4_2_compiler.dependency_type = TYPE_C
- sse4_2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- sse4_2_compiler.input = SSE4_2_SOURCES
- sse4_2_compiler.variable_out = OBJECTS
- sse4_2_compiler.name = compiling[sse4_2] ${QMAKE_FILE_IN}
- silent:sse4_2_compiler.commands = @echo compiling[sse4_2] ${QMAKE_FILE_IN} && $$sse4_2_compiler.commands
- QMAKE_EXTRA_COMPILERS += sse4_2_compiler
- }
- # Similarly for AVX2 - just uses AVX
- avx {
- HEADERS += $$AVX_HEADERS
-
- avx_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) -D_M_AVX
- !contains(QT_CPU_FEATURES, avx):avx_compiler.commands += $$QMAKE_CFLAGS_AVX
- avx_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT}
- avx_compiler.dependency_type = TYPE_C
- avx_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- avx_compiler.input = AVX_SOURCES
- avx_compiler.variable_out = OBJECTS
- avx_compiler.name = compiling[avx] ${QMAKE_FILE_IN}
- silent:avx_compiler.commands = @echo compiling[avx] ${QMAKE_FILE_IN} && $$avx_compiler.commands
- QMAKE_EXTRA_COMPILERS += avx_compiler
- }
- avx2 {
- HEADERS += $$AVX2_HEADERS
-
- avx2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
- !contains(QT_CPU_FEATURES, avx):avx2_compiler.commands += $$QMAKE_CFLAGS_AVX2
- avx2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT}
- avx2_compiler.dependency_type = TYPE_C
- avx2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
- avx2_compiler.input = AVX2_SOURCES
- avx2_compiler.variable_out = OBJECTS
- avx2_compiler.name = compiling[avx2] ${QMAKE_FILE_IN}
- silent:avx2_compiler.commands = @echo compiling[avx2] ${QMAKE_FILE_IN} && $$avx2_compiler.commands
- QMAKE_EXTRA_COMPILERS += avx2_compiler
- }
-} else:false {
- # This allows an IDE like Creator to know that these files are part of the sources
- SOURCES += \
- $$SSE2_SOURCES $$SSE3_SOURCES $$SSSE3_SOURCES $$SSE4_1_SOURCES $$SSE4_2_SOURCES \
- $$AVX_SOURCES $$AVX2_SOURCES \
- $$NEON_SOURCES $$NEON_ASM \
- $$IWMMXT_SOURCES \
- $$MIPS_DSP_SOURCES $$MIPS_DSPR2_SOURCES $$MIPS_DSP_ASM $$MIPS_DSPR2_ASM
-
- # Headers are already done in the above sections.
}
-
+addSimdCompiler(sse2)
+addSimdCompiler(sse3)
+addSimdCompiler(ssse3)
+addSimdCompiler(sse4_1)
+addSimdCompiler(sse4_2)
+addSimdCompiler(avx)
+addSimdCompiler(avx2)
+addSimdCompiler(neon)
+addSimdCompiler(mips_dsp)
+addSimdCompiler(mips_dspr2)