96 lines
1.8 KiB
C
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
|