//==============================================================================
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Copyright (c) 2019-2021 Qualcomm Technologies, Inc.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// All Rights Reserved.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Confidential and Proprietary - Qualcomm Technologies, Inc.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//==============================================================================
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//==============================================================================
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  THIS  HEADER  FILE  IS  COPIED  FROM  HEXAGON - NN  PROJECT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//==============================================================================
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Header to be used by a DSP Hexnn UDO Implementation library
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef SNPE_UDO_IMPL_DSP_H 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define SNPE_UDO_IMPL_DSP_H 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stdio.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "SnpeUdo/UdoImpl.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @addtogroup c_plus_plus_apis C++
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@ {  */ 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  A  function  to  validate  that  a  set  of  params  is  supported  by  an  operation 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         This  function  is  HexNN  specific ,  use  case  is  when  registration  library  is  not  in  use . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         Optional  function . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in ]  operationType  Operation  type 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in ]  numOfStaticParams  Number  of  static  params  defined  by  the  op 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in ]  staticParams  Array  of  static  params  to  the  op 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  Error  code ,  indicating  if  the  operation  can  be  created  on  this  set  of  configuration  or  not . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SnpeUdo_ErrorType_t 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SnpeUdo_validateOperation  ( SnpeUdo_String_t  operationType , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           uint32_t  numOfStaticParams , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           const  SnpeUdo_Param_t *  staticParams ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  SnpeUdo_ErrorType_t  ( * SnpeUdo_ValidateOperationFunction_t )  ( SnpeUdo_String_t , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                    uint32_t , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                    const  SnpeUdo_Param_t * ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  SnpeUdo_ValidateOperationFunction_t  Udo_ValidateOperationFunction_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// enum used for indicating input/outout tensor data layouts on DSP, plain vs d32
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  enum  { 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								        SNPE_UDO_DSP_TENSOR_LAYOUT_PLAIN  =  0x00 ,         UDO_DSP_TENSOR_LAYOUT_PLAIN  =  0x00 , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SNPE_UDO_DSP_TENSOR_LAYOUT_D32    =  0x01 ,         UDO_DSP_TENSOR_LAYOUT_D32    =  0x01 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  SnpeUdo_HexNNTensorLayout_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  SnpeUdo_HexNNTensorLayout_t  Udo_HexNNTensorLayout_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  A  function  to  query  numbers  of  inputs  and  outputs , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         quantization  type  of  each  input  and  each  output  as  arrays , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         and  data  layout  ( plain  vs  d32 )  of  each  input  and  each  output  as  arrays 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *         of  an  operation . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  inputsQuantTypes  and  inputsLayouts  should  point  to  arrays  of  size  numOfInputs 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  outputsQuantTypes  and  outputsLayouts  should  point  to  arrays  of  size  numOfOutputs 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Note :  inputsLayouts  and  inputsLayouts  can  point  to  NULL ,  in  this  case ,  it  is 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  assumed  all  inputs  and / or  outputs  have  plain  data  layouts ,  i . e .  no  D32 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in ]  operationType  Operation  type 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in ]  numOfStaticParams  Number  of  static  params  defined  by  the  op 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in ]  staticParams  Array  of  static  params  to  the  op 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in , out ]  numOfInputs  Number  of  input  tensors  to  the  op 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in , out ]  inputsQuantTypes  Array  of  Quantization  info  for  each  input  tensor 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in , out ]  inputsLayouts  Array  of  layout  type  for  each  input  tensor 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in , out ]  numOfOutputs  Number  of  output  tensors  to  the  op 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in , out ]  outputsQuantTypes  Array  of  Quantization  info  for  each  output  tensor 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param [ in , out ]  outputsLayouts  Array  of  layout  type  for  each  output  tensor 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  error  code ,  indicating  status  of  query 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SnpeUdo_ErrorType_t 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SnpeUdo_queryOperation  ( SnpeUdo_String_t  operationType , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        uint32_t  numOfStaticParams , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        const  SnpeUdo_Param_t *  staticParams , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        uint32_t *  numOfInputs , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        SnpeUdo_QuantizationType_t * *  inputsQuantTypes , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        SnpeUdo_HexNNTensorLayout_t * *  inputsLayouts , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        uint32_t *  numOfOutputs , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        SnpeUdo_QuantizationType_t * *  outputsQuantTypes , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        SnpeUdo_HexNNTensorLayout_t * *  outputsLayouts ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  SnpeUdo_ErrorType_t  ( * SnpeUdo_QueryOperationFunction_t )  ( SnpeUdo_String_t , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                 uint32_t , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                 const  SnpeUdo_Param_t * , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                 uint32_t * , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                 SnpeUdo_QuantizationType_t * * , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                 SnpeUdo_HexNNTensorLayout_t * * , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                 uint32_t * , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                 SnpeUdo_QuantizationType_t * * , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                 SnpeUdo_HexNNTensorLayout_t * * ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  SnpeUdo_QueryOperationFunction_t  Udo_QueryOperationFunction_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Global infrastructure functions supported by Hexagon-NN v2
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void  ( * workerThread_t )  ( void *  perOpInfrastructure ,  void *  userData ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ( * udoSetOutputTensorSize_t )  ( void *  perOpInfrastructure ,  uint32_t  outIdx ,  uint32_t  size ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ( * udoGetInputD32Paddings_t )  ( void *  perOpInfrastructure ,  uint32_t  inIdx , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                         uint32_t *  heightPadBefore ,  uint32_t *  heightPadAfter , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                         uint32_t *  widthPadBefore ,  uint32_t *  widthPadAfter , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                         uint32_t *  depthPadBefore ,  uint32_t *  depthPadAfter ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ( * udoSetOutputD32ShapeSizePaddings_t )  ( void *  perOpInfrastructure ,  uint32_t  outIdx , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                   uint32_t  batch , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                   uint32_t  height ,  uint32_t  heightPadBefore ,  uint32_t  heightPadAfter , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                   uint32_t  width ,  uint32_t  widthPadBefore ,  uint32_t  widthPadAfter , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                   uint32_t  depth ,  uint32_t  depthPadBefore ,  uint32_t  depthPadAfter , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                   SnpeUdo_DataType_t  dataType ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void *  ( * udoMemalign_t )  ( size_t  n ,  size_t  size ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void *  ( * udoMalloc_t )  ( size_t  size ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void *  ( * udoCalloc_t )  ( size_t  n ,  size_t  size ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void  ( * udoFree_t )  ( void *  ptr ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  uint32_t  ( * udoGetVtcmSize_t )  ( void *  perOpInfrastructure ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void *  ( * udoGetVtcmPtr_t )  ( void *  perOpInfrastructure ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  uint32_t  ( * udoVtcmIsReal_t )  ( void *  perOpInfrastructure ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void  ( * udoRunWorkerThreads_t )  ( void *  perOpInfrastructure ,  uint32_t  nThreads ,  workerThread_t  w ,  void *  userData ) ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  hexNNv2GlobalInfra  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoSetOutputTensorSize_t  udoSetOutputTensorSize ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoGetInputD32Paddings_t  udoGetInputD32Paddings ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoSetOutputD32ShapeSizePaddings_t  udoSetOutputD32ShapeSizePaddings ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoMemalign_t  udoMemalign ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoMalloc_t  udoMalloc ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoCalloc_t  udoCalloc ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoFree_t  udoFree ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoGetVtcmSize_t  udoGetVtcmSize ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoGetVtcmPtr_t  udoGetVtcmPtr ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoVtcmIsReal_t  udoVtcmIsReal ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    udoRunWorkerThreads_t  udoRunWorkerThreads ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  SnpeUdo_HexNNv2GlobalInfra_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  SnpeUdo_HexNNv2GlobalInfra_t  Udo_HexNNv2GlobalInfra_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// hexnn types
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  enum  hexnnInfraType  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   UDO_INFRA_HEXNN_V2 , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   UDO_INFRA_HEXNN_V3    // reserved, do not use
   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  SnpeUdo_HexNNInfraType_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  SnpeUdo_HexNNInfraType_t  Udo_HexNNInfraType_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Udo_CreateOpFactoryFunction_t  create_op_factory ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Udo_CreateOperationFunction_t  create_operation ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Udo_ExecuteOpFunction_t  execute_op ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Udo_ReleaseOpFunction_t  release_op ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Udo_ReleaseOpFactoryFunction_t  release_op_factory ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Udo_ValidateOperationFunction_t  validate_op ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Udo_QueryOperationFunction_t  query_op ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  udo_func_package_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Infrastructures  needed  by  a  developer  of  DSP  Hexnn  UDO  Implementation  library . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  framework / runtime  which  loads  the  Hexnn  UDO  implementation  library  provides 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  this  infrastructure  to  the  loaded  library  by  calling  " SnpeUdo_initImplLibrary " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  function ,  and  passing  it  ( cast  to  void * ) .  The  Hexnn  UDO  library  is  expected 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  to  cast  it  back  to  this  structure . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  dspGlobalInfrastructure  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SnpeUdo_Version_t    dspInfraVersion ;      // api version
   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SnpeUdo_HexNNInfraType_t  infraType ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SnpeUdo_HexNNv2GlobalInfra_t  hexNNv2Infra ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  SnpeUdo_DspGlobalInfrastructure_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  SnpeUdo_DspGlobalInfrastructure_t  Udo_DspGlobalInfrastructure_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  hexnn  v2  per  op  factory  infrastructure 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  framework / runtime  passes  per  op  factory  infrastructure  as  a  void  pointer 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  to  HexNN  UDO  implementation  library  by  calling  function  " SnpeUdo_createOpFactory " . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  UDO  implementation  library  is  expected  to  cast  it  back  to  this  following  struct . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  hexnnv2OpFactoryInfra  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   unsigned  long  graphId ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  SnpeUdo_HexNNv2OpFactoryInfra_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  SnpeUdo_HexNNv2OpFactoryInfra_t  Udo_HexNNv2OpFactoryInfra_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  hexnn  v2  per  operation  infrastructure 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  framework / runtime  passes  per  operation  infrastructure  as  a  void  pointer 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  to  HexNN  UDO  implementation  library  by  calling  function  " SnpeUdo_createOperation " . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  UDO  implementation  library  is  expected  to  cast  it  to  the  following  type  and  save  it . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  is  needed  to  be  passed  back  into  some  functions  from  global  infrastructure . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void *  SnpeUdo_HexNNv2OpInfra_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  SnpeUdo_HexNNv2OpInfra_t  Udo_HexNNv2OpInfra_t ; 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @} */  /* end_addtogroup c_plus_plus_apis C++ */ 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  // SNPE_UDO_IMPL_DSP_H