blob: 931b7308f6d9eaab1febfdedbe5a56689f34576f [file] [log] [blame]
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef rr_CPUID_hpp
16#define rr_CPUID_hpp
17
Nicolas Capens157ba262019-12-10 17:49:14 -050018namespace rr {
19
20#if !defined(__i386__) && defined(_M_IX86)
Ben Clayton713b8d32019-12-17 20:37:56 +000021# define __i386__ 1
Nicolas Capens157ba262019-12-10 17:49:14 -050022#endif
23
Ben Clayton713b8d32019-12-17 20:37:56 +000024#if !defined(__x86_64__) && (defined(_M_AMD64) || defined(_M_X64))
25# define __x86_64__ 1
Nicolas Capens157ba262019-12-10 17:49:14 -050026#endif
27
28class CPUID
Nicolas Capensc07dc4b2018-08-06 14:20:45 -040029{
Nicolas Capens157ba262019-12-10 17:49:14 -050030public:
Nicolas Capens157ba262019-12-10 17:49:14 -050031 static bool supportsSSE4_1();
Nicolas Capensad9eba42022-01-31 13:59:24 -050032 static bool supportsAVX2(); // Also ensures support for OSXSAVE and FMA
Nicolas Capens157ba262019-12-10 17:49:14 -050033};
Nicolas Capensc07dc4b2018-08-06 14:20:45 -040034
Nicolas Capens157ba262019-12-10 17:49:14 -050035} // namespace rr
Nicolas Capensc07dc4b2018-08-06 14:20:45 -040036
Ben Clayton713b8d32019-12-17 20:37:56 +000037#endif // rr_CPUID_hpp