RMUL2025/lib/cmsis_5/CMSIS/DSP/Testing/FrameworkInclude/Timing.h

96 lines
1.8 KiB
C

#ifndef _TIMING_H_
#define _TIMING_H_
#include "Test.h"
#include "arm_math_types.h"
#include "arm_math_types_f16.h"
void initCycleMeasurement();
void cycleMeasurementStart();
void cycleMeasurementStop();
Testing::cycles_t getCycles();
#if defined(EXTBENCH) || defined(CACHEANALYSIS)
extern unsigned long sectionCounter;
#if defined ( __CC_ARM )
#define dbgInst(imm) __asm volatile{ DBG (imm) }
#elif defined ( __GNUC__ ) || defined ( __llvm__ )
#define dbgInst(imm) __asm volatile("DBG %0\n\t" : :"Ir" ((imm)) )
#else
#error "Unsupported compiler"
#endif
#define startSectionNB(num) dbgInst(((num) & 0x7) | 0x8)
#define stopSectionNB(num) dbgInst(((num) & 0x7) | 0x0)
static inline void startSection() {
switch(sectionCounter & 0x7)
{
case 0:
startSectionNB(0);
break;
case 1:
startSectionNB(1);
break;
case 2:
startSectionNB(2);
break;
case 3:
startSectionNB(3);
break;
case 4:
startSectionNB(4);
break;
case 5:
startSectionNB(5);
break;
case 6:
startSectionNB(6);
break;
case 7:
startSectionNB(7);
break;
default:
startSectionNB(0);
}
}
static inline void stopSection() {
switch(sectionCounter & 0x7)
{
case 0:
stopSectionNB(0);
break;
case 1:
stopSectionNB(1);
break;
case 2:
stopSectionNB(2);
break;
case 3:
stopSectionNB(3);
break;
case 4:
stopSectionNB(4);
break;
case 5:
stopSectionNB(5);
break;
case 6:
stopSectionNB(6);
break;
case 7:
stopSectionNB(7);
break;
default:
stopSectionNB(0);
}
sectionCounter++;
}
#endif
#endif