dsp_w_vec_d.c

来自「dm642函数库」· C语言 代码 · 共 159 行

C
159
字号
/* ======================================================================== *//*  TEXAS INSTRUMENTS, INC.                                                 *//*                                                                          *//*  NAME                                                                    *//*      DSP_w_vec_d.c -- Example file for DSP_w_vec                         *//*                                                                          *//*  USAGE                                                                   *//*      This file contains code for demonstrating the C64x DSPLIB           *//*      DSP_w_vec function. All inputs to the function contain random       *//*      data. The assembly version of DSP_w_vec is called and the output    *//*      is compared with the reference C code using mem_compare() in        *//*      support.c.                                                          *//* ------------------------------------------------------------------------ *//*          Copyright (C) 2003 Texas Instruments, Incorporated.             *//*                          All Rights Reserved.                            *//* ======================================================================== */    #include <stdio.h> #include <stdlib.h>/* Header file for the memory compare function */int mem_compare(const void *ptr1, const char *name1,                 const void *ptr2, const char *name2, int len);/* Header file for the DSPLIB function */#include "DSP_w_vec.h"    /* Header file for the C function */void DSP_w_vec_c(const short * x, const short * y, short m, short * r, short nr);/* ======================================================================== *//*  DSPLIB function-specific alignments. Refer to the                       *//*  TMS320C64x DSP Library Programmer's Reference for details.              *//* ======================================================================== */#pragma DATA_ALIGN(x, 8);#pragma DATA_ALIGN(y, 8);/* ======================================================================== *//*  Constant dataset.                                                       *//* ======================================================================== */#define N    (256)/* ======================================================================== *//*  Initialize arrays with random test data.                                *//* ======================================================================== */int     test = 0;const short  x[N] = {     0x251A, -0x551F,  0x0A7A,  0x5E5C,  0x1A46, -0x346F,  0x3A1B, -0x636A,     0x392F,  0x0368,  0x7D5D, -0x204A,  0x518C,  0x7DCC,  0x0EBB, -0x3060,     0x425E, -0x1032, -0x3C40, -0x62B1, -0x7717, -0x165F,  0x1C86, -0x3F4C,     0x7FD7, -0x61B8,  0x5B8C, -0x5797, -0x5BB7,  0x2942,  0x2B33, -0x0074,     0x4806, -0x497B,  0x6A12,  0x1101, -0x52FC, -0x669F,  0x5787,  0x3FB2,    -0x4C1B,  0x5B1A,  0x0AB7, -0x526A,  0x33EA,  0x4A46,  0x3036,  0x516F,     0x7370,  0x7FE0, -0x4F22, -0x09E8, -0x6C04,  0x6E4D,  0x6252,  0x52BD,    -0x565C,  0x6D33,  0x6284,  0x363E,  0x626D, -0x49AF, -0x4AD6, -0x3D6B,    -0x3F5F, -0x227F, -0x2597, -0x706E, -0x1F94, -0x53CB, -0x0FE3,  0x7273,    -0x4DD3, -0x2045,  0x72CE,  0x58D9, -0x4941,  0x68C3,  0x09C2, -0x4BD7,    -0x493A,  0x1244, -0x6577,  0x27A8,  0x09E9,  0x085D,  0x5FC4, -0x2966,    -0x6E07,  0x6EE0, -0x1F62, -0x17D5,  0x4418,  0x7193,  0x1EE5, -0x3BD9,     0x7A74, -0x207C,  0x1EBC, -0x575E, -0x1E93, -0x5B86, -0x1F0A, -0x7FAA,    -0x2C79, -0x7185,  0x2692,  0x1A35, -0x1C6E, -0x093C, -0x7D15,  0x5664,    -0x518C, -0x7CB1,  0x6E73,  0x663E, -0x5B3F, -0x02EC, -0x400B, -0x39C0,    -0x6B06, -0x4918,  0x7CCF,  0x7E8C, -0x0083, -0x0D6B,  0x7021, -0x3E4F,    -0x560D,  0x37EF, -0x5758,  0x1C86,  0x145A,  0x7DED, -0x61FD,  0x2033,    -0x1246,  0x6A22, -0x7A60,  0x7F88,  0x20FC, -0x5523,  0x6CFE,  0x2884,     0x0766, -0x5BA3, -0x4FD1,  0x3A5F,  0x4979, -0x239B, -0x6410, -0x5553,    -0x4F93, -0x6BAF,  0x0753, -0x5BC7, -0x7A1C,  0x0D0A,  0x0976,  0x6EAE,    -0x4C7C,  0x1D91,  0x5449,  0x0013,  0x358B, -0x5AF3, -0x588C, -0x52EB,     0x12E0,  0x1C59,  0x44FE,  0x2101,  0x65F3,  0x7D9F, -0x4FAA, -0x2EFE,    -0x35F1, -0x5B44,  0x1262, -0x0562,  0x1D17,  0x64DB, -0x77BB,  0x0A50,     0x7AB6, -0x15DF, -0x36C0, -0x6EBD, -0x4A2D, -0x5FBC, -0x7161,  0x1D06,     0x146E, -0x0920, -0x0DE9, -0x106A,  0x72B3,  0x64A2,  0x5214,  0x715A,    -0x6613, -0x5A65, -0x41E0, -0x3170, -0x7687,  0x47B3,  0x153E,  0x7D02,    -0x19C9,  0x3258,  0x1CDF,  0x47D9, -0x302A,  0x02DB,  0x49DC, -0x500D,     0x6594, -0x1B34,  0x04A5,  0x4E35,  0x69DC, -0x6EE8, -0x685F,  0x5C08,    -0x57CF, -0x37C4,  0x2CEF,  0x7872,  0x0874,  0x00D1, -0x7ECD, -0x7F80,    -0x40BC, -0x4EB3, -0x3B3C, -0x7BDE,  0x331B, -0x404E,  0x00FE, -0x1D30,     0x5E7A, -0x274C,  0x643E,  0x0D59, -0x643B,  0x4CB9, -0x5976, -0x495F,    -0x33D1, -0x7DEB,  0x28BF,  0x1074,  0x6578,  0x76C3, -0x59AB, -0x047F};const short  y[N] = {    -0x1F3C,  0x1DB3,  0x39C8,  0x48EE, -0x285B,  0x3655, -0x3D79, -0x5FBF,     0x48DB,  0x067A,  0x5F1A, -0x27CA, -0x1C2D,  0x622D, -0x4381, -0x0D49,    -0x5416,  0x0F9D, -0x1AA5,  0x7E6D, -0x67A2,  0x0A23, -0x101A, -0x09FC,     0x59E6, -0x7E3D,  0x3DB5,  0x4218, -0x637E,  0x6238, -0x1E30,  0x0F72,     0x6E3E, -0x182F, -0x115B, -0x6153,  0x77DB,  0x753C,  0x4B93, -0x34A1,    -0x47A5,  0x7FAF, -0x0042,  0x382B, -0x6749, -0x3596, -0x36E5, -0x3B4F,    -0x37A2, -0x70D5, -0x1EB6, -0x681B, -0x4C6E,  0x475E, -0x6720,  0x34C7,     0x2772,  0x1BCC,  0x0773, -0x591F,  0x57C9,  0x596B,  0x122E,  0x59E4,    -0x2F96, -0x2817, -0x64D5,  0x7B54,  0x499E,  0x62C7,  0x6010, -0x474D,    -0x6E2A,  0x2F88, -0x54F8, -0x6D13, -0x6CF1, -0x17A8, -0x53FC,  0x237E,     0x65E9,  0x5084, -0x1BC6, -0x6101, -0x0C2A, -0x1222, -0x7A66, -0x5690,     0x42C2,  0x1D57,  0x570A,  0x19B3, -0x46C7, -0x06F2,  0x6E42, -0x55AD,     0x53BF, -0x4A8F,  0x4571,  0x0FE1,  0x06E5,  0x29D4, -0x632C, -0x020B,     0x247E,  0x1053, -0x5EDA, -0x2998, -0x42CB, -0x54C8, -0x382E,  0x5C8A,    -0x2B08, -0x3121,  0x4CD0,  0x2346,  0x72A4,  0x68AC,  0x74FC,  0x573B,    -0x19D1, -0x25D4,  0x1927, -0x7FE3,  0x1C22, -0x45BB, -0x6565, -0x52C0,    -0x00B6,  0x24D7, -0x5283, -0x0CD6,  0x4841,  0x1664, -0x5C47,  0x3DC8,     0x6EE7, -0x289D, -0x1874, -0x21BD,  0x20DB, -0x7587, -0x4950, -0x4CC1,     0x199D, -0x02A6, -0x0B9B,  0x08D5, -0x660D, -0x2EDB,  0x0F94, -0x4791,     0x1572,  0x7606, -0x72E7,  0x4672, -0x31EC,  0x68CB,  0x7F78, -0x52AD,    -0x0F0C,  0x6D65, -0x490D, -0x68F6, -0x6DBC, -0x0C4C, -0x4DF7, -0x1788,     0x7B53,  0x5586,  0x5632,  0x3B73,  0x0521, -0x7DB8, -0x4F56,  0x0926,    -0x5881,  0x7E00,  0x70C5, -0x0075,  0x172F,  0x238F,  0x222A,  0x2FAE,    -0x0C1F,  0x0849,  0x43EC,  0x0AEA, -0x502E,  0x3C13,  0x5816, -0x3D58,    -0x6243, -0x455F, -0x6B8B,  0x77BD,  0x57A3, -0x4B95, -0x6615,  0x0E02,    -0x1F7A, -0x03E6, -0x66DC,  0x5410,  0x2A09, -0x12A5,  0x6B9F,  0x3B71,     0x52F2, -0x7557,  0x5AD3,  0x12B0,  0x1021, -0x03FF,  0x7AA1, -0x2735,     0x757C,  0x179C,  0x3E0B, -0x16A8,  0x22E7,  0x1FD2, -0x6E23, -0x0B54,    -0x77A9,  0x4DB9,  0x5E34, -0x6D1A,  0x798C, -0x18A4, -0x62B7, -0x3C32,    -0x435C, -0x0AB0, -0x5E1B,  0x7900, -0x653D, -0x2994,  0x0B4B, -0x54A6,    -0x1B3E,  0x0F13,  0x35A4, -0x557F,  0x1259,  0x621D, -0x1F71,  0x1E91,    -0x28C4, -0x0F11, -0x2BFF, -0x1A21, -0x1EBA, -0x6773, -0x200D, -0x2DDF};short m = -0x1C4A;short  r_asm[N];short  r_c[N];int main(){   /* ======================================================================== *//*  Call hand-coded assembly version (located in DSP64x.lib library         */ /*  archive - see Project -> Build Options -> Linker -> Include Libraries)  *//* ======================================================================== */       DSP_w_vec(x, y, m, r_asm, N);    /* ======================================================================== *//*  Call natural-C version                                                  *//* ======================================================================== */    DSP_w_vec_c(x, y, m, r_c, N);/* ======================================================================== *//*  Compare outputs using mem_compare() in support.c.  If different,        *//*  mem_compare() displays location of failures.                            *//* ======================================================================== */    test = mem_compare(r_asm, "r_asm", r_c, "r_c", sizeof(r_c));    if (test == 0)     {      printf("r_asm vs. r_c");      printf("\nVerification successful.\n");    }}/* ======================================================================== *//*  End of file:  dsp_w_vec_d.c                                             *//* ------------------------------------------------------------------------ *//*          Copyright (C) 2003 Texas Instruments, Incorporated.             *//*                          All Rights Reserved.                            *//* ======================================================================== */

⌨️ 快捷键说明

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