xref: /llvm-project/libc/shared/rpc_opcodes.h (revision a6ef0debb1d60966b5bcc69f7d58a2b75c9c621d)
1 //===-- Definition of RPC opcodes -----------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_LIBC_SHARED_RPC_OPCODES_H
10 #define LLVM_LIBC_SHARED_RPC_OPCODES_H
11 
12 #include "rpc.h"
13 
14 #define LLVM_LIBC_RPC_BASE 'c'
15 #define LLVM_LIBC_OPCODE(n) (LLVM_LIBC_RPC_BASE << 24 | n)
16 
17 typedef enum {
18   LIBC_NOOP = LLVM_LIBC_OPCODE(0),
19   LIBC_EXIT = LLVM_LIBC_OPCODE(1),
20   LIBC_WRITE_TO_STDOUT = LLVM_LIBC_OPCODE(2),
21   LIBC_WRITE_TO_STDERR = LLVM_LIBC_OPCODE(3),
22   LIBC_WRITE_TO_STREAM = LLVM_LIBC_OPCODE(4),
23   LIBC_WRITE_TO_STDOUT_NEWLINE = LLVM_LIBC_OPCODE(5),
24   LIBC_READ_FROM_STREAM = LLVM_LIBC_OPCODE(6),
25   LIBC_READ_FGETS = LLVM_LIBC_OPCODE(7),
26   LIBC_OPEN_FILE = LLVM_LIBC_OPCODE(8),
27   LIBC_CLOSE_FILE = LLVM_LIBC_OPCODE(9),
28   LIBC_MALLOC = LLVM_LIBC_OPCODE(10),
29   LIBC_FREE = LLVM_LIBC_OPCODE(11),
30   LIBC_HOST_CALL = LLVM_LIBC_OPCODE(12),
31   LIBC_ABORT = LLVM_LIBC_OPCODE(13),
32   LIBC_FEOF = LLVM_LIBC_OPCODE(14),
33   LIBC_FERROR = LLVM_LIBC_OPCODE(15),
34   LIBC_CLEARERR = LLVM_LIBC_OPCODE(16),
35   LIBC_FSEEK = LLVM_LIBC_OPCODE(17),
36   LIBC_FTELL = LLVM_LIBC_OPCODE(18),
37   LIBC_FFLUSH = LLVM_LIBC_OPCODE(19),
38   LIBC_UNGETC = LLVM_LIBC_OPCODE(20),
39   LIBC_PRINTF_TO_STDOUT = LLVM_LIBC_OPCODE(21),
40   LIBC_PRINTF_TO_STDERR = LLVM_LIBC_OPCODE(22),
41   LIBC_PRINTF_TO_STREAM = LLVM_LIBC_OPCODE(23),
42   LIBC_PRINTF_TO_STDOUT_PACKED = LLVM_LIBC_OPCODE(24),
43   LIBC_PRINTF_TO_STDERR_PACKED = LLVM_LIBC_OPCODE(25),
44   LIBC_PRINTF_TO_STREAM_PACKED = LLVM_LIBC_OPCODE(26),
45   LIBC_REMOVE = LLVM_LIBC_OPCODE(27),
46   LIBC_RENAME = LLVM_LIBC_OPCODE(28),
47   LIBC_SYSTEM = LLVM_LIBC_OPCODE(29),
48   LIBC_LAST = 0xFFFFFFFF,
49 } rpc_opcode_t;
50 
51 #undef LLVM_LIBC_OPCODE
52 
53 namespace rpc {
54 // The implementation of this function currently lives in the utility directory
55 // at 'utils/gpu/server/rpc_server.cpp'.
56 rpc::Status handle_libc_opcodes(rpc::Server::Port &port, uint32_t num_lanes);
57 } // namespace rpc
58 
59 #endif // LLVM_LIBC_SHARED_RPC_OPCODES_H
60