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 RPC_NOOP = LLVM_LIBC_OPCODE(0), 19 RPC_EXIT = LLVM_LIBC_OPCODE(1), 20 RPC_WRITE_TO_STDOUT = LLVM_LIBC_OPCODE(2), 21 RPC_WRITE_TO_STDERR = LLVM_LIBC_OPCODE(3), 22 RPC_WRITE_TO_STREAM = LLVM_LIBC_OPCODE(4), 23 RPC_WRITE_TO_STDOUT_NEWLINE = LLVM_LIBC_OPCODE(5), 24 RPC_READ_FROM_STREAM = LLVM_LIBC_OPCODE(6), 25 RPC_READ_FGETS = LLVM_LIBC_OPCODE(7), 26 RPC_OPEN_FILE = LLVM_LIBC_OPCODE(8), 27 RPC_CLOSE_FILE = LLVM_LIBC_OPCODE(9), 28 RPC_MALLOC = LLVM_LIBC_OPCODE(10), 29 RPC_FREE = LLVM_LIBC_OPCODE(11), 30 RPC_HOST_CALL = LLVM_LIBC_OPCODE(12), 31 RPC_ABORT = LLVM_LIBC_OPCODE(13), 32 RPC_FEOF = LLVM_LIBC_OPCODE(14), 33 RPC_FERROR = LLVM_LIBC_OPCODE(15), 34 RPC_CLEARERR = LLVM_LIBC_OPCODE(16), 35 RPC_FSEEK = LLVM_LIBC_OPCODE(17), 36 RPC_FTELL = LLVM_LIBC_OPCODE(18), 37 RPC_FFLUSH = LLVM_LIBC_OPCODE(19), 38 RPC_UNGETC = LLVM_LIBC_OPCODE(20), 39 RPC_PRINTF_TO_STDOUT = LLVM_LIBC_OPCODE(21), 40 RPC_PRINTF_TO_STDERR = LLVM_LIBC_OPCODE(22), 41 RPC_PRINTF_TO_STREAM = LLVM_LIBC_OPCODE(23), 42 RPC_PRINTF_TO_STDOUT_PACKED = LLVM_LIBC_OPCODE(24), 43 RPC_PRINTF_TO_STDERR_PACKED = LLVM_LIBC_OPCODE(25), 44 RPC_PRINTF_TO_STREAM_PACKED = LLVM_LIBC_OPCODE(26), 45 RPC_REMOVE = LLVM_LIBC_OPCODE(27), 46 RPC_RENAME = LLVM_LIBC_OPCODE(28), 47 RPC_SYSTEM = LLVM_LIBC_OPCODE(29), 48 RPC_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