@@ -109,111 +109,9 @@ else()
109109 message (WARNING "Git repository not found; to enable automatic generation of build info, make sure Git is installed and the project is a Git repository." )
110110endif ()
111111
112- INCLUDE (CheckCSourceRuns)
113-
114- SET (AVX_CODE "
115- #include <immintrin.h>
116- int main()
117- {
118- __m256 a;
119- a = _mm256_set1_ps(0);
120- return 0;
121- }
122- " )
123-
124- SET (AVX512_CODE "
125- #include <immintrin.h>
126- int main()
127- {
128- __m512i a = _mm512_set_epi8(0, 0, 0, 0, 0, 0, 0, 0,
129- 0, 0, 0, 0, 0, 0, 0, 0,
130- 0, 0, 0, 0, 0, 0, 0, 0,
131- 0, 0, 0, 0, 0, 0, 0, 0,
132- 0, 0, 0, 0, 0, 0, 0, 0,
133- 0, 0, 0, 0, 0, 0, 0, 0,
134- 0, 0, 0, 0, 0, 0, 0, 0,
135- 0, 0, 0, 0, 0, 0, 0, 0);
136- __m512i b = a;
137- __mmask64 equality_mask = _mm512_cmp_epi8_mask(a, b, _MM_CMPINT_EQ);
138- return 0;
139- }
140- " )
141-
142- SET (AVX2_CODE "
143- #include <immintrin.h>
144- int main()
145- {
146- __m256i a = {0};
147- a = _mm256_abs_epi16(a);
148- __m256i x;
149- _mm256_extract_epi64(x, 0); // we rely on this in our AVX2 code
150- return 0;
151- }
152- " )
153-
154- SET (FMA_CODE "
155- #include <immintrin.h>
156- int main()
157- {
158- __m256 acc = _mm256_setzero_ps();
159- const __m256 d = _mm256_setzero_ps();
160- const __m256 p = _mm256_setzero_ps();
161- acc = _mm256_fmadd_ps( d, p, acc );
162- return 0;
163- }
164- " )
165-
166- MACRO (CHECK_SSE type flags )
167- SET (__FLAG_I 1)
168- SET (CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS} )
169- FOREACH (__FLAG ${flags} )
170- IF (NOT ${type} _FOUND)
171- SET (CMAKE_REQUIRED_FLAGS ${__FLAG} )
172- CHECK_C_SOURCE_RUNS("${${type} _CODE}" HAS_${type} _${__FLAG_I} )
173- IF (HAS_${type} _${__FLAG_I} )
174- SET (${type} _FOUND TRUE CACHE BOOL "${type} support" )
175- SET (${type} _FLAGS "${__FLAG} " CACHE STRING "${type} flags" )
176- ENDIF ()
177- MATH (EXPR __FLAG_I "${__FLAG_I} +1" )
178- ENDIF ()
179- ENDFOREACH ()
180- SET (CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE} )
181-
182- IF (NOT ${type} _FOUND)
183- SET (${type} _FOUND FALSE CACHE BOOL "${type} support" )
184- SET (${type} _FLAGS "" CACHE STRING "${type} flags" )
185- ENDIF ()
186-
187- MARK_AS_ADVANCED (${type} _FOUND ${type} _FLAGS)
188-
189- ENDMACRO ()
190-
191- IF (${LLAMA_AVX} )
192- CHECK_SSE("AVX" " ;-mavx;/arch:AVX" )
193- IF (NOT ${AVX_FOUND} )
194- set (LLAMA_AVX OFF )
195- ENDIF ()
196- ENDIF ()
197-
198- IF (${LLAMA_AVX2} )
199- CHECK_SSE("AVX2" " ;-mavx2 -mfma;/arch:AVX2" )
200- IF (NOT ${AVX2_FOUND} )
201- set (LLAMA_AVX2 OFF )
202- ENDIF ()
203- ENDIF ()
204-
205- IF (${LLAMA_AVX512} )
206- CHECK_SSE("AVX512" " ;-mavx512f -mavx512dq -mavx512vl -mavx512bw -mfma;/arch:AVX512" )
207- IF (NOT ${AVX512_FOUND} )
208- set (LLAMA_AVX512 OFF )
209- ENDIF ()
210- ENDIF ()
211-
212- IF (${LLAMA_FMA} )
213- CHECK_SSE("FMA" " ;-mfma;" )
214- IF (NOT ${FMA_FOUND} )
215- set (LLAMA_FMA OFF )
216- ENDIF ()
112+ MESSAGE ("NATIVE=" ${LLAMA_NATIVE} " MSVC=" ${MSVC} )
113+ IF (LLAMA_NATIVE AND MSVC )
114+ include (cmake/FindSIMD.cmake)
217115ENDIF ()
218116
219117#
0 commit comments