| // Copyright 2021 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Define features that are guaranteed to be supported by setting the AMD64 variable. |
| // If a feature is supported, there's no need to check it at runtime every time. |
| |
| #ifdef GOAMD64_v2 |
| #define hasPOPCNT |
| #define hasSSE42 |
| #endif |
| |
| #ifdef GOAMD64_v3 |
| #define hasAVX |
| #define hasAVX2 |
| #define hasPOPCNT |
| #define hasSSE42 |
| #endif |
| |
| #ifdef GOAMD64_v4 |
| #define hasAVX |
| #define hasAVX2 |
| #define hasAVX512F |
| #define hasAVX512BW |
| #define hasAVX512VL |
| #define hasPOPCNT |
| #define hasSSE42 |
| #endif |