xref: /aosp_15_r20/external/bazelbuild-remote-apis/build/bazel/remote/execution/v2/platform.md (revision ae21b2b400d1606a797985382019aea74177085c)
1# Platform Lexicon
2
3This lexicon defines standard platform property names and values that servers
4MAY support in the `Platform` message to facilitate interoperability. New
5values can be added by submitting a PR against this repository, which requires
6signing the [Google CLA](https://opensource.google/documentation/reference/cla).
7If signing the Google CLA is undesirable, you may submit an issue instead.
8
9The following standard property `name`s are defined:
10
11* `OSFamily`: This describes the operating system family. Multiple values
12  are not allowed and an exact match is required.
13
14  The following standard values are defined:
15
16    - `aix`
17    - `freebsd`
18    - `linux`
19    - `macos`
20    - `sunos`
21    - `windows`
22
23  Additional values may be defined by the server. For other POSIX systems
24  the recommendation is to use the output of `uname -s` in lower case.
25
26* `ISA`: This describes the instruction set architecture including
27  instruction set extensions and versions. Multiple values are allowed. If
28  multiple values are specified, they are AND-ed together: the worker is
29  required to support all of the listed values.
30
31  The following standard instruction set architecture values are defined:
32
33    - `arm-a32` (little endian)
34    - `arm-a32-be` (big endian)
35    - `arm-a64` (little endian)
36    - `arm-a64-be` (big endian)
37    - `arm-t32` (little endian)
38    - `arm-t32-be` (big endian)
39    - `la64v100` (little endian)
40    - `power-isa-be` (big endian)
41    - `power-isa-le` (little endian)
42    - `rv32g` (little endian)
43    - `rv64g` (little endian)
44    - `sparc-v9` (big endian)
45    - `x86-32`
46    - `x86-64`
47
48  The following standard instruction set extension and version values are
49  defined:
50
51    - `arm-neon`
52    - `arm-sve`
53    - `arm-vfpv3`
54    - `arm-vfpv4`
55    - `armv6`
56    - `armv7`
57    - `armv8`
58    - `x86-avx`
59    - `x86-avx2`
60    - `x86-avx-512`
61    - `x86-sse4.1`
62    - `x86-sse4.2`
63
64  Additional values may be defined by the server. Vendor-neutral names are
65  recommended.
66
67  Clients SHOULD NOT request instruction set extensions or versions without
68  requesting an instruction set architecture.
69
70  Examples with multiple values:
71
72  ```json
73  // (Platform proto)
74  {
75    "properties": [
76      {
77        "name": "ISA",
78        "value": "x86-64"
79      },
80      {
81        "name": "ISA",
82        "value": "x86-avx2"
83      }
84    ]
85  }
86  ```
87
88  ```json
89  // (Platform proto)
90  {
91    "properties": [
92      {
93        "name": "ISA",
94        "value": "arm-a64"
95      },
96      {
97        "name": "ISA",
98        "value": "armv8"
99      },
100      {
101        "name": "ISA",
102        "value": "arm-sve"
103      }
104    ]
105  }
106  ```
107
108  ```json
109  // (Platform proto)
110  {
111    "properties": [
112      {
113        "name": "ISA",
114        "value": "arm-a32"
115      },
116      {
117        "name": "ISA",
118        "value": "armv7"
119      },
120      {
121        "name": "ISA",
122        "value": "arm-vfpv4"
123      }
124    ]
125  }
126  ```
127