diff options
Diffstat (limited to 'src/corelib/global/qsimd.h')
-rw-r--r-- | src/corelib/global/qsimd.h | 62 |
1 files changed, 18 insertions, 44 deletions
diff --git a/src/corelib/global/qsimd.h b/src/corelib/global/qsimd.h index 5fd34d0092..4ef925ca33 100644 --- a/src/corelib/global/qsimd.h +++ b/src/corelib/global/qsimd.h @@ -1,42 +1,6 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Copyright (C) 2018 Intel Corporation. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2020 The Qt Company Ltd. +// Copyright (C) 2022 Intel Corporation. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QSIMD_H #define QSIMD_H @@ -89,20 +53,20 @@ # define QT_COMPILER_USES_mips_dspr2 -1 #endif -#if defined(Q_PROCESSOR_X86) -#if defined(Q_CC_MSVC) +#if defined(Q_PROCESSOR_X86) && defined(Q_CC_MSVC) // MSVC doesn't define __SSE2__, so do it ourselves -# if (defined(_M_X64) || _M_IX86_FP >= 2) +# if (defined(_M_X64) || _M_IX86_FP >= 2) && defined(QT_COMPILER_SUPPORTS_SSE2) # define __SSE__ 1 # define __SSE2__ 1 # endif -#if (defined(_M_AVX) || defined(__AVX__)) +# if (defined(_M_AVX) || defined(__AVX__)) // Visual Studio defines __AVX__ when /arch:AVX is passed, but not the earlier macros // See: https://msdn.microsoft.com/en-us/library/b0084kay.aspx # define __SSE3__ 1 # define __SSSE3__ 1 # define __SSE4_1__ 1 # define __SSE4_2__ 1 +# define __POPCNT__ 1 # ifndef __AVX__ # define __AVX__ 1 # endif @@ -110,7 +74,17 @@ # ifdef __SSE2__ # define QT_VECTORCALL __vectorcall # endif -#endif +# ifdef __AVX2__ +// MSVC defines __AVX2__ with /arch:AVX2 +# define __F16C__ 1 +# define __RDRND__ 1 +# define __FMA__ 1 +# define __BMI__ 1 +# define __BMI2__ 1 +# define __MOVBE__ 1 +# define __LZCNT__ 1 +# endif +// Starting with /arch:AVX512, MSVC defines all the macros #endif #if defined(Q_PROCESSOR_X86) && defined(__SSE2__) |