1/****************************************************************************
2**
3** Copyright (C) 2018 Intel Corporation.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtCore module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40// This is a generated file. DO NOT EDIT.
41// Please see util/x86simdgen/generate.pl
42#include "qsimd_p.h"
43
44static const char features_string[] =
45 " sse2\0"
46 " sse3\0"
47 " ssse3\0"
48 " fma\0"
49 " sse4.1\0"
50 " sse4.2\0"
51 " movbe\0"
52 " popcnt\0"
53 " aes\0"
54 " avx\0"
55 " f16c\0"
56 " rdrnd\0"
57 " bmi\0"
58 " hle\0"
59 " avx2\0"
60 " bmi2\0"
61 " rtm\0"
62 " avx512f\0"
63 " avx512dq\0"
64 " rdseed\0"
65 " avx512ifma\0"
66 " avx512pf\0"
67 " avx512er\0"
68 " avx512cd\0"
69 " sha\0"
70 " avx512bw\0"
71 " avx512vl\0"
72 " avx512vbmi\0"
73 " avx512vbmi2\0"
74 " gfni\0"
75 " vaes\0"
76 " avx512vnni\0"
77 " avx512bitalg\0"
78 " avx512vpopcntdq\0"
79 " avx5124nniw\0"
80 " avx5124fmaps\0"
81 "\0";
82
83static const quint16 features_indices[] = {
84 306, 0, 6, 12, 19, 24, 32, 40,
85 47, 55, 60, 65, 71, 78, 83, 88,
86 94, 100, 105, 114, 124, 132, 144, 154,
87 164, 174, 179, 189, 199, 211, 224, 230,
88 236, 248, 262, 279, 292
89};
90
91enum X86CpuidLeaves {
92 Leaf1ECX,
93 Leaf1EDX,
94 Leaf7_0EBX,
95 Leaf7_0ECX,
96 Leaf7_0EDX,
97 X86CpuidMaxLeaf
98};
99
100static const quint8 x86_locators[] = {
101 Leaf1EDX*32 + 26, // sse2
102 Leaf1ECX*32 + 0, // sse3
103 Leaf1ECX*32 + 9, // ssse3
104 Leaf1ECX*32 + 12, // fma
105 Leaf1ECX*32 + 19, // sse4.1
106 Leaf1ECX*32 + 20, // sse4.2
107 Leaf1ECX*32 + 22, // movbe
108 Leaf1ECX*32 + 23, // popcnt
109 Leaf1ECX*32 + 25, // aes
110 Leaf1ECX*32 + 28, // avx
111 Leaf1ECX*32 + 29, // f16c
112 Leaf1ECX*32 + 30, // rdrnd
113 Leaf7_0EBX*32 + 3, // bmi
114 Leaf7_0EBX*32 + 4, // hle
115 Leaf7_0EBX*32 + 5, // avx2
116 Leaf7_0EBX*32 + 8, // bmi2
117 Leaf7_0EBX*32 + 11, // rtm
118 Leaf7_0EBX*32 + 16, // avx512f
119 Leaf7_0EBX*32 + 17, // avx512dq
120 Leaf7_0EBX*32 + 18, // rdseed
121 Leaf7_0EBX*32 + 21, // avx512ifma
122 Leaf7_0EBX*32 + 26, // avx512pf
123 Leaf7_0EBX*32 + 27, // avx512er
124 Leaf7_0EBX*32 + 28, // avx512cd
125 Leaf7_0EBX*32 + 29, // sha
126 Leaf7_0EBX*32 + 30, // avx512bw
127 Leaf7_0EBX*32 + 31, // avx512vl
128 Leaf7_0ECX*32 + 1, // avx512vbmi
129 Leaf7_0ECX*32 + 6, // avx512vbmi2
130 Leaf7_0ECX*32 + 8, // gfni
131 Leaf7_0ECX*32 + 9, // vaes
132 Leaf7_0ECX*32 + 11, // avx512vnni
133 Leaf7_0ECX*32 + 12, // avx512bitalg
134 Leaf7_0ECX*32 + 14, // avx512vpopcntdq
135 Leaf7_0EDX*32 + 2, // avx5124nniw
136 Leaf7_0EDX*32 + 3 // avx5124fmaps
137};
138
139// List of AVX512 features (see detectProcessorFeatures())
140static const quint64 AllAVX512 = 0
141 | CpuFeatureAVX512F
142 | CpuFeatureAVX512DQ
143 | CpuFeatureAVX512IFMA
144 | CpuFeatureAVX512PF
145 | CpuFeatureAVX512ER
146 | CpuFeatureAVX512CD
147 | CpuFeatureAVX512BW
148 | CpuFeatureAVX512VL
149 | CpuFeatureAVX512VBMI
150 | CpuFeatureAVX512VBMI2
151 | CpuFeatureAVX512VNNI
152 | CpuFeatureAVX512BITALG
153 | CpuFeatureAVX512VPOPCNTDQ
154 | CpuFeatureAVX5124NNIW
155 | CpuFeatureAVX5124FMAPS;
156