/************************************************************************** * * ITU-T SOFTWARE TOOLS' GENERAL PUBLIC LICENSE * * This "General Public License" is published in the Annex 1 of the * ITU-T Recommendation on "SOFTWARE TOOLS FOR HOMOGENITY OF RESULTS * IN THE STANDARDIZATION PROCESS OF SPEECH AND AUDIO CODERS", * approved in Geneva, 2000. * * TERMS AND CONDITIONS * * 1. This License Agreement applies to any module or other work * related to the ITU-T Software Tool Library, and developed by the * User's Group on Software Tools. The "Module", below, refers to any * such module or work, and a "work based on the Module" means either * the Module or any work containing the Module or a portion of it, * either verbatim or with modifications. Each licensee is addressed * as "you". * * 2. You may copy and distribute verbatim copies of the Module's * source code as you receive it, in any medium, provided that you: * - conspicuously and appropriately publish on each copy an appropriate * copyright notice and disclaimer of warranty; * - keep intact all the notices that refer to this General Public * License and to the absence of any warranty; and * - give any other recipients of the Module a copy of this General * Public License along with the Module. * You may charge a fee for the physical act of transferring a copy. * * 3. You may modify your copy or copies of the Module or any portion * of it, and copy and distribute such modifications under the terms * of Paragraph 1 above, provided that you also do the following: * * o cause the modified files to carry prominent notices stating * that you changed the files and the date of any change; and * * o cause the whole of any work that you distribute or publish, * that in whole or in part contains the Module or any part * thereof, either with or without modifications, to be licensed * at no charge to all third parties under the terms of this * General Public License (except that you may choose to grant * warranty protection to some or all third parties, at your * option). * * o If the modified module normally reads commands interactively * when run, you must cause it, when started running for such * interactive use in the simplest and most usual way, to print or * display an announcement including an appropriate copyright * notice and a notice that there is no warranty (or else, saying * that you provide a warranty) and that users may redistribute * the module under these conditions, and telling the user how to * view a copy of this General Public License. * * You may charge a fee for the physical act of transferring a copy, * and you may at your option offer warranty protection in exchange * for a fee. * * Mere aggregation of another independent work with the Module (or * its derivative) on a volume of a storage or distribution medium * does not bring the other work under the scope of these terms. * * 4. You may copy and distribute the Module (or a portion or * derivative of it, under Paragraph 2) in object code or executable * form under the terms of Paragraphs 1 and 2 above provided that you * also do one of the following: * * o accompany it with the complete corresponding machine- * readable source code, which must be distributed under the terms * of Paragraphs 1 and 2 above; or, * * o accompany it with a written offer, valid for at least three * years, to give any third party free (except for a nominal * charge for the cost of distribution) a complete machine- * readable copy of the corresponding source code, to be * distributed under the terms of Paragraphs 1 and 2 above; or, * * o accompany it with the information you received as to where * the corresponding source code may be obtained. (This * alternative is allowed only for noncommercial distribution and * only if you received the module in object code or executable * form alone.) * * Source code for a work means the preferred form of the work for * making modifications to it. For an executable file, complete * source code means all the source code for all modules it contains; * but, as a special exception, it need not include source code for * modules which are standard libraries that accompany the operating * system on which the executable file runs, or for standard header * files or definitions files that accompany that operating system. * * 5. You may not copy, modify, sublicense, distribute or transfer * the Module except as expressly provided under this General Public * License. Any attempt otherwise to copy, modify, sublicense, * distribute or transfer the Module is void, and will automatically * terminate your rights to use the Module under this License. * However, parties who have received copies, or rights to use copies, * from you under this General Public License will not have their * licenses terminated so long as such parties remain in full * compliance. * * 6. By copying, distributing or modifying the Module (or any work * based on the Module) you indicate your acceptance of this license * to do so, and all its terms and conditions. * * 7. Each time you redistribute the Module (or any work based on the * Module), the recipient automatically receives a license from the * original licensor to copy, distribute or modify the Module subject * to these terms and conditions. You may not impose any further * restrictions on the recipients' exercise of the rights granted * herein. * * 8. The ITU-T may publish revised and/or new versions of this * General Public License from time to time. Such new versions will * be similar in spirit to the present version, but may differ in * detail to address new problems or concerns. * * Each version is given a distinguishing version number. If the * Module specifies a version number of the license which applies to * it and "any later version", you have the option of following the * terms and conditions either of that version or of any later version * published by the ITU-T. If the Module does not specify a version * number of the license, you may choose any version ever published by * the ITU-T. * * 9. If you wish to incorporate parts of the Module into other free * modules whose distribution conditions are different, write to the * author to ask for permission. For software which is copyrighted by * the ITU-T, write to the ITU-T Secretariat; exceptions may be made * for this. This decision will be guided by the two goals of * preserving the free status of all derivatives of this free software * and of promoting the sharing and reuse of software generally. * * * NO WARRANTY * * 10. BECAUSE THE MODULE IS LICENSED FREE OF CHARGE, THERE IS NO * WARRANTY FOR THE MODULE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. * EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS * AND/OR OTHER PARTIES PROVIDE THE MODULE "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND * PERFORMANCE OF THE MODULE IS WITH YOU. SHOULD THE MODULE PROVE * DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR * OR CORRECTION. * * 11. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN * WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY * MODIFY AND/OR REDISTRIBUTE THE MODULE AS PERMITTED ABOVE, BE LIABLE * TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR * CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE * THE MODULE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING * RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR * A FAILURE OF THE MODULE TO OPERATE WITH ANY OTHER MODULES), EVEN IF * SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF * SUCH DAMAGES. * * END OF TERMS AND CONDITIONS ***************************************************************************/ ; .equ __33FJ256GP710, 1 ;------------------------------------------------------------------------------ ;Global Declarations: ;------------------------------------------------------------------------------ .global _G726_fmult .global _G726_fmult_b ;void G726_fmult(short a2,short a1,short *sr1,short *wa2,short *wa1); ;void G726_fmult_b(short *An,short *SRn,short *WAn); ;------------------------------------------------------------------------------ ;Code Section in Program Memory ;------------------------------------------------------------------------------ .section libg726a, code /****************************************************************************** * * Function Name: G726_fmult * * System: RISC * * Platform: dsPIC33F * * Description: Floating point multiplication routine * for A-filter and B-filter coefficients * * Cycle Count: 68 * * Input Parameters: short w0 - a2 * short w1 - a1 * short w2 - *sr1 * short w3 - *wa2 * short w4 - *wa1 * * Outputs : short w3 - *wa2 * short w4 - *wa1 * * Return value: None * * History : * * Date | By | Remarks * ---------------+-------------------+---------------------------------- * Oct-18-2005 Ravikiran P. Created. * Oct-24-2005 Ravikiran P. Released (cycles - 91) * Nov-02-2005 Sharanabasava M. Optimised and Released (cycles - 73) ******************************************************************************/ .text _G726_fmult: do #1,FMEND asr w1,#2,w7 ;anmag btsc w1,#15 neg w7,w7 ff1l w7,w5 subr w5,#17,w3 ;anexp cp0 w7 bra NZ,FMELSE1 mov #0x20,w5 ;anmant mov #0,w3 bra FMNEXT1 FMELSE1: lac w7,B sftac B,w3 sac B,#-6,w5 FMNEXT1: btsc w1,#15 neg w5,w5 mul.ss w5,[w2++],w6 ;wanmant clr w7 ;wans cp0 w6 bra GE,FMNEXT2 mov #1,w7 neg w6,w6 FMNEXT2: add #48,w6 asr w6,#4,w6 sl w6,#7,w6 add w3,[w2++],w1 ;wanexp sub w1,#26,w1 cp0 w1 bra GT,FMELSE2 neg w1,w1 asr w6,w1,w6 ;wanmag bra FMNEXT3 FMELSE2: sl w6,w1,w6 bclr w6,#15 FMNEXT3: btsc w7,#0 neg w6,w6 mov w0,w1 FMEND: mov w6,[w4++] return /****************************************************************************** * * Function Name: G726_fmult_b * * System: RISC * * Platform: dsPIC30F * * Description: Floating point multiplication routine for * A-filter and B-filter coefficients * * Cycle Count: 206 * * Input Parameters: w0 - *An * w1 - *SRn * w2 - *WAn * * Outputs: w0 - *WAn * * Return value: None * * History: * * Date | By | Remarks * ---------------+-------------------+---------------------------------- * Oct-18-2005 Ravikiran P. Created. * Oct-18-2005 Ravikiran P. Released (cycles - 247) * Oct-30-2005 Sharanabasava M. Optimised (cycles - 206) ******************************************************************************/ _G726_fmult_b: mov #8191, w3 do #5,END asr [w0],w6 ;anmag asr w6,w6 cp0 [w0] bra GE,NEXT1 neg w6,w6 and w3,w6,w6 NEXT1: ff1l w6,w4 subr w4,#17,w4 ;anexp cp0 w6 bra NZ,ELSE1 mov #0x20,w6 ;anmant mov #0,w4 bra NEXT2 ELSE1: lac w6,B sftac B,w4 sac B,#-6,w6 NEXT2: btsc [w0++],#15 neg w6,w6 ELSE2: mul.ss w6,[w1++],w6 ;wanmant clr w7 ;wans cp0 w6 bra GE,NEXT3 mov #1,w7 neg w6,w6 NEXT3: add #48,w6 asr w6,#4,w6 sl w6,#7,w6 add w4,[w1++],w4 sub w4,#26,w4 ;wanexp cp0 w4 bra LE,ELSE3 sl w6,w4,w4 bclr w4,#15 bra NEXT4 ELSE3: neg w4,w4 asr w6,w4,w4 NEXT4: btsc w7,#0 neg w4,w4 ;wan END: mov w4,[w2++] return ;--------End of All Code Sections --------------------------------------------- .end ;End of program code in this file