================ @@ -0,0 +1,371 @@ +//===------- CGEmitEmissaryExec.cpp - Codegen for _emissary_exec --==------===// +// +// 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 +// +//===----------------------------------------------------------------------===// +// +// EmitEmissaryExec: +// +// When a device call to the varadic function _emissary_exec is encountered +// (in CGExpr.cpp) EmitEmissaryExec does these steps: +// +// 1. If string lens are runtime dependent, Emit code to determine runtime len. +// 2. Emits call to allocate memory __llvm_emissary_premalloc, +// 3. Emit stores of each arg into arg buffer, +// 4. Emits call to function __llvm_emissary_rpc or __llvm_emissary_rpc_dm +// +// The arg buffer is a struct that contains the length, number of args, an +// array of 4-byte keys that represent the type of of each arg, an array of +// aligned "data" values for each arg, and finally the runtime string values. +// If an arg is a string the data value is the runtime length of the string. +// Each 4-byte key contains the llvm type ID and the number of bits for the +// type. encoded by the macro _PACK_TY_BITLEN(x,y) ((uint32_t)x << 16) | +// ((uint32_t)y) +// +//===----------------------------------------------------------------------===// + +#include "../../../clang/lib/Headers/EmissaryIds.h" ---------------- LunNova wrote:
The circuitous `../../../clang` include path here may break standalone (non-monorepo) clang builds. https://github.com/llvm/llvm-project/pull/175265 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
