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