| //===-- lib/runtime/io-api-gpu.h --------------------------------*- C++ -*-===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef FLANG_RT_RUNTIME_IO_API_GPU_H_ | |
| #define FLANG_RT_RUNTIME_IO_API_GPU_H_ | |
| #include <cstdint> | |
| namespace Fortran::runtime::io { | |
| // Registers the callbacks with the offloading runtime. | |
| void RegisterRPCHandlers(); | |
| // We reserve the RPC opcodes with 'f' in the MSB for Fortran usage. | |
| constexpr std::uint32_t MakeOpcode(std::uint32_t base) { | |
| return ('f' << 24) | base; | |
| } | |
| // Opcodes shared between the client and server for each function we support. | |
| enum RPCOpcodes : std::uint32_t { | |
| BeginExternalListOutput_Opcode = MakeOpcode(0), | |
| BeginExternalFormattedOutput_Opcode = MakeOpcode(1), | |
| EnableHandlers_Opcode = MakeOpcode(2), | |
| EndIoStatement_Opcode = MakeOpcode(3), | |
| OutputInteger8_Opcode = MakeOpcode(4), | |
| OutputInteger16_Opcode = MakeOpcode(5), | |
| OutputInteger32_Opcode = MakeOpcode(6), | |
| OutputInteger64_Opcode = MakeOpcode(7), | |
| OutputInteger128_Opcode = MakeOpcode(8), | |
| OutputReal32_Opcode = MakeOpcode(9), | |
| OutputReal64_Opcode = MakeOpcode(10), | |
| OutputComplex32_Opcode = MakeOpcode(11), | |
| OutputComplex64_Opcode = MakeOpcode(12), | |
| OutputAscii_Opcode = MakeOpcode(13), | |
| OutputCharacter_Opcode = MakeOpcode(14), | |
| OutputLogical_Opcode = MakeOpcode(15), | |
| }; | |
| } // namespace Fortran::runtime::io | |
| #endif // FLANG_RT_RUNTIME_IO_API_GPU_H_ |