OpenMS
SIMDe.h
Go to the documentation of this file.
1 // Copyright (c) 2002-2023, The OpenMS Team -- EKU Tuebingen, ETH Zurich, and FU Berlin
2 // SPDX-License-Identifier: BSD-3-Clause
3 //
4 // --------------------------------------------------------------------------
5 // $Maintainer: Chris Bielow $
6 // $Authors: Chris Bielow $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
11 //
12 // + Use this header whenever you want to make use of SIMDe, since it ensures
13 // + better cross-platform experience (defining missing operators on simde__m128i etc)
14 // + you are only using the SIMDe features backed by the build system (i.e. compile flags, e.g. '-mssse3')
15 //
16 // + Include it only in .cpp files, never in a header, since we do not want to expose the
17 // SIMDe internals to the outside world
18 //
19 
20 // if you want to upgrade to anything more advanced (e.g. SSE4, or AVX),
21 // add the respective compile flags to <git>/cmake/compiler_flags.cmake
22 #include <simde/x86/ssse3.h>
23 
24 // these operators are defined for GCC/clang, but not in MSVC (TODO: maybe use SFINAE, but that is overkill for the moment)
25 #ifdef _MSC_VER
26 inline simde__m128i operator|(const simde__m128i& left, const simde__m128i& right)
27 {
28  return simde_mm_or_si128(left, right);
29 }
30 inline simde__m128i& operator|=(simde__m128i& left, const simde__m128i& right)
31 {
32  left = simde_mm_or_si128(left, right);
33  return left;
34 }
35 inline simde__m128i operator&(const simde__m128i left, const simde__m128i& right)
36 {
37  return simde_mm_and_si128(left, right);
38 }
39 #endif
40 
41 namespace OpenMS
42 {
43 }
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:22