From 1882cf1c9d68e0c325c89f0bdf368b47206f19e0 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 29 Dec 2011 22:44:16 -0200 Subject: Add detection of AVX and AVX2 support in the compiler. Intel CC 12.1 supports AVX2 but only with -march=core-avx2. The -mavx2 option produces a warning. GCC 4.6 does not recognise any option. GCC 4.7 recognises both -mavx2 and -march=core-avx2 so let's use the latter for now. We may need to change to -mavx2 when there's an AMD processor that supports AVX2 too. Change-Id: I529240e6e6c2c0e3942d357e0320212d954fe4de Reviewed-by: Oswald Buddenhagen --- config.tests/unix/avx2/avx2.cpp | 55 +++++++++++++++++++++++++++++++++++++++++ config.tests/unix/avx2/avx2.pro | 3 +++ 2 files changed, 58 insertions(+) create mode 100644 config.tests/unix/avx2/avx2.cpp create mode 100644 config.tests/unix/avx2/avx2.pro (limited to 'config.tests/unix') diff --git a/config.tests/unix/avx2/avx2.cpp b/config.tests/unix/avx2/avx2.cpp new file mode 100644 index 0000000000..9e56531220 --- /dev/null +++ b/config.tests/unix/avx2/avx2.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Intel Corporation. +** Contact: http://www.qt-project.org/ +** +** This file is part of the configuration of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +int main(int, char**) +{ + /* AVX */ + _mm256_zeroall(); + volatile __m256i a = _mm256_setzero_si256(); + + /* AVX2 */ + volatile __m256i b = _mm256_and_si256(a, a); + volatile __m256i result = _mm256_add_epi8(a, b); + (void)result; + return 0; +} diff --git a/config.tests/unix/avx2/avx2.pro b/config.tests/unix/avx2/avx2.pro new file mode 100644 index 0000000000..48374f11c4 --- /dev/null +++ b/config.tests/unix/avx2/avx2.pro @@ -0,0 +1,3 @@ +SOURCES = avx2.cpp +CONFIG -= x11 qt +mac:CONFIG -= app_bundle -- cgit v1.2.3