1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
# -*- coding: utf-8 -*-
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
TRAITS = [
# ref: https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions
'AVX',
'AVX2',
'CLMUL',
'FMA3',
'FMA4',
'F16C',
'MMX',
'SSE',
'SSE2',
'SSE3',
'SSSE3',
'SSE41',
'SSE42',
'SSE4A',
'XOP',
'3DNOW',
# ref: https://en.wikipedia.org/wiki/AVX-512
'AVX512F', # foundation
'AVX512CD', # conflict detection
'AVX512PF', # prefetch
'AVX512ER', # exponential + reciprocal
'AVX512VL', # vector length extensions
'AVX512BW', # byte + word
'AVX512DQ', # double word + quad word
'AVX512VNNI', # vector neural network instructions
'AVX512VBMI', # vector byte manipulation instructions
'AVX512IFMA', # integer fused multiply add
'AVX512VBMI2', # vector byte manipulation instructions 2
'AVX512BITALG', # bit algorithms
'AVX512VAES', # vector aes instructions
'AVX512GFNI', # galois field new instructions
'AVX512VPCLMULQDQ', # carry-less multiplication of quadwords
'AVX512VPOPCNTDQ', # vector population count instruction
# ref: https://en.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets
'ABM',
'BMI',
'BMI2',
'TBM',
# ref: https://en.wikipedia.org/wiki/AES_instruction_set
'AESNI',
# ref: https://en.wikipedia.org/wiki/Intel_SHA_extensions
'SHA',
# ref: https://en.wikipedia.org/wiki/Intel_MPX
'MPX',
# ref: https://en.wikipedia.org/wiki/Software_Guard_Extensions
'SGX',
# ref:
# https://en.wikipedia.org/wiki/Transactional_Synchronization_Extensions
'TSX',
# ref: https://en.wikipedia.org/wiki/Advanced_Synchronization_Facility
'ASF',
# ref: https://en.wikipedia.org/wiki/VT-x
# NOTE(kchamart): The 'VMX' trait is Intel-only, and does not belong
# in this file (which is supposed to be a "common" file for all
# x86-related). But we need to retain it here forever to not cause
# Placement breakage.
'VMX',
# ref: https://en.wikipedia.org/wiki/AMD-V
# NOTE(kchamart): The 'SVM' trait is AMD-only, and does not belong
# in this "common" file. But we need to retain it here forever to
# not cause Placement breakage.
'SVM',
# ref: https://git.qemu.org/?p=qemu.git;a=blob;f=docs/qemu-cpu-models.texi
# Recommended to allow guest OS to use 1 GB size memory pages. Not
# included by default in any of the Intel and AMD CPU models. So
# this should be explicitly turned on for all Intel and AMD CPU
# models.
'PDPE1GB',
# ref: https://git.qemu.org/?p=qemu.git;a=blob;f=docs/qemu-cpu-models.texi
# Required to enable stronger Spectre v2 (CVE-2017-5715) fixes in
# some operating systems. This flag must be explicitly turned on
# for *all* Intel and AMD CPU models. (Prerequisite: host CPU
# microcode needs to support this feature before it can be used for
# guest CPUs).
'STIBP',
]
|