1 | /* |
2 | * Copyright 2013-present Facebook, Inc. |
3 | * |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | * you may not use this file except in compliance with the License. |
6 | * You may obtain a copy of the License at |
7 | * |
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
9 | * |
10 | * Unless required by applicable law or agreed to in writing, software |
11 | * distributed under the License is distributed on an "AS IS" BASIS, |
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. |
15 | */ |
16 | |
17 | #include <folly/experimental/test/CodingTestUtils.h> |
18 | |
19 | #include <folly/portability/GFlags.h> |
20 | #include <glog/logging.h> |
21 | |
22 | DEFINE_string( |
23 | coding_test_utils_instructions, |
24 | "" , |
25 | "If non empty, forces the instruction set. Choices: Default, Nehalem, Haswell" ); |
26 | |
27 | namespace folly { |
28 | namespace compression { |
29 | |
30 | folly::Optional<instructions::Type> instructionsOverride() { |
31 | if (FLAGS_coding_test_utils_instructions.empty()) { |
32 | return folly::none; |
33 | } |
34 | |
35 | instructions::Type type; |
36 | if (FLAGS_coding_test_utils_instructions == "Default" ) { |
37 | type = instructions::Type::DEFAULT; |
38 | } else if (FLAGS_coding_test_utils_instructions == "Nehalem" ) { |
39 | type = instructions::Type::NEHALEM; |
40 | } else if (FLAGS_coding_test_utils_instructions == "Haswell" ) { |
41 | type = instructions::Type::HASWELL; |
42 | } else { |
43 | LOG(FATAL) << "Insupported instructions type " |
44 | << FLAGS_coding_test_utils_instructions; |
45 | } |
46 | |
47 | instructions::dispatch( |
48 | type, [](auto instructions) { CHECK(instructions.supported()); }); |
49 | |
50 | return type; |
51 | } |
52 | |
53 | } // namespace compression |
54 | } // namespace folly |
55 | |