From f5a7d88378ce7a4dac09e07b9a03e680d0edb799 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 31 May 2012 15:51:59 +0200 Subject: Move the AVX and SSE tests to config.tests/common This is the first step in supporting these checks on Windows. Change-Id: I77cfd46bd733161ad2e52c2f76a6354b95ff737d Reviewed-by: Oswald Buddenhagen --- config.tests/common/avx/avx.cpp | 51 ++++++++++++++++++++++++++++++++ config.tests/common/avx/avx.pro | 5 ++++ config.tests/common/avx2/avx2.cpp | 55 +++++++++++++++++++++++++++++++++++ config.tests/common/avx2/avx2.pro | 5 ++++ config.tests/common/sse2/sse2.cpp | 52 +++++++++++++++++++++++++++++++++ config.tests/common/sse2/sse2.pro | 5 ++++ config.tests/common/sse3/sse3.cpp | 51 ++++++++++++++++++++++++++++++++ config.tests/common/sse3/sse3.pro | 5 ++++ config.tests/common/sse4_1/sse4_1.cpp | 51 ++++++++++++++++++++++++++++++++ config.tests/common/sse4_1/sse4_1.pro | 5 ++++ config.tests/common/sse4_2/sse4_2.cpp | 51 ++++++++++++++++++++++++++++++++ config.tests/common/sse4_2/sse4_2.pro | 5 ++++ config.tests/common/ssse3/ssse3.cpp | 51 ++++++++++++++++++++++++++++++++ config.tests/common/ssse3/ssse3.pro | 5 ++++ 14 files changed, 397 insertions(+) create mode 100644 config.tests/common/avx/avx.cpp create mode 100644 config.tests/common/avx/avx.pro create mode 100644 config.tests/common/avx2/avx2.cpp create mode 100644 config.tests/common/avx2/avx2.pro create mode 100644 config.tests/common/sse2/sse2.cpp create mode 100644 config.tests/common/sse2/sse2.pro create mode 100644 config.tests/common/sse3/sse3.cpp create mode 100644 config.tests/common/sse3/sse3.pro create mode 100644 config.tests/common/sse4_1/sse4_1.cpp create mode 100644 config.tests/common/sse4_1/sse4_1.pro create mode 100644 config.tests/common/sse4_2/sse4_2.cpp create mode 100644 config.tests/common/sse4_2/sse4_2.pro create mode 100644 config.tests/common/ssse3/ssse3.cpp create mode 100644 config.tests/common/ssse3/ssse3.pro (limited to 'config.tests/common') diff --git a/config.tests/common/avx/avx.cpp b/config.tests/common/avx/avx.cpp new file mode 100644 index 0000000000..bc5be65e65 --- /dev/null +++ b/config.tests/common/avx/avx.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the config.tests 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**) +{ + volatile __m256d a = _mm256_setzero_pd(); + volatile __m256d b = _mm256_set1_pd(42.42); + volatile __m256d result = _mm256_add_pd(a, b); + (void)result; + return 0; +} diff --git a/config.tests/common/avx/avx.pro b/config.tests/common/avx/avx.pro new file mode 100644 index 0000000000..f16f7e8f4d --- /dev/null +++ b/config.tests/common/avx/avx.pro @@ -0,0 +1,5 @@ +SOURCES = avx.cpp +CONFIG -= x11 qt +mac:CONFIG -= app_bundle +isEmpty(QMAKE_CFLAGS_AVX):error("This compiler does not support AVX") +else:QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_AVX diff --git a/config.tests/common/avx2/avx2.cpp b/config.tests/common/avx2/avx2.cpp new file mode 100644 index 0000000000..9e56531220 --- /dev/null +++ b/config.tests/common/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/common/avx2/avx2.pro b/config.tests/common/avx2/avx2.pro new file mode 100644 index 0000000000..09590a8379 --- /dev/null +++ b/config.tests/common/avx2/avx2.pro @@ -0,0 +1,5 @@ +SOURCES = avx2.cpp +CONFIG -= x11 qt +mac:CONFIG -= app_bundle +isEmpty(QMAKE_CFLAGS_AVX2):error("This compiler does not support AVX2") +else:QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_AVX2 diff --git a/config.tests/common/sse2/sse2.cpp b/config.tests/common/sse2/sse2.cpp new file mode 100644 index 0000000000..27ebb00326 --- /dev/null +++ b/config.tests/common/sse2/sse2.cpp @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the config.tests 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 +#if defined(__GNUC__) && __GNUC__ < 4 && __GNUC_MINOR__ < 3 +#error GCC < 3.2 is known to create internal compiler errors with our MMX code +#endif + +int main(int, char**) +{ + __m128i a = _mm_setzero_si128(); + _mm_maskmoveu_si128(a, _mm_setzero_si128(), 0); + return 0; +} diff --git a/config.tests/common/sse2/sse2.pro b/config.tests/common/sse2/sse2.pro new file mode 100644 index 0000000000..13f252ae48 --- /dev/null +++ b/config.tests/common/sse2/sse2.pro @@ -0,0 +1,5 @@ +SOURCES = sse2.cpp +CONFIG -= x11 qt +mac:CONFIG -= app_bundle +isEmpty(QMAKE_CFLAGS_SSE2):error("This compiler does not support SSE2") +else:QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE2 diff --git a/config.tests/common/sse3/sse3.cpp b/config.tests/common/sse3/sse3.cpp new file mode 100644 index 0000000000..c35586ab94 --- /dev/null +++ b/config.tests/common/sse3/sse3.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the config.tests 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**) +{ + volatile __m128d a = _mm_set1_pd(6.28); + volatile __m128d b = _mm_set1_pd(3.14); + volatile __m128d result = _mm_addsub_pd(a, b); + result = _mm_movedup_pd(result); + return 0; +} diff --git a/config.tests/common/sse3/sse3.pro b/config.tests/common/sse3/sse3.pro new file mode 100644 index 0000000000..8d9853ce77 --- /dev/null +++ b/config.tests/common/sse3/sse3.pro @@ -0,0 +1,5 @@ +SOURCES = sse3.cpp +CONFIG -= x11 qt +mac:CONFIG -= app_bundle +isEmpty(QMAKE_CFLAGS_SSE3):error("This compiler does not support SSE3") +else:QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE3 diff --git a/config.tests/common/sse4_1/sse4_1.cpp b/config.tests/common/sse4_1/sse4_1.cpp new file mode 100644 index 0000000000..b2762b990f --- /dev/null +++ b/config.tests/common/sse4_1/sse4_1.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the config.tests 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**) +{ + volatile __m128 a = _mm_setzero_ps(); + _mm_ceil_ps(a); + volatile __m128i result = _mm_mullo_epi32(_mm_set1_epi32(42), _mm_set1_epi32(64)); + (void)result; + return 0; +} diff --git a/config.tests/common/sse4_1/sse4_1.pro b/config.tests/common/sse4_1/sse4_1.pro new file mode 100644 index 0000000000..539517605d --- /dev/null +++ b/config.tests/common/sse4_1/sse4_1.pro @@ -0,0 +1,5 @@ +SOURCES = sse4_1.cpp +CONFIG -= x11 qt +mac:CONFIG -= app_bundle +isEmpty(QMAKE_CFLAGS_SSE4_1):error("This compiler does not support SSE4.1") +else:QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE4_1 diff --git a/config.tests/common/sse4_2/sse4_2.cpp b/config.tests/common/sse4_2/sse4_2.cpp new file mode 100644 index 0000000000..9052d0685c --- /dev/null +++ b/config.tests/common/sse4_2/sse4_2.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the config.tests 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**) +{ + volatile __m128i a = _mm_setzero_si128(); + volatile __m128i b = _mm_set1_epi32(42); + volatile __m128i result = _mm_cmpestrm(a, 16, b, 16, 0); + (void)result; + return 0; +} diff --git a/config.tests/common/sse4_2/sse4_2.pro b/config.tests/common/sse4_2/sse4_2.pro new file mode 100644 index 0000000000..044eb197af --- /dev/null +++ b/config.tests/common/sse4_2/sse4_2.pro @@ -0,0 +1,5 @@ +SOURCES = sse4_2.cpp +CONFIG -= x11 qt +mac:CONFIG -= app_bundle +isEmpty(QMAKE_CFLAGS_SSE4_2):error("This compiler does not support SSE4.2") +else:QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE4_2 diff --git a/config.tests/common/ssse3/ssse3.cpp b/config.tests/common/ssse3/ssse3.cpp new file mode 100644 index 0000000000..f486bed378 --- /dev/null +++ b/config.tests/common/ssse3/ssse3.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the config.tests 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**) +{ + volatile __m128i a = _mm_set1_epi32(42); + _mm_abs_epi8(a); + volatile __m128i result = _mm_sign_epi16(a, _mm_set1_epi32(64)); + (void)result; + return 0; +} diff --git a/config.tests/common/ssse3/ssse3.pro b/config.tests/common/ssse3/ssse3.pro new file mode 100644 index 0000000000..dd86c41abb --- /dev/null +++ b/config.tests/common/ssse3/ssse3.pro @@ -0,0 +1,5 @@ +SOURCES = ssse3.cpp +CONFIG -= x11 qt +mac:CONFIG -= app_bundle +isEmpty(QMAKE_CFLAGS_SSSE3):error("This compiler does not support SSSE3") +else:QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSSE3 -- cgit v1.2.3