Skip to content

Commit b15959a

Browse files
mcr229facebook-github-bot
authored andcommitted
add cpuinfo
Summary: adding cpu info submodule to XNNPACK delegate's third-party libraries Differential Revision: D48180549 fbshipit-source-id: 9e320cf318ffd9b12ccdf70c9d40ad0125f4ea17
1 parent 6f20c74 commit b15959a

File tree

6 files changed

+180
-0
lines changed

6 files changed

+180
-0
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,6 @@
1313
[submodule "backends/xnnpack/third-party/pthreadpool"]
1414
path = backends/xnnpack/third-party/pthreadpool
1515
url = https://github.com/Maratyszcza/pthreadpool.git
16+
[submodule "backends/xnnpack/third-party/cpuinfo"]
17+
path = backends/xnnpack/third-party/cpuinfo
18+
url = https://github.com/pytorch/cpuinfo.git
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
load(":pthreadpool_defs.bzl", "define_pthreadpool")
2+
load(":cpuinfo_defs.bzl", "define_cpuinfo_and_clog")
23

34
define_pthreadpool()
5+
6+
define_cpuinfo_and_clog()

backends/xnnpack/third-party/cpuinfo

Submodule cpuinfo added at 6481e8b
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
def define_cpuinfo_and_clog():
2+
# @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
3+
native.cxx_library(
4+
name = "cpuinfo",
5+
srcs = [
6+
"cpuinfo-wrappers/api.c",
7+
"cpuinfo-wrappers/arm/android/properties.c",
8+
"cpuinfo-wrappers/arm/cache.c",
9+
"cpuinfo-wrappers/arm/linux/aarch32-isa.c",
10+
"cpuinfo-wrappers/arm/linux/aarch64-isa.c",
11+
"cpuinfo-wrappers/arm/linux/chipset.c",
12+
"cpuinfo-wrappers/arm/linux/clusters.c",
13+
"cpuinfo-wrappers/arm/linux/cpuinfo.c",
14+
"cpuinfo-wrappers/arm/linux/hwcap.c",
15+
"cpuinfo-wrappers/arm/linux/init.c",
16+
"cpuinfo-wrappers/arm/linux/midr.c",
17+
"cpuinfo-wrappers/arm/mach/init.c",
18+
"cpuinfo-wrappers/arm/uarch.c",
19+
"cpuinfo-wrappers/cache.c",
20+
"cpuinfo-wrappers/init.c",
21+
"cpuinfo-wrappers/linux/cpulist.c",
22+
"cpuinfo-wrappers/linux/multiline.c",
23+
"cpuinfo-wrappers/linux/processors.c",
24+
"cpuinfo-wrappers/linux/smallfile.c",
25+
"cpuinfo-wrappers/mach/topology.c",
26+
"cpuinfo-wrappers/x86/cache/descriptor.c",
27+
"cpuinfo-wrappers/x86/cache/deterministic.c",
28+
"cpuinfo-wrappers/x86/cache/init.c",
29+
"cpuinfo-wrappers/x86/info.c",
30+
"cpuinfo-wrappers/x86/init.c",
31+
"cpuinfo-wrappers/x86/isa.c",
32+
"cpuinfo-wrappers/x86/linux/cpuinfo.c",
33+
"cpuinfo-wrappers/x86/linux/init.c",
34+
"cpuinfo-wrappers/x86/mach/init.c",
35+
"cpuinfo-wrappers/x86/name.c",
36+
"cpuinfo-wrappers/x86/topology.c",
37+
"cpuinfo-wrappers/x86/uarch.c",
38+
"cpuinfo-wrappers/x86/vendor.c",
39+
"cpuinfo-wrappers/x86/windows/init.c",
40+
],
41+
include_directories = ["cpuinfo/src"],
42+
public_include_directories = ["cpuinfo/include"],
43+
raw_headers = native.glob([
44+
"cpuinfo/src/**/*.h",
45+
"cpuinfo/src/**/*.c",
46+
]),
47+
preferred_linkage = "static",
48+
preprocessor_flags = [
49+
"-DCPUINFO_LOG_LEVEL=2",
50+
"-D_GNU_SOURCE=1",
51+
],
52+
visibility = ["PUBLIC"],
53+
deps = [
54+
":clog",
55+
],
56+
)
57+
58+
# @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
59+
native.cxx_library(
60+
name = "clog",
61+
srcs = [
62+
"cpuinfo/deps/clog/src/clog.c",
63+
],
64+
raw_headers = native.glob([
65+
"cpuinfo/deps/clog/include/*.h",
66+
]),
67+
public_include_directories = [
68+
"cpuinfo/deps/clog/include/",
69+
],
70+
force_static = True,
71+
visibility = ["PUBLIC"],
72+
)
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#!/usr/bin/env python3
2+
3+
from __future__ import print_function
4+
import os
5+
6+
7+
CPUINFO_SOURCES = {
8+
None: [
9+
"init.c",
10+
"api.c",
11+
"cache.c",
12+
],
13+
"defined(__linux__)": [
14+
"linux/multiline.c",
15+
"linux/cpulist.c",
16+
"linux/mockfile.c",
17+
"linux/smallfile.c",
18+
"linux/processors.c",
19+
],
20+
"defined(__MACH__) && defined(__APPLE__)": [
21+
"mach/topology.c",
22+
],
23+
"defined(__i386__) || defined(__i686__) || defined(__x86_64__) || defined(_WIN32)": [
24+
"x86/cache/init.c",
25+
"x86/cache/deterministic.c",
26+
"x86/cache/descriptor.c",
27+
"x86/info.c",
28+
"x86/mockcpuid.c",
29+
"x86/isa.c",
30+
"x86/topology.c",
31+
"x86/name.c",
32+
"x86/init.c",
33+
"x86/uarch.c",
34+
"x86/vendor.c",
35+
],
36+
"(defined(__i386__) || defined(__i686__) || defined(__x86_64__)) && defined(__linux__)": [
37+
"x86/linux/init.c",
38+
"x86/linux/cpuinfo.c",
39+
],
40+
"(defined(__i386__) || defined(__i686__) || defined(__x86_64__)) && defined(__MACH__) && defined(__APPLE__)": [
41+
"x86/mach/init.c",
42+
],
43+
"defined(_WIN32)": [
44+
"x86/windows/init.c",
45+
],
46+
"(defined(__arm__) || defined(__aarch64__)) && defined(__linux__)": [
47+
"arm/linux/cpuinfo.c",
48+
"arm/linux/hwcap.c",
49+
"arm/linux/init.c",
50+
"arm/linux/clusters.c",
51+
"arm/linux/midr.c",
52+
"arm/linux/chipset.c",
53+
"arm/tlb.c",
54+
"arm/uarch.c",
55+
"arm/cache.c",
56+
],
57+
"defined(__arm__) && defined(__linux__)": [
58+
"arm/linux/aarch32-isa.c",
59+
],
60+
"defined(__aarch64__) && defined(__linux__)": [
61+
"arm/linux/aarch64-isa.c",
62+
],
63+
"(defined(__arm__) || defined(__aarch64__)) && defined(__ANDROID__)": [
64+
"arm/android/properties.c",
65+
],
66+
"(defined(__arm__) || defined(__aarch64__)) && defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE": [
67+
"arm/mach/init.c",
68+
],}
69+
70+
71+
if __name__ == "__main__":
72+
for condition, filenames in CPUINFO_SOURCES.items():
73+
for filename in filenames:
74+
filepath = os.path.join("cpuinfo-wrappers", filename)
75+
if not os.path.exists(os.path.dirname(filepath)):
76+
print(filepath)
77+
os.makedirs(os.path.dirname(filepath))
78+
with open(filepath, "w") as wrapper:
79+
print("/* Auto-generated by generate-wrappers.py script. Do not modify */", file=wrapper)
80+
print(file=wrapper)
81+
print("#ifdef __APPLE__", file=wrapper)
82+
print("\t#include <TargetConditionals.h>", file=wrapper)
83+
print("#endif /* __APPLE__ */", file=wrapper)
84+
print(file=wrapper)
85+
86+
if not condition:
87+
print("#include <%s>" % filename, file=wrapper)
88+
else:
89+
# Include source file only if condition is satisfied
90+
print("#if %s" % condition, file=wrapper)
91+
print("#include <%s>" % filename, file=wrapper)
92+
print("#endif /* %s */" % condition, file=wrapper)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/bash
2+
# Copyright (c) Meta Platforms, Inc. and affiliates.
3+
# All rights reserved.
4+
#
5+
# This source code is licensed under the BSD-style license found in the
6+
# LICENSE file in the root directory of this source tree.
7+
8+
printf "\nGenerating cpuinfo wrappers\n"
9+
python3 generate-cpuinfo-wrappers.py

0 commit comments

Comments
 (0)