/* ======================================================================== */
/*  TEXAS INSTRUMENTS, INC.                                                 */
/*                                                                          */
/*  DSPLIB  DSP Signal Processing Library                                   */
/*                                                                          */
/*      Release:        Version 1.02                                        */
/*      CVS Revision:   1.7     Fri Mar 22 02:00:23 2002 (UTC)              */
/*      Snapshot date:  18-Apr-2002                                         */
/*                                                                          */
/*  This library contains proprietary intellectual property of Texas        */
/*  Instruments, Inc.  The library and its source code are protected by     */
/*  various copyrights, and portions may also be protected by patents or    */
/*  other legal protections.                                                */
/*                                                                          */
/*  This software is licensed for use with Texas Instruments TMS320         */
/*  family DSPs.  This license was provided to you prior to installing      */
/*  the software.  You may review this license by consulting the file       */
/*  TI_license.PDF which accompanies the files in this library.             */
/* ------------------------------------------------------------------------ */
/*          Copyright (C) 2002 Texas Instruments, Incorporated.             */
/*                          All Rights Reserved.                            */
/* ======================================================================== */
/* ======================================================================== */
/*  NAME                                                                    */
/*      DSP_blk_move -- Move a block of memory.  Endian Neutral             */
/*                                                                          */
/*  REVISION DATE                                                           */
/*      11-Dec-2001                                                         */
/*                                                                          */
/*  USAGE                                                                   */
/*      This routine is C-callable and can be called as:                    */
/*                                                                          */
/*      void DSP_blk_move(const short *restrict x,                          */
/*                    short *restrict r, int nx);                           */
/*                                                                          */
/*          x  --- block of data to be moved                                */
/*          r  --- destination of block of data                             */
/*          nx --- number of elements in block                              */
/*                                                                          */
/*  DESCRIPTION                                                             */
/*      Move nx 16-bit elements from one memory location                    */
/*      to another.                                                         */
/*                                                                          */
/*      void DSP_blk_move(const short *restrict x,                          */
/*                    short *restrict r, int nx)                            */
/*      {                                                                   */
/*          int i;                                                          */
/*          for (i = 0 ; i < nx; i++)                                       */
/*              r[i] = x[i];                                                */
/*      }                                                                   */
/*                                                                          */
/*  ASSUMPTIONS                                                             */
/*      nx greater than or equal to 4                                       */
/*      nx a multiple of 2                                                  */
/*      Source and destination arrays are word aligned.                     */
/*      Source and destination arrays do not overlap.                       */
/*                                                                          */
/*  TECHNIQUES                                                              */
/*      Twin input and output pointers are used.                            */
/*      Unrolled 4 times to use parallel LDWs and STWs.                     */
/*      Peeled off half-iteration to allow mult. of 2 instead mult. of 4.   */
/*      Return branch issued from loop kernel to save cycles.               */
/*                                                                          */
/*  NOTES                                                                   */
/*      This function is interrupt tolerant, but not interruptible.         */
/*      It locks out interrupts for its entire duration.                    */
/*                                                                          */
/*  MEMORY NOTE                                                             */
/*      No bank conflicts occur in this code.                               */
/*      This code is ENDIAN NEUTRAL.                                        */
/*                                                                          */
/*  CYCLES                                                                  */
/*      cycles = MAX(2 * (nx >> 2) + 15, 21)                                */
/*      For nx <= 14,  cycles == 21.                                        */
/*      For nx == 16,  cycles == 23.                                        */
/*      For nx == 100, cycles == 65.                                        */
/*                                                                          */
/*  CODESIZE                                                                */
/*      128 bytes.                                                          */
/* ------------------------------------------------------------------------ */
/*            Copyright (c) 2002 Texas Instruments, Incorporated.           */
/*                           All Rights Reserved.                           */
/* ======================================================================== */
#ifndef DSP_BLK_MOVE_H_
#define DSP_BLK_MOVE_H_ 1

void DSP_blk_move(const short *restrict x,
              short *restrict r, int nx);

#endif
/* ======================================================================== */
/*  End of file:  dsp_blk_move.h                                            */
/* ------------------------------------------------------------------------ */
/*            Copyright (c) 2002 Texas Instruments, Incorporated.           */
/*                           All Rights Reserved.                           */
/* ======================================================================== */