* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
#ifndef CCE_RUNTIME_RT_FFTS_PLUS_DEFINE_H
#define CCE_RUNTIME_RT_FFTS_PLUS_DEFINE_H
#include "base.h"
#if defined(__cplusplus) && !defined(COMPILE_OMG_PACKAGE)
extern "C" {
#endif
#pragma pack(push)
#pragma pack (1)
typedef enum tagFftsPlusHwType {
RT_HW_CTX_TYPE_AIC = 0,
RT_HW_CTX_TYPE_AIV = 1,
RT_HW_CTX_TYPE_NOTIFY_WAIT = 3,
RT_HW_CTX_TYPE_NOTIFY_RECORD = 4,
RT_HW_CTX_TYPE_WRITE_VALUE = 5,
RT_HW_CTX_TYPE_MIX_AIC = 6,
RT_HW_CTX_TYPE_MIX_AIV = 7,
RT_HW_CTX_TYPE_SDMA = 8,
RT_HW_CTX_TYPE_FLUSH_DATA = 9,
RT_HW_CTX_TYPE_INVALIDATE_DATA = 10,
RT_HW_CTX_TYPE_WRITEBACK_DATA = 11,
RT_HW_CTX_TYPE_AICPU = 12,
RT_HW_CTX_TYPE_LOAD = 13,
RT_HW_CTX_TYPE_MAX = 14,
} rtFftsPlusHwType_t;
typedef enum tagFftsPlusSoftType {
RT_SOFT_CTX_TYPE_COND_SWITCH = 1,
RT_SOFT_CTX_TYPE_CASE_SWITCH = 2,
RT_SOFT_CTX_TYPE_AT_START = 3,
RT_SOFT_CTX_TYPE_AT_END = 4,
RT_SOFT_CTX_TYPE_LABEL = 5,
RT_SOFT_CTX_PERSISTENT_CACHE = 6,
RT_SOFT_CTX_DSA = 7,
RT_SOFT_CTX_TYPE_MAX = 8,
} rtFftsPlusSoftType_t;
typedef enum tagFftsPlusContextType {
RT_CTX_TYPE_AICORE = 0x0000,
RT_CTX_TYPE_AIV = 0x0001,
RT_CTX_TYPE_NOTIFY_WAIT = 0x0003,
RT_CTX_TYPE_NOTIFY_RECORD = 0x0004,
RT_CTX_TYPE_WRITE_VALUE = 0x0005,
RT_CTX_TYPE_MIX_AIC = 0x0006,
RT_CTX_TYPE_MIX_AIV = 0x0007,
RT_CTX_TYPE_SDMA = 0x0008,
RT_CTX_TYPE_FLUSH_DATA = 0x0009,
RT_CTX_TYPE_INVALIDATE_DATA = 0x000A,
RT_CTX_TYPE_WRITEBACK_DATA = 0x000B,
RT_CTX_TYPE_AICPU = 0x000C,
RT_CTX_TYPE_COND_SWITCH = 0x010D,
RT_CTX_TYPE_CASE_SWITCH = 0x020D,
RT_CTX_TYPE_AT_START = 0x0300,
RT_CTX_TYPE_AT_END = 0x0400,
RT_CTX_TYPE_LABEL = 0x0500,
RT_CTX_TYPE_PERSISTENT_CACHE = 0x0600,
RT_CTX_TYPE_DSA = 0x0700,
RT_CTX_TYPE_WRITE_VALUE_RDMA = 0x0805,
}rtFftsPlusContextType_t;
typedef enum tagFftsPlusCondType {
RT_COND_TYPE_EQUAL = 0,
RT_COND_TYPE_NOTEQUAL = 1,
RT_COND_TYPE_GREATER = 2,
RT_COND_TYPE_GREATER_OR_EQUAL = 3,
RT_COND_TYPE_LESS = 4,
RT_COND_TYPE_LESS_OR_EQUAL = 5,
RT_COND_TYPE_MAX = 6,
} rtFftsPlusCondType_t;
#define RT_CTX_SUCCESSOR_NUM 26
typedef struct tagFftsPlusComCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t rsv1 : 7;
uint8_t aten : 1;
uint8_t rsv2;
uint8_t rsv3;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t rsv4;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint32_t rsv5[2];
uint16_t threadId;
uint16_t threadDim;
uint32_t res6[13];
} rtFftsPlusComCtx_t;
typedef struct tagFftsPlusAicAivCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t resv : 6;
uint8_t dumpSwitch : 1;
uint8_t aten : 1;
uint8_t prefetchConfig;
uint8_t resv1;
uint8_t predCntInit;
uint8_t predCnt;
uint16_t resv2;
uint16_t policyPri;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint16_t resv3 : 1;
uint16_t schem : 2;
uint16_t icachePrefetchCnt : 5;
uint16_t resv4 : 7;
uint16_t atm : 1;
uint16_t prefetchEnableBitmap : 4;
uint16_t res6 : 4;
uint16_t prefetchOnceBitmap : 4;
uint16_t res7 : 4;
uint16_t pmg : 2;
uint16_t ns : 1;
uint16_t partId : 8;
uint16_t res8 : 1;
uint16_t qos : 4;
uint16_t res9;
uint16_t threadId;
uint16_t threadDim;
uint16_t nonTailBlockdim;
uint16_t tailBlockdim;
uint32_t taskParamPtrBaseL;
uint16_t taskParamPtrBaseH;
uint16_t taskParamPtrOffset;
uint32_t res10;
uint32_t res11;
uint32_t nonTailTaskStartPcL;
uint16_t nonTailTaskStartPcH;
uint16_t res12;
uint32_t tailTaskStartPcL;
uint16_t tailTaskStartPcH;
uint16_t res13;
uint32_t res14;
uint32_t res15;
uint16_t srcSlot[4];
} rtFftsPlusAicAivCtx_t;
typedef struct tagFftsPlusMixAicAivCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t reserved1 : 6;
uint8_t dumpSwitch : 1;
uint8_t aten : 1;
uint8_t prefetchConfig;
uint8_t reserved2;
uint8_t predCntInit;
uint8_t predCnt;
uint16_t reserved3;
uint16_t policyPri;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint16_t reserved4 : 1;
uint16_t schem : 2;
uint16_t aicIcachePrefetchCnt : 5;
uint16_t aivIcachePrefetchCnt : 5;
uint16_t reserved5 : 2;
uint16_t atm : 1;
uint16_t prefetchEnableBitmap : 4;
uint16_t reserved6 : 4;
uint16_t prefetchOnceBitmap : 4;
uint16_t reserved7 : 4;
uint16_t pmg : 2;
uint16_t ns : 1;
uint16_t partId : 8;
uint16_t reserved8 : 1;
uint16_t qos : 4;
uint8_t nonTailBlockRatioN;
uint8_t tailBlockRatioN;
uint16_t threadId;
uint16_t threadDim;
uint16_t nonTailBlockdim;
uint16_t tailBlockdim;
uint32_t aicTaskParamPtrL;
uint16_t aicTaskParamPtrH;
uint16_t aicTaskParamPtrOffset;
uint32_t aivTaskParamPtrL;
uint16_t aivTaskParamPtrH;
uint16_t aivTaskParamPtrOffset;
uint32_t nonTailAicTaskStartPcL;
uint16_t nonTailAicTaskStartPcH;
uint16_t tailAicTaskStartPcH;
uint32_t tailAicTaskStartPcL;
uint32_t nonTailAivTaskStartPcL;
uint16_t nonTailAivTaskStartPcH;
uint16_t tailAivTaskStartPcH;
uint32_t tailAivTaskStartPcL;
uint16_t srcSlot[4];
} rtFftsPlusMixAicAivCtx_t;
typedef struct tagFftsPlusSdmaCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t res1 : 6;
uint8_t dumpSwitch : 1;
uint8_t aten : 1;
uint8_t res2;
uint8_t res3;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t res4;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint8_t res5;
uint8_t res6 : 7;
uint8_t atm : 1;
uint16_t res7;
uint16_t pmg : 2;
uint16_t ns : 1;
uint16_t partId : 8;
uint16_t res8 : 1;
uint16_t qos : 4;
uint16_t res9;
uint16_t threadId;
uint16_t threadDim;
uint32_t sdmaSqeHeader;
uint16_t sourceStreamId;
uint16_t sourceSubstreamId;
uint16_t destinationStreamId;
uint16_t destinationSubstreamId;
uint32_t sourceAddressBaseL;
uint32_t sourceAddressBaseH;
uint32_t sourceAddressOffset;
uint32_t destinationAddressBaseL;
uint32_t destinationAddressBaseH;
uint32_t destinationAddressOffset;
uint32_t nonTailDataLength;
uint32_t tailDataLength;
uint32_t res10[2];
} rtFftsPlusSdmaCtx_t;
typedef struct tagFftsPlusNotifyCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t res : 7;
uint8_t aten : 1;
uint8_t res1;
uint8_t res2;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t res3;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint16_t res4 : 14;
uint16_t satm : 1;
uint16_t atm : 1;
uint16_t res6;
uint32_t res7;
uint16_t threadId;
uint16_t threadDim;
uint16_t notifyIdBase;
uint8_t autoWindow;
uint8_t res8;
uint32_t res9[4];
uint16_t notifyId[16];
} rtFftsPlusNotifyCtx_t;
typedef struct tagFftsPlusWriteValueCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t resv1 : 7;
uint8_t aten : 1;
uint8_t resv2;
uint8_t resv3;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t resv4;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint16_t resv5 : 15;
uint16_t atm : 1;
uint16_t resv6;
uint32_t resv7;
uint16_t threadId;
uint16_t threadDim;
uint8_t awSize : 3;
uint8_t awSnoop : 1;
uint8_t resv8 : 4;
uint8_t awCache : 4;
uint8_t awProt : 3;
uint8_t awVa : 1;
uint8_t arSize : 3;
uint8_t arSnoop : 1;
uint8_t resv9 : 4;
uint8_t arCache : 4;
uint8_t arProt : 3;
uint8_t arVa : 1;
uint32_t writeAddressBaseL;
uint32_t writeAddressBaseH : 17;
uint32_t res10 : 15;
uint32_t writeAddressOffset;
uint32_t res11;
uint32_t writeValue[4];
uint32_t res12[4];
} rtFftsPlusWriteValueCtx_t;
typedef struct tagFftsPlusAiCpuCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t res1 : 6;
uint8_t dumpSwitch : 1;
uint8_t aten : 1;
uint8_t res2;
uint8_t res3;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t res4;
uint16_t successorContextID[RT_CTX_SUCCESSOR_NUM];
uint16_t res5 : 15;
uint16_t atm : 1;
uint16_t res6;
uint16_t sqeIndex;
uint8_t kernelType : 7;
uint8_t bm : 1;
uint8_t topicType : 4;
uint8_t qos : 3;
uint8_t res7 : 1;
uint16_t threadId;
uint16_t threadDim;
uint16_t nonTailBlockdim;
uint16_t tailBlockdim;
uint32_t usrData[9];
uint32_t res8;
uint32_t subtopicId : 12;
uint32_t topicId : 6;
uint32_t groupId : 6;
uint32_t usrDataLength : 8;
uint32_t taskParamOffset;
} rtFftsPlusAiCpuCtx_t;
typedef struct tagFftsPlusDataCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t res1 : 7;
uint8_t aten : 1;
uint8_t res2;
uint8_t res3;
uint8_t cntInit;
uint8_t cnt;
uint32_t res4;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint16_t res5 : 15;
uint16_t atm : 1;
uint16_t res6;
uint16_t pmg : 2;
uint16_t ns : 1;
uint16_t partId : 8;
uint16_t res7 : 1;
uint16_t qos : 4;
uint16_t res8;
uint16_t threadId;
uint16_t threadDim;
uint16_t origConsumerCounter;
uint16_t runConsumerCounter;
uint32_t addressBaseL;
uint32_t addressBaseH;
uint32_t addressOffset;
uint32_t res9;
uint16_t nonTailNumOutter;
uint16_t nonTailNumInner;
uint32_t nonTailLengthInner;
uint32_t nonTailStrideOutter;
uint32_t nonTailStrideInner;
uint16_t tailNumOutter;
uint16_t tailNumInner;
uint32_t tailLengthInner;
uint32_t tailStrideOutter;
uint32_t tailStrideInner;
} rtFftsPlusDataCtx_t;
typedef struct tagFftsPlusAtStartCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t rs1 : 7;
uint8_t aten : 1;
uint8_t rs2;
uint8_t rs3;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t rs4;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint16_t rs5;
uint16_t rs6;
uint16_t rs7;
uint16_t rs8;
uint16_t threadId;
uint16_t threadDim;
uint16_t threadIdInit;
uint16_t threadWindowSize;
uint32_t res9[12];
} rtFftsPlusAtStartCtx_t;
#define RT_CTX_SUCC_AT_START_SLOT_NUM 12
#define RT_CTX_SUCC_OUT_LABEL_SLOT_NUM 12
typedef struct tagFftsPlusAtEndCtx {
uint16_t contextType;
uint8_t atStartSlotNumber;
uint8_t outLabelSlotNumber : 7;
uint8_t aten : 1;
uint8_t res1;
uint8_t res2;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t res3;
uint16_t succAtStartSlot[RT_CTX_SUCC_AT_START_SLOT_NUM];
uint16_t succOutLabelSlot[RT_CTX_SUCC_OUT_LABEL_SLOT_NUM];
uint16_t res4;
uint16_t res5;
uint16_t res6;
uint16_t res7;
uint16_t res8;
uint16_t res9;
uint16_t threadId;
uint16_t res10;
uint16_t res11;
uint16_t res12;
uint32_t res13[12];
} rtFftsPlusAtEndCtx_t;
typedef struct tagFftsPlusLabelCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t res1 : 7;
uint8_t aten : 1;
uint8_t res2;
uint8_t res3;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t res4;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint32_t res5[2];
uint16_t threadId;
uint16_t threadDim;
uint32_t res6[13];
} rtFftsPlusLabelCtx_t;
typedef struct tagFftsPlusCaseSwitchCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t resv0 : 7;
uint8_t aten : 1;
uint8_t startLabelId;
uint8_t labelListLen;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t resv1;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint16_t resv2 : 15;
uint16_t atm : 1;
uint16_t resv3;
uint32_t resv4;
uint16_t threadId;
uint16_t threadDim;
uint8_t arSize : 3;
uint8_t snoop : 1;
uint8_t resv5 : 4;
uint8_t arCache : 4;
uint8_t arProt : 3;
uint8_t va : 1;
uint16_t resv6;
uint32_t loadAddress0BaseL;
uint32_t loadAddress0BaseH : 17;
uint32_t resv7 : 14;
uint32_t ld0En : 1;
uint32_t loadAddress0Offset;
uint32_t resv8;
uint32_t loadAddress1BaseL;
uint32_t loadAddress1BaseH : 17;
uint32_t resv9 : 14;
uint32_t ld1En : 1;
uint32_t loadAddress1Offset;
uint32_t resv10[5];
} rtFftsPlusCaseSwitchCtx_t;
typedef struct tagFftsPlusCaseDefCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t rs0 : 7;
uint8_t aten : 1;
uint8_t startLabelId;
uint8_t labelListLen;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t rs1;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint16_t rs2;
uint16_t rs3;
uint32_t rs4[15];
} rtFftsPlusCaseDefCtx_t;
#define RT_CTX_TRUE_SUCCESSOR_NUM 13
#define RT_CTX_FALSE_SUCCESSOR_NUM 13
typedef struct tagFftsPlusCondSwitchCtx {
uint16_t contextType;
uint8_t trueSuccessorNum;
uint8_t falseSuccessorNum : 7;
uint8_t aten : 1;
uint8_t condition;
uint8_t res1;
uint8_t predCntInit;
uint8_t predCnt;
uint32_t res2;
uint16_t trueSuccessorList[RT_CTX_TRUE_SUCCESSOR_NUM];
uint16_t falseSuccessorList[RT_CTX_FALSE_SUCCESSOR_NUM];
uint16_t res3 : 15;
uint16_t atm : 1;
uint16_t res4;
uint32_t res5;
uint16_t threadId;
uint16_t threadDim;
uint8_t arSize : 3;
uint8_t snoop : 1;
uint8_t res6 : 4;
uint8_t arCache : 4;
uint8_t arProt : 3;
uint8_t va : 1;
uint16_t res7;
uint32_t loadAddress0BaseL;
uint32_t loadAddress0BaseH : 17;
uint32_t res8 : 14;
uint32_t ld0En : 1;
uint32_t loadAddress0Offset;
uint32_t res9;
uint32_t loadAddress1BaseL;
uint32_t loadAddress1BaseH : 17;
uint32_t res10 : 14;
uint32_t ld1En : 1;
uint32_t loadAddress1Offset;
uint32_t res11[3];
uint32_t cmpValue1;
uint32_t cmpValue2;
} rtFftsPlusCondSwitchCtx_t;
typedef struct tagFftsPlusPersistentCacheCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t res1 : 7;
uint8_t aten : 1;
uint8_t res2[2];
uint8_t predCntInit;
uint8_t predCnt;
uint8_t res3[4];
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint8_t persistentEnable : 1;
uint8_t res4 : 7;
uint8_t res5;
uint16_t persistentSize;
uint32_t persistentId;
uint32_t res6[14];
} rtFftsPlusPersistentCacheCtx_t;
typedef struct tagFftsPlusDsaCtx {
uint16_t contextType;
uint8_t successorNum;
uint8_t res1 : 6;
uint8_t dumpSwitch : 1;
uint8_t aten : 1;
uint8_t res2[2];
uint8_t predCntInit;
uint8_t predCnt;
uint32_t res3;
uint16_t successorList[RT_CTX_SUCCESSOR_NUM];
uint16_t numberOffset;
uint16_t addressOffset;
uint32_t res5;
uint16_t threadId;
uint16_t threadDim;
uint32_t start : 1;
uint32_t functionType : 3;
uint32_t dataType : 3;
uint32_t algoType : 3;
uint32_t paramVldBitmap : 5;
uint32_t paramAddrValBitmap : 7;
uint32_t res6 : 10;
uint32_t dsaCfgResultAddrLow;
uint32_t dsaCfgResultAddrHigh;
uint32_t dsaCfgStateAddrLow;
uint32_t dsaCfgStateAddrHigh;
uint32_t dsaCfgParamAddrLow;
uint32_t dsaCfgParamAddrHigh;
uint32_t dsaCfgSeedLow;
uint32_t dsaCfgSeedHigh;
uint32_t dsaCfgNumberLow;
uint32_t dsaCfgNumberHigh;
uint32_t res7[2];
} rtFftsPlusDsaCtx_t;
#pragma pack(pop)
#if defined(__cplusplus) && !defined(COMPILE_OMG_PACKAGE)
}
#endif
#endif