dsp_mul32_d.c

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

C
223
字号
/* ======================================================================== *//*  TEXAS INSTRUMENTS, INC.                                                 *//*                                                                          *//*  NAME                                                                    *//*      DSP_mul32_d.c -- Example file for DSP_mul32                         *//*                                                                          *//*  USAGE                                                                   *//*      This file contains code for demonstrating the C64x DSPLIB           *//*      DSP_mul32 function. All inputs to the function contain random       *//*      data. The assembly version of DSP_mul32 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_mul32.h"    /* Header file for the C function */void DSP_mul32_c(const int * x, const int * y, int * r, short nx);/* ======================================================================== *//*  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);#pragma DATA_ALIGN(r_asm, 8);#pragma DATA_ALIGN(r_c, 8);/* ======================================================================== *//*  Constant dataset.                                                       *//* ======================================================================== */#define N    (256)/* ======================================================================== *//*  Initialize arrays with random test data.                                *//* ======================================================================== */int     test = 0;const int  x[N] = {    -0x28B1B34E,  0x6D7C99E9, -0x39A4E5D0,  0x1D8BCB1A,     0x13D76F79,  0x1B0EDA61, -0x0F83242D,  0x0786B87B,     0x7DEE2C04,  0x3590197F,  0x79100CAF,  0x7BE83CAE,    -0x787BFE03, -0x03993C6F,  0x6D4D5779, -0x6D06ADD7,    -0x273FFD38,  0x479C2A7E, -0x57E95F6A, -0x14061A86,     0x3D350A35, -0x4AD01E69,  0x2DC5BCC8, -0x47817966,    -0x6178F4FA, -0x66A80DBB, -0x01845AD6,  0x7E4AD81E,    -0x2591E7AF, -0x058E56C8,  0x20283497,  0x075930AC,    -0x744E2FF3,  0x4C126E1C,  0x4A39B855, -0x23DF0ABE,     0x329BEE68,  0x55E6F008, -0x48C3ED15,  0x06FD328D,    -0x6C2FA97B,  0x7F1DE157, -0x0CA70264,  0x18525C64,    -0x249B0094, -0x7D4BC146, -0x3E37CC2B,  0x6BAFFF06,    -0x688416C6, -0x5695E52D, -0x3F6BB4A3, -0x07747E49,    -0x15103693,  0x07D0408C,  0x16DEA370, -0x3B99DBBD,     0x44F432E6,  0x72535190, -0x510C5EE8, -0x51D0E3A2,     0x09B275EB, -0x057892EA, -0x262FBD96,  0x4D4DC111,     0x4337F58E,  0x48E6F2F4, -0x08D3908F, -0x3EC43E88,    -0x1BC40F54,  0x046A7D96, -0x20A1B423, -0x3445E83A,     0x10A3DA37,  0x2058602C,  0x20D5CBAD, -0x7D3FC74A,     0x121F3242,  0x03CF73E4, -0x61837AF8,  0x04B0BCAC,     0x7A7C1154, -0x54C45A30, -0x2FC58DF1,  0x72C63BDD,    -0x625937A3, -0x559A10ED,  0x6B041184, -0x5470F862,     0x07E60CEA,  0x74E508E4,  0x79EDF452, -0x1252DD83,     0x7F84B830, -0x50123015,  0x1FD3BF2E, -0x3C4E8E2C,     0x27E68F21, -0x03F040CE,  0x6A7F6308, -0x2A8C5DBD,     0x5B2AE669, -0x3B1387C8,  0x381C06F1,  0x0A859317,    -0x7FF79ADD, -0x2A0ED221, -0x60B7A9B9,  0x309D49F1,     0x2BA69A97, -0x428E2EBA,  0x7818D9F2,  0x67D1498C,     0x481C8CFF,  0x4B73D914, -0x3831D4A8,  0x4ED5D981,     0x7C345398, -0x56C08252,  0x76F6C36B,  0x58A05619,     0x1B6E49E0, -0x44334C5F,  0x5D35EFA6, -0x413FF6B0,     0x51C55D26, -0x65700603,  0x2A98E7A4, -0x2165772B,     0x7344B102,  0x4CA73F61,  0x42EA8435,  0x1CEE602B,    -0x2F347D51,  0x1B5E19AB,  0x7E95BA18, -0x0DAD089B,     0x787B5DB1, -0x0F85E29C,  0x4E2E1C3B, -0x0AB2CF08,     0x56840E97,  0x15B5A74A, -0x09E5622E,  0x44887E36,    -0x62DD54EC,  0x0BD1A0C9,  0x7F0A7E78, -0x1C0A679B,    -0x55180BC8, -0x1B54C33A,  0x3D77C35E, -0x2CE205A2,     0x25CCB2C6,  0x2C834876, -0x2B10092F, -0x605351C8,    -0x5E05D4B0,  0x04CFDB13, -0x228CE071,  0x14FC0EA7,     0x68562FD6,  0x69879BEC, -0x2B48A846,  0x05249363,    -0x5CE76BEE, -0x693F7445, -0x3BC87678,  0x671A99C3,    -0x68A5D97A, -0x0B43BE67, -0x4E801173, -0x37A8BA77,     0x21368FAE,  0x4503FE3F,  0x2D218601,  0x0B2CF1BE,     0x466694F6,  0x5D522B70,  0x4CC4CAD8,  0x65446BD7,     0x56AF300C, -0x0020DCA4, -0x6E233A1D,  0x33C924F6,     0x2F708FF5, -0x302B9C84,  0x1B2C640F, -0x523EB1E0,     0x4E776654, -0x2A010B0F, -0x5216655D, -0x70F7977C,     0x2D945F5A,  0x437E47C0, -0x4165D848, -0x702BB30C,     0x77F6BF19,  0x25AD9A58,  0x441C6DBB,  0x4DF4B0B0,    -0x6B943A64,  0x519D1ABF,  0x43B02A6A, -0x1F3114F3,    -0x322B8BC8, -0x0AD50632,  0x5CCB8BB3, -0x376DD2AB,    -0x3D56B80F, -0x3E19BE80, -0x57E82A86,  0x64F9ABBF,     0x0C4141F0, -0x25C42458, -0x3C1AC305, -0x1B6DE4BC,    -0x0F4A6342, -0x7BB4F0CE, -0x42FDCCDA, -0x1F67CDB4,     0x042C1F57, -0x75BD0A22,  0x52D9BFBC, -0x41DB2861,     0x173B8A1E, -0x066A50FC, -0x3D42F487, -0x3E5C9A2A,    -0x353698E8,  0x4C6FC1C9,  0x17F24B5E,  0x5EECA8D8,    -0x2788ADFA, -0x4DC069DF,  0x458DEBE6, -0x4766CB76,     0x3A910734,  0x393C57AA, -0x4E3F1AC1,  0x1B88107A,     0x780E9DF5,  0x225FEF4B,  0x6EEEEBC0, -0x34765419,    -0x4A4A9F40,  0x105E7C05,  0x784C8D6B, -0x4C8946D3,    -0x2111E304, -0x6DF26B0D, -0x3F392398,  0x7274E481,     0x247F31A2, -0x1E8A525F, -0x3FF81327,  0x6905465C};const int  y[N] = {    -0x1D6B6D29, -0x412B75AF, -0x7A8BB928, -0x3114FF80,    -0x6C479621, -0x6CCDC782,  0x50DE71A7,  0x1B196EDB,     0x2766C0EA,  0x68BB4D6D,  0x7C68BBE7,  0x6EF94523,    -0x1264048E,  0x7F8F71F8, -0x6EA15F8A, -0x0B5949A1,     0x12BEB819, -0x12D3EB4C,  0x2A8AA812, -0x25C3470E,    -0x1CE1F591, -0x056D7B3F,  0x2E9FFBBE,  0x38E5251D,    -0x7BC788F4, -0x736741B2,  0x13C9F32E, -0x20E496FF,     0x14C86101, -0x5D863188, -0x227D0C98, -0x589A060C,     0x589450BD, -0x42F1BCFE, -0x6BD27145, -0x73D15794,     0x4D3B14D7, -0x3B3790FF, -0x061CF570,  0x4668349A,    -0x2D9A85DD,  0x6EFC7A32,  0x6A0E40CE,  0x0BE70EA9,    -0x4030AC36, -0x1D7DA402, -0x1B7DC483,  0x76087EE2,    -0x72C59688,  0x59555630,  0x0372D1D1, -0x5153FB73,    -0x30672E3F, -0x36F88DB0, -0x2B2946A1,  0x071C45BD,    -0x486A0939,  0x10E62DD0, -0x4DCFF9B0,  0x0CCC0CD8,     0x5BE51D6B,  0x1D82FE98, -0x788C08AA,  0x4FD48CF4,    -0x1C8ADB83,  0x74311409,  0x4D0CA92B, -0x5E3862F1,     0x0E4BF0F9,  0x7085747B,  0x7C47F482,  0x6EAD3589,    -0x0565AADE, -0x7DB5C4E9,  0x75186359,  0x27B3BFCB,    -0x6534DE31,  0x626B8B87, -0x16112E4E, -0x75A14C48,     0x6CCA0DD5,  0x7042F296, -0x48A225CF, -0x454D0DB0,    -0x63AED2E3,  0x1B6B9F4C,  0x1D29B26A,  0x3A0868FE,     0x07D00ADC, -0x1D8BDC45, -0x09ADCCF2,  0x0AB72A06,     0x2D5F6662, -0x3B2D4669,  0x50C50665,  0x5628D829,    -0x764EC5C9,  0x019B30D7,  0x0EB3EA88, -0x08CB3535,     0x12E2BA23,  0x3FABCF62, -0x16807621,  0x126FE683,     0x5FDA586F, -0x20106FD0, -0x77FB84C5,  0x6D7F8D57,    -0x2232477D, -0x74BE697C,  0x0BDF501F, -0x562BC3C9,    -0x5C5BA165,  0x50BCEF3C,  0x27817663, -0x31BDAD24,     0x510DD70C, -0x61AD401C, -0x1C59915F, -0x39E95125,     0x07AEB624, -0x254FADD7, -0x61C80005, -0x0174730A,    -0x3A4B9F65,  0x786A8669, -0x6DCDF4AB, -0x63F7DD91,    -0x221DF7EB, -0x0D0B6433,  0x45C5034B, -0x14611AAF,     0x48213953, -0x7613AD45, -0x56EB26FE, -0x3215D45A,     0x39EDD96D,  0x058E990E, -0x5659110D, -0x7B06BDF9,    -0x23024973,  0x087A7C71,  0x3F323CE8,  0x5164F849,    -0x58CD495F,  0x20C02FDE,  0x03DFD799,  0x1AB107A6,     0x139D22D2,  0x3EF6951B,  0x3E12B706,  0x2393A16C,    -0x211B8297,  0x31482E1A,  0x1696E759, -0x58763731,     0x20310264, -0x02C902BA,  0x34368A4B, -0x4EE9CE22,     0x56117AEC,  0x0A0F1CBE, -0x316D3912, -0x3BFECA09,     0x57BD4646, -0x4D74AD82,  0x0E0EC61F,  0x19D901B5,    -0x5B279242,  0x248F96F2,  0x0168D155, -0x2C13EE8D,    -0x097E818E, -0x6D63F711,  0x64B58456, -0x4B08DA03,     0x2F004D4D,  0x418CE9D4,  0x01F5FD68, -0x51157107,     0x1DD6E2A7,  0x5BC75B69, -0x4784A45C, -0x390A714C,    -0x57AB8AEB, -0x5A1AC309,  0x62F33076,  0x08A82A14,    -0x611891B4,  0x13261A1C, -0x3AAA5CF8,  0x0134B0E9,    -0x6D12A48E,  0x7C4AD4F8,  0x2B7A2C64, -0x1B747E76,    -0x5AE55A11, -0x257F256F,  0x4F62988A,  0x1E731F7A,     0x13B330E5, -0x64BFD44F, -0x2629F6AF, -0x50E9CC75,    -0x2B0D70B5, -0x2AFD44E2,  0x2A1AE1D9,  0x09EF6444,     0x1FDEE47C,  0x3E79FC16,  0x2C6BA7FD,  0x030DF8B1,    -0x1185B0EA, -0x78A9A7C5,  0x281CA6FE, -0x154CEE42,     0x1E19E55C, -0x0D3A1A0A,  0x4E437379, -0x50B956D9,    -0x0DC29475, -0x453E960C,  0x4F54EC66, -0x06968728,     0x11696E83,  0x25FDF25F,  0x0B794DAD,  0x43A4B10F,    -0x2554E2AA,  0x4C4145EC,  0x63DB76F0,  0x182D11B3,     0x5487DE91,  0x110E60C6,  0x1203646F,  0x61D2D22F,     0x37A44180, -0x46A132C8, -0x00FFC464,  0x1E87DD52,     0x259B70C4, -0x19EB5972, -0x32D39A52,  0x0102C527,     0x42A373F9,  0x4B1328CB, -0x480EFA58,  0x2D0B6276,     0x14D6F84F,  0x2BBC47F4,  0x45A96730,  0x21E7630C,    -0x07687255,  0x23A97ADA,  0x7BC290A0, -0x6320E0D9};int  r_asm[N];int  r_c[N];int main(){   /* ======================================================================== *//*  Call hand-coded assembly version (located in DSP64x.lib library         */ /*  archive - see Project -> Build Options -> Linker -> Include Libraries)  *//* ======================================================================== */       DSP_mul32(x, y, r_asm, N);    /* ======================================================================== *//*  Call natural-C version                                                  *//* ======================================================================== */    DSP_mul32_c(x, y, 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_mul32_d.c                                             *//* ------------------------------------------------------------------------ *//*          Copyright (C) 2003 Texas Instruments, Incorporated.             *//*                          All Rights Reserved.                            *//* ======================================================================== */

⌨️ 快捷键说明

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