Skip to content

Commit ebe04db

Browse files
ajordanr-googleGerrit Code Review
authored and
Gerrit Code Review
committed
Merge "bionic: Add tests for cpu target features" into main
2 parents 77eab07 + b975a72 commit ebe04db

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

tests/Android.bp

+1
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ cc_test_library {
389389
"bug_26110743_test.cpp",
390390
"byteswap_test.cpp",
391391
"complex_test.cpp",
392+
"cpu_target_features_test.cpp",
392393
"ctype_test.cpp",
393394
"dirent_test.cpp",
394395
"elf_test.cpp",

tests/cpu_target_features_test.cpp

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
* Copyright (C) 2024 The Android Open Source Project
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* * Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* * Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in
12+
* the documentation and/or other materials provided with the
13+
* distribution.
14+
*
15+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19+
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22+
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23+
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25+
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26+
* SUCH DAMAGE.
27+
*/
28+
29+
#include <gtest/gtest.h>
30+
#include <stdlib.h>
31+
32+
#include "utils.h"
33+
34+
TEST(cpu_target_features, has_expected_x86_compiler_values) {
35+
#if defined(__x86_64__) || defined(__i386__)
36+
ExecTestHelper eth;
37+
char* const argv[] = {nullptr};
38+
const auto invocation = [&] { execvp("cpu-target-features", argv); };
39+
eth.Run(invocation, 0, "(^|\n)__AES__=1($|\n)");
40+
eth.Run(invocation, 0, "(^|\n)__CRC32__=1($|\n)");
41+
#else
42+
GTEST_SKIP() << "Not targeting an x86 architecture.";
43+
#endif
44+
}
45+
46+
TEST(cpu_target_features, has_expected_aarch64_compiler_values) {
47+
#if defined(__aarch64__)
48+
ExecTestHelper eth;
49+
char* const argv[] = {nullptr};
50+
const auto invocation = [&] { execvp("cpu-target-features", argv); };
51+
eth.Run(invocation, 0, "(^|\n)__ARM_FEATURE_AES=1($|\n)");
52+
eth.Run(invocation, 0, "(^|\n)__ARM_FEATURE_CRC32=1($|\n)");
53+
#else
54+
GTEST_SKIP() << "Not targeting an aarch64 architecture.";
55+
#endif
56+
}
57+
58+
TEST(cpu_target_features, has_expected_arm_compiler_values) {
59+
#if defined(__arm__)
60+
ExecTestHelper eth;
61+
char* const argv[] = {nullptr};
62+
const auto invocation = [&] { execvp("cpu-target-features", argv); };
63+
eth.Run(invocation, 0, "(^|\n)__ARM_FEATURE_AES=1($|\n)");
64+
eth.Run(invocation, 0, "(^|\n)__ARM_FEATURE_CRC32=1($|\n)");
65+
#else
66+
GTEST_SKIP() << "Not targeting an arm architecture.";
67+
#endif
68+
}

0 commit comments

Comments
 (0)