⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c8_unif.c

📁 dsp6713开发板的许多例程.对入门特别有用
💻 C
字号:
/****************************************************************************/
/*          Copyright (C) 1996-2000 Texas Instruments Incorporated          */
/*                       All Rights Reserved                                */
/* C8_UNIF      - UNROLLED_IF_THEN_ELSE                                     */
/****************************************************************************/
#include <stdio.h>
#include <time.h>

short x[32] = {  5140,    -1,  -12,  7666,    4, -221, -16,  -128,
                -6513, -1776, 7317,  3851, -572,  -70,  -1,  7753,
                 -897,   -23,  -14,    -1, -103,  214,  31,  7782,
                   39,     3,   -2, -1643,   -1,    0,  -3, -8027 };

short th = 0;
int code = 32, msk = 1; 
int ret_asm, ret_sa;

clock_t time_asm  (int *);
clock_t time_sa   (int *);

/****************************************************************************/
/* TOP LEVEL DRIVER FOR THE TEST.                                           */
/****************************************************************************/
int main()
{
    clock_t t_overhead, t_start, t_stop, t_asm, t_sa;
 
    /************************************************************************/
    /* COMPUTE THE OVERHEAD OF CALLING CLOCK TWICE TO GET TIMING INFO.      */
    /************************************************************************/
    t_start    = clock();
    t_stop     = clock();
    t_overhead = t_stop - t_start;

    /************************************************************************/
    /* CALL THE INDIVIDIUAL TIMING ROUTINES.                                */
    /************************************************************************/
    t_asm     = time_asm(&ret_asm)   - t_overhead;
    t_sa      = time_sa(&ret_sa)     - t_overhead;

    /************************************************************************/
    /* PRINT TIMING RESULTS                                                 */ 
    /************************************************************************/ 
    printf("UNROLLED_IF_THEN Assembly Clock Cycles:           %d\n", t_asm);
    printf("UNROLLED_IF_THEN Assembly Optimizer Clock Cycles: %d\n", t_sa);
}

/****************************************************************************/
/* COMPUTE THE ELAPSED TIME OF THE HAND CODED ASSEMBLY ROUTINE              */
/****************************************************************************/
clock_t time_asm(int *i)
{
    clock_t t_start, t_stop;

    t_start = clock();
    *i      = unrolled_if_then_asm(x, code, msk, th);
    t_stop  = clock();
    return  t_stop - t_start;
}

/****************************************************************************/
/* COMPUTE THE ELAPSED TIME OF THE ASSEMBLY OPTIMIZER ROUTINE               */
/****************************************************************************/
clock_t time_sa(int *i)
{
    clock_t t_start, t_stop;

    t_start = clock();
    *i      = unrolled_if_then_sa(x, code, msk, th);
    t_stop  = clock();
    return  t_stop - t_start;
}

/* Sample C code
int unrolled_if_then_c(const short a[], int codeword, int mask, short theta)
{
    int i, sum, cond;

    sum = 0;
    for (i = 0; i < 32; i+=2)
    {
        cond = codeword & mask;
        if (theta  ==  !(!(cond)))
            sum += a[i];
        else
            sum -= a[i];
        mask = mask << 1;

        cond = codeword & mask;
        if (theta  ==  !(!(cond)))
            sum += a[i+1];
        else
            sum -= a[i+1];
        mask = mask << 1;
    }
    return(sum);
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -