as trivial copy of ?asum with the fabs calls removedtags/v0.3.6^2
| @@ -0,0 +1,179 @@ | |||||
| /*********************************************************************/ | |||||
| /* Copyright 2009, 2010 The University of Texas at Austin. */ | |||||
| /* All rights reserved. */ | |||||
| /* */ | |||||
| /* Redistribution and use in source and binary forms, with or */ | |||||
| /* without modification, are permitted provided that the following */ | |||||
| /* conditions are met: */ | |||||
| /* */ | |||||
| /* 1. Redistributions of source code must retain the above */ | |||||
| /* copyright notice, this list of conditions and the following */ | |||||
| /* disclaimer. */ | |||||
| /* */ | |||||
| /* 2. Redistributions in binary form must reproduce the above */ | |||||
| /* copyright notice, this list of conditions and the following */ | |||||
| /* disclaimer in the documentation and/or other materials */ | |||||
| /* provided with the distribution. */ | |||||
| /* */ | |||||
| /* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */ | |||||
| /* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */ | |||||
| /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ | |||||
| /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ | |||||
| /* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */ | |||||
| /* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */ | |||||
| /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */ | |||||
| /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */ | |||||
| /* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */ | |||||
| /* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */ | |||||
| /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ | |||||
| /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ | |||||
| /* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */ | |||||
| /* POSSIBILITY OF SUCH DAMAGE. */ | |||||
| /* */ | |||||
| /* The views and conclusions contained in the software and */ | |||||
| /* documentation are those of the authors and should not be */ | |||||
| /* interpreted as representing official policies, either expressed */ | |||||
| /* or implied, of The University of Texas at Austin. */ | |||||
| /*********************************************************************/ | |||||
| #define ASSEMBLER | |||||
| #include "common.h" | |||||
| #define M ARG1 | |||||
| #define X ARG2 | |||||
| #define INCX ARG3 | |||||
| #define I %rax | |||||
| #include "l1param.h" | |||||
| PROLOGUE | |||||
| PROFCODE | |||||
| fldz | |||||
| testq M, M | |||||
| jle .L999 | |||||
| testq INCX, INCX | |||||
| jle .L999 | |||||
| salq $BASE_SHIFT, INCX | |||||
| fldz | |||||
| fldz | |||||
| fldz | |||||
| cmpq $SIZE, INCX | |||||
| jne .L40 | |||||
| movq M, I | |||||
| sarq $3, I | |||||
| jle .L20 | |||||
| ALIGN_4 | |||||
| .L10: | |||||
| #ifdef PREFETCH | |||||
| PREFETCH (PREFETCHSIZE + 0) - PREOFFSET(X) | |||||
| #endif | |||||
| FLD 0 * SIZE(X) | |||||
| FLD 1 * SIZE(X) | |||||
| FLD 2 * SIZE(X) | |||||
| FLD 3 * SIZE(X) | |||||
| faddp %st, %st(7) | |||||
| faddp %st, %st(5) | |||||
| faddp %st, %st(3) | |||||
| faddp %st, %st(1) | |||||
| FLD 4 * SIZE(X) | |||||
| FLD 5 * SIZE(X) | |||||
| FLD 6 * SIZE(X) | |||||
| FLD 7 * SIZE(X) | |||||
| addq $8 * SIZE, X | |||||
| faddp %st, %st(7) | |||||
| faddp %st, %st(5) | |||||
| faddp %st, %st(3) | |||||
| faddp %st, %st(1) | |||||
| decq I | |||||
| jg .L10 | |||||
| ALIGN_4 | |||||
| .L20: | |||||
| andq $7, M | |||||
| jle .L998 | |||||
| ALIGN_4 | |||||
| .L21: | |||||
| FLD (X) | |||||
| faddp %st,%st(1) | |||||
| addq $1 * SIZE, X | |||||
| decq M | |||||
| jg .L21 | |||||
| jmp .L998 | |||||
| ALIGN_4 | |||||
| .L40: | |||||
| movq M, I | |||||
| sarq $3, I | |||||
| jle .L60 | |||||
| ALIGN_4 | |||||
| .L50: | |||||
| FLD (X) | |||||
| addq INCX, X | |||||
| FLD (X) | |||||
| addq INCX, X | |||||
| FLD (X) | |||||
| addq INCX, X | |||||
| FLD (X) | |||||
| addq INCX, X | |||||
| faddp %st, %st(7) | |||||
| faddp %st, %st(5) | |||||
| faddp %st, %st(3) | |||||
| faddp %st, %st(1) | |||||
| FLD (X) | |||||
| addq INCX, X | |||||
| FLD (X) | |||||
| addq INCX, X | |||||
| FLD (X) | |||||
| addq INCX, X | |||||
| FLD (X) | |||||
| addq INCX, X | |||||
| faddp %st, %st(7) | |||||
| faddp %st, %st(5) | |||||
| faddp %st, %st(3) | |||||
| faddp %st, %st(1) | |||||
| decq I | |||||
| jg .L50 | |||||
| ALIGN_4 | |||||
| .L60: | |||||
| andq $7, M | |||||
| jle .L998 | |||||
| ALIGN_4 | |||||
| .L61: | |||||
| FLD (X) | |||||
| addq INCX, X | |||||
| faddp %st,%st(1) | |||||
| decq M | |||||
| jg .L61 | |||||
| ALIGN_4 | |||||
| .L998: | |||||
| faddp %st,%st(2) | |||||
| faddp %st,%st(1) | |||||
| faddp %st,%st(1) | |||||
| ALIGN_4 | |||||
| .L999: | |||||
| ret | |||||
| EPILOGUE | |||||
| @@ -0,0 +1,180 @@ | |||||
| /*********************************************************************/ | |||||
| /* Copyright 2009, 2010 The University of Texas at Austin. */ | |||||
| /* All rights reserved. */ | |||||
| /* */ | |||||
| /* Redistribution and use in source and binary forms, with or */ | |||||
| /* without modification, are permitted provided that the following */ | |||||
| /* conditions are met: */ | |||||
| /* */ | |||||
| /* 1. Redistributions of source code must retain the above */ | |||||
| /* copyright notice, this list of conditions and the following */ | |||||
| /* disclaimer. */ | |||||
| /* */ | |||||
| /* 2. Redistributions in binary form must reproduce the above */ | |||||
| /* copyright notice, this list of conditions and the following */ | |||||
| /* disclaimer in the documentation and/or other materials */ | |||||
| /* provided with the distribution. */ | |||||
| /* */ | |||||
| /* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */ | |||||
| /* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */ | |||||
| /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ | |||||
| /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ | |||||
| /* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */ | |||||
| /* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */ | |||||
| /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */ | |||||
| /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */ | |||||
| /* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */ | |||||
| /* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */ | |||||
| /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ | |||||
| /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ | |||||
| /* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */ | |||||
| /* POSSIBILITY OF SUCH DAMAGE. */ | |||||
| /* */ | |||||
| /* The views and conclusions contained in the software and */ | |||||
| /* documentation are those of the authors and should not be */ | |||||
| /* interpreted as representing official policies, either expressed */ | |||||
| /* or implied, of The University of Texas at Austin. */ | |||||
| /*********************************************************************/ | |||||
| #define ASSEMBLER | |||||
| #include "common.h" | |||||
| #define M ARG1 | |||||
| #define X ARG2 | |||||
| #define INCX ARG3 | |||||
| #define I %rax | |||||
| #include "l1param.h" | |||||
| PROLOGUE | |||||
| PROFCODE | |||||
| fldz | |||||
| testq M, M | |||||
| jle .L999 | |||||
| testq INCX, INCX | |||||
| jle .L999 | |||||
| salq $ZBASE_SHIFT, INCX | |||||
| fldz | |||||
| fldz | |||||
| fldz | |||||
| cmpq $SIZE * 2, INCX | |||||
| jne .L40 | |||||
| movq M, I | |||||
| sarq $2, I | |||||
| jle .L20 | |||||
| ALIGN_4 | |||||
| .L10: | |||||
| #ifdef PREFETCH | |||||
| PREFETCH (PREFETCHSIZE + 0) - PREOFFSET(X) | |||||
| #endif | |||||
| FLD 0 * SIZE(X) | |||||
| FLD 1 * SIZE(X) | |||||
| FLD 2 * SIZE(X) | |||||
| FLD 3 * SIZE(X) | |||||
| faddp %st, %st(7) | |||||
| faddp %st, %st(5) | |||||
| faddp %st, %st(3) | |||||
| faddp %st, %st(1) | |||||
| FLD 4 * SIZE(X) | |||||
| FLD 5 * SIZE(X) | |||||
| FLD 6 * SIZE(X) | |||||
| FLD 7 * SIZE(X) | |||||
| addq $8 * SIZE, X | |||||
| faddp %st, %st(7) | |||||
| faddp %st, %st(5) | |||||
| faddp %st, %st(3) | |||||
| faddp %st, %st(1) | |||||
| decq I | |||||
| jg .L10 | |||||
| ALIGN_4 | |||||
| .L20: | |||||
| andq $3, M | |||||
| jle .L998 | |||||
| ALIGN_4 | |||||
| .L21: | |||||
| FLD 0 * SIZE(X) | |||||
| FLD 1 * SIZE(X) | |||||
| faddp %st,%st(3) | |||||
| faddp %st,%st(1) | |||||
| addq $2 * SIZE, X | |||||
| decq M | |||||
| jg .L21 | |||||
| jmp .L998 | |||||
| ALIGN_4 | |||||
| .L40: | |||||
| movq M, I | |||||
| sarq $2, I | |||||
| jle .L60 | |||||
| ALIGN_4 | |||||
| .L50: | |||||
| FLD 0 * SIZE(X) | |||||
| FLD 1 * SIZE(X) | |||||
| addq INCX, X | |||||
| FLD 0 * SIZE(X) | |||||
| FLD 1 * SIZE(X) | |||||
| addq INCX, X | |||||
| faddp %st, %st(7) | |||||
| faddp %st, %st(5) | |||||
| faddp %st, %st(3) | |||||
| faddp %st, %st(1) | |||||
| FLD 0 * SIZE(X) | |||||
| FLD 1 * SIZE(X) | |||||
| addq INCX, X | |||||
| FLD 0 * SIZE(X) | |||||
| FLD 1 * SIZE(X) | |||||
| addq INCX, X | |||||
| faddp %st, %st(7) | |||||
| faddp %st, %st(5) | |||||
| faddp %st, %st(3) | |||||
| faddp %st, %st(1) | |||||
| decq I | |||||
| jg .L50 | |||||
| ALIGN_4 | |||||
| .L60: | |||||
| andq $3, M | |||||
| jle .L998 | |||||
| ALIGN_4 | |||||
| .L61: | |||||
| FLD 0 * SIZE(X) | |||||
| FLD 1 * SIZE(X) | |||||
| addq INCX, X | |||||
| faddp %st,%st(3) | |||||
| faddp %st,%st(1) | |||||
| decq M | |||||
| jg .L61 | |||||
| ALIGN_4 | |||||
| .L998: | |||||
| faddp %st,%st(2) | |||||
| faddp %st,%st(1) | |||||
| faddp %st,%st(1) | |||||
| ALIGN_4 | |||||
| .L999: | |||||
| ret | |||||
| EPILOGUE | |||||