as trivial copy of ?asum with the fabs calls removedtags/v0.3.6^2
@@ -0,0 +1,207 @@ | |||||
/*********************************************************************/ | |||||
/* 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 STACK 8 | |||||
#define ARGS 0 | |||||
#define STACK_M 4 + STACK + ARGS(%esp) | |||||
#define STACK_X 8 + STACK + ARGS(%esp) | |||||
#define STACK_INCX 12 + STACK + ARGS(%esp) | |||||
#define M %edx | |||||
#define X %ecx | |||||
#define INCX %esi | |||||
#define I %eax | |||||
#include "l1param.h" | |||||
PROLOGUE | |||||
pushl %esi | |||||
pushl %ebx | |||||
PROFCODE | |||||
#if defined(F_INTERFACE_GFORT) || defined(F_INTERFACE_G95) | |||||
EMMS | |||||
#endif | |||||
movl STACK_M, M | |||||
movl STACK_X, X | |||||
movl STACK_INCX, INCX | |||||
#ifdef F_INTERFACE | |||||
movl (M), M | |||||
movl (INCX), INCX | |||||
#endif | |||||
fldz | |||||
testl M, M | |||||
jle .L999 | |||||
testl INCX, INCX | |||||
jle .L999 | |||||
sall $BASE_SHIFT, INCX | |||||
fldz | |||||
fldz | |||||
fldz | |||||
cmpl $SIZE, INCX | |||||
jne .L40 | |||||
movl M, I | |||||
sarl $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) | |||||
addl $8 * SIZE, X | |||||
faddp %st, %st(7) | |||||
faddp %st, %st(5) | |||||
faddp %st, %st(3) | |||||
faddp %st, %st(1) | |||||
decl I | |||||
jg .L10 | |||||
ALIGN_4 | |||||
.L20: | |||||
movl M, I | |||||
andl $7, I | |||||
jle .L998 | |||||
ALIGN_4 | |||||
.L21: | |||||
FLD (X) | |||||
faddp %st,%st(1) | |||||
addl $1 * SIZE, X | |||||
decl I | |||||
jg .L21 | |||||
jmp .L998 | |||||
ALIGN_4 | |||||
.L40: | |||||
movl M, I | |||||
sarl $3, I | |||||
jle .L60 | |||||
ALIGN_4 | |||||
.L50: | |||||
FLD (X) | |||||
addl INCX, X | |||||
FLD (X) | |||||
addl INCX, X | |||||
FLD (X) | |||||
addl INCX, X | |||||
FLD (X) | |||||
addl INCX, X | |||||
faddp %st, %st(7) | |||||
faddp %st, %st(5) | |||||
faddp %st, %st(3) | |||||
faddp %st, %st(1) | |||||
FLD (X) | |||||
addl INCX, X | |||||
FLD (X) | |||||
addl INCX, X | |||||
FLD (X) | |||||
addl INCX, X | |||||
FLD (X) | |||||
addl INCX, X | |||||
faddp %st, %st(7) | |||||
faddp %st, %st(5) | |||||
faddp %st, %st(3) | |||||
faddp %st, %st(1) | |||||
decl I | |||||
jg .L50 | |||||
ALIGN_4 | |||||
.L60: | |||||
movl M, I | |||||
andl $7, I | |||||
jle .L998 | |||||
ALIGN_4 | |||||
.L61: | |||||
FLD (X) | |||||
addl INCX, X | |||||
faddp %st,%st(1) | |||||
decl I | |||||
jg .L61 | |||||
ALIGN_4 | |||||
.L998: | |||||
faddp %st,%st(2) | |||||
faddp %st,%st(1) | |||||
faddp %st,%st(1) | |||||
ALIGN_4 | |||||
.L999: | |||||
popl %ebx | |||||
popl %esi | |||||
ret | |||||
EPILOGUE |
@@ -0,0 +1,208 @@ | |||||
/*********************************************************************/ | |||||
/* 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 STACK 8 | |||||
#define ARGS 0 | |||||
#define STACK_M 4 + STACK + ARGS(%esp) | |||||
#define STACK_X 8 + STACK + ARGS(%esp) | |||||
#define STACK_INCX 12 + STACK + ARGS(%esp) | |||||
#define M %edx | |||||
#define X %ecx | |||||
#define INCX %esi | |||||
#define I %eax | |||||
#include "l1param.h" | |||||
PROLOGUE | |||||
pushl %esi | |||||
pushl %ebx | |||||
PROFCODE | |||||
#if defined(F_INTERFACE_GFORT) || defined(F_INTERFACE_G95) | |||||
EMMS | |||||
#endif | |||||
movl STACK_M, M | |||||
movl STACK_X, X | |||||
movl STACK_INCX, INCX | |||||
#ifdef F_INTERFACE | |||||
movl (M), M | |||||
movl (INCX), INCX | |||||
#endif | |||||
fldz | |||||
testl M, M | |||||
jle .L999 | |||||
testl INCX, INCX | |||||
jle .L999 | |||||
sall $ZBASE_SHIFT, INCX | |||||
fldz | |||||
fldz | |||||
fldz | |||||
cmpl $SIZE * 2, INCX | |||||
jne .L40 | |||||
movl M, I | |||||
sarl $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) | |||||
addl $8 * SIZE, X | |||||
faddp %st, %st(7) | |||||
faddp %st, %st(5) | |||||
faddp %st, %st(3) | |||||
faddp %st, %st(1) | |||||
decl I | |||||
jg .L10 | |||||
ALIGN_4 | |||||
.L20: | |||||
movl M, I | |||||
andl $3, I | |||||
jle .L998 | |||||
ALIGN_4 | |||||
.L21: | |||||
FLD 0 * SIZE(X) | |||||
FLD 1 * SIZE(X) | |||||
faddp %st,%st(3) | |||||
faddp %st,%st(1) | |||||
addl $2 * SIZE, X | |||||
decl I | |||||
jg .L21 | |||||
jmp .L998 | |||||
ALIGN_4 | |||||
.L40: | |||||
movl M, I | |||||
sarl $2, I | |||||
jle .L60 | |||||
ALIGN_4 | |||||
.L50: | |||||
FLD 0 * SIZE(X) | |||||
FLD 1 * SIZE(X) | |||||
addl INCX, X | |||||
FLD 0 * SIZE(X) | |||||
FLD 1 * SIZE(X) | |||||
addl 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) | |||||
addl INCX, X | |||||
FLD 0 * SIZE(X) | |||||
FLD 1 * SIZE(X) | |||||
addl INCX, X | |||||
faddp %st, %st(7) | |||||
faddp %st, %st(5) | |||||
faddp %st, %st(3) | |||||
faddp %st, %st(1) | |||||
decl I | |||||
jg .L50 | |||||
ALIGN_4 | |||||
.L60: | |||||
movl M, I | |||||
andl $3, I | |||||
jle .L998 | |||||
ALIGN_4 | |||||
.L61: | |||||
FLD 0 * SIZE(X) | |||||
FLD 1 * SIZE(X) | |||||
addl INCX, X | |||||
faddp %st,%st(3) | |||||
faddp %st,%st(1) | |||||
decl I | |||||
jg .L61 | |||||
ALIGN_4 | |||||
.L998: | |||||
faddp %st,%st(2) | |||||
faddp %st,%st(1) | |||||
faddp %st,%st(1) | |||||
ALIGN_4 | |||||
.L999: | |||||
popl %ebx | |||||
popl %esi | |||||
ret | |||||
EPILOGUE |