| 3138 | } |
| 3139 | |
| 3140 | hipError_t hipGraphAddNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, |
| 3141 | const hipGraphNode_t* pDependencies, size_t numDependencies, |
| 3142 | hipGraphNodeParams* nodeParams) { |
| 3143 | HIP_INIT_API(hipGraphAddNode, pGraphNode, graph, pDependencies, numDependencies, nodeParams); |
| 3144 | if (pGraphNode == nullptr || graph == nullptr || |
| 3145 | (numDependencies > 0 && pDependencies == nullptr) || nodeParams == nullptr) { |
| 3146 | HIP_RETURN(hipErrorInvalidValue); |
| 3147 | } |
| 3148 | hipGraphNodeType nodeType = nodeParams->type; |
| 3149 | hip::GraphNode* node; |
| 3150 | hipError_t status = hipSuccess; |
| 3151 | hip::GraphMemAllocNode* mem_alloc_node; |
| 3152 | amd::Memory* memory; |
| 3153 | size_t offset; |
| 3154 | hipMemAllocNodeParams params; |
| 3155 | |
| 3156 | switch (nodeType) { |
| 3157 | case hipGraphNodeTypeKernel: |
| 3158 | status = ihipGraphAddKernelNode(&node, reinterpret_cast<hip::Graph*>(graph), |
| 3159 | reinterpret_cast<hip::GraphNode* const*>(pDependencies), |
| 3160 | numDependencies, &nodeParams->kernel, nullptr, false); |
| 3161 | break; |
| 3162 | case hipGraphNodeTypeMemcpy: |
| 3163 | status = ihipGraphAddMemcpyNode(&node, reinterpret_cast<hip::Graph*>(graph), |
| 3164 | reinterpret_cast<hip::GraphNode* const*>(pDependencies), |
| 3165 | numDependencies, &nodeParams->memcpy.copyParams, false); |
| 3166 | break; |
| 3167 | case hipGraphNodeTypeMemset: |
| 3168 | status = ihipGraphAddMemsetNode(&node, reinterpret_cast<hip::Graph*>(graph), |
| 3169 | reinterpret_cast<hip::GraphNode* const*>(pDependencies), |
| 3170 | numDependencies, &nodeParams->memset, false); |
| 3171 | break; |
| 3172 | case hipGraphNodeTypeHost: |
| 3173 | if (nodeParams->host.fn == nullptr) { |
| 3174 | HIP_RETURN(hipErrorInvalidValue); |
| 3175 | } |
| 3176 | node = new hip::GraphHostNode(&nodeParams->host); |
| 3177 | status = ihipGraphAddNode(node, reinterpret_cast<hip::Graph*>(graph), |
| 3178 | reinterpret_cast<hip::GraphNode* const*>(pDependencies), |
| 3179 | numDependencies, false); |
| 3180 | break; |
| 3181 | case hipGraphNodeTypeGraph: |
| 3182 | if (nodeParams->graph.graph == nullptr) { |
| 3183 | HIP_RETURN(hipErrorInvalidValue); |
| 3184 | } |
| 3185 | node = new hip::ChildGraphNode(reinterpret_cast<hip::Graph*>(nodeParams->graph.graph)); |
| 3186 | status = ihipGraphAddNode(node, reinterpret_cast<hip::Graph*>(graph), |
| 3187 | reinterpret_cast<hip::GraphNode* const*>(pDependencies), |
| 3188 | numDependencies, false); |
| 3189 | break; |
| 3190 | case hipGraphNodeTypeWaitEvent: |
| 3191 | if (nodeParams->eventWait.event == nullptr) { |
| 3192 | HIP_RETURN(hipErrorInvalidValue); |
| 3193 | } |
| 3194 | node = new hip::GraphEventWaitNode(nodeParams->eventWait.event); |
| 3195 | status = ihipGraphAddNode(node, reinterpret_cast<hip::Graph*>(graph), |
| 3196 | reinterpret_cast<hip::GraphNode* const*>(pDependencies), |
| 3197 | numDependencies, false); |
nothing calls this directly
no test coverage detected