Browse Source

Merge pull request #3025 from TiredNotTear/develop

MIPS: Fix two bugs
tags/v0.3.13^2
Martin Kroeker GitHub 4 years ago
parent
commit
7f11e33e8d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 98 additions and 21 deletions
  1. +2
    -2
      kernel/mips/cgemv_n_msa.c
  2. +19
    -7
      kernel/mips/cgemv_t_msa.c
  3. +28
    -2
      kernel/mips/dswap_msa.c
  4. +28
    -1
      kernel/mips/sswap_msa.c
  5. +2
    -2
      kernel/mips/zgemv_n_msa.c
  6. +19
    -7
      kernel/mips/zgemv_t_msa.c

+ 2
- 2
kernel/mips/cgemv_n_msa.c View File

@@ -56,11 +56,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#if !defined(XCONJ)
#define OP0 +=
#define OP1 -=
#define OP2 -=
#define OP2 +=
#else
#define OP0 -=
#define OP1 -=
#define OP2 +=
#define OP2 -=
#endif
#endif



+ 19
- 7
kernel/mips/cgemv_t_msa.c View File

@@ -32,14 +32,26 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#undef OP1
#undef OP2

#if ( !defined(CONJ) && !defined(XCONJ) ) || ( defined(CONJ) && defined(XCONJ) )
#define OP0 -=
#define OP1 +=
#define OP2 +=
#if !defined(CONJ)
#if !defined(XCONJ)
#define OP0 -=
#define OP1 +=
#define OP2 +=
#else
#define OP0 +=
#define OP1 +=
#define OP2 -=
#endif
#else
#define OP0 +=
#define OP1 +=
#define OP2 -=
#if !defined(XCONJ)
#define OP0 +=
#define OP1 -=
#define OP2 +=
#else
#define OP0 -=
#define OP1 -=
#define OP2 -=
#endif
#endif

#define CGEMV_T_8x4() \


+ 28
- 2
kernel/mips/dswap_msa.c View File

@@ -184,7 +184,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT dummy3,
}
}
}
else
else if ((inc_x != 0) && (inc_y != 0))
{
for (i = (n >> 3); i--;)
{
@@ -248,6 +248,32 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT dummy3,
}
}
}

else
{
if (inc_x == inc_y)
{
if (n & 1)
{
x0 = *srcx;
*srcx = *srcy;
*srcy = x0;
}
else
return (0);
}
else
{
BLASLONG ix = 0, iy = 0;
while (i < n)
{
x0 = srcx[ix];
srcx[ix] = srcy[iy];
srcy[iy] = x0;
ix += inc_x;
iy += inc_y;
i++;
}
}
}
return (0);
}

+ 28
- 1
kernel/mips/sswap_msa.c View File

@@ -198,7 +198,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT dummy3,
}
}
}
else
else if ((inc_x != 0) && (inc_y != 0))
{
for (i = (n >> 3); i--;)
{
@@ -262,6 +262,33 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT dummy3,
}
}
}
else
{
if (inc_x == inc_y)
{
if (n & 1)
{
x0 = *srcx;
*srcx = *srcy;
*srcy = x0;
}
else
return (0);
}
else
{
BLASLONG ix = 0, iy = 0;
while (i < n)
{
x0 = srcx[ix];
srcx[ix] = srcy[iy];
srcy[iy] = x0;
ix += inc_x;
iy += inc_y;
i++;
}
}
}

return (0);
}

+ 2
- 2
kernel/mips/zgemv_n_msa.c View File

@@ -56,11 +56,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#if !defined(XCONJ)
#define OP0 +=
#define OP1 -=
#define OP2 -=
#define OP2 +=
#else
#define OP0 -=
#define OP1 -=
#define OP2 +=
#define OP2 -=
#endif
#endif



+ 19
- 7
kernel/mips/zgemv_t_msa.c View File

@@ -34,14 +34,26 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#undef OP3
#undef OP4

#if ( !defined(CONJ) && !defined(XCONJ) ) || ( defined(CONJ) && defined(XCONJ) )
#define OP0 -=
#define OP1 +=
#define OP2 +=
#if !defined(CONJ)
#if !defined(XCONJ)
#define OP0 -=
#define OP1 +=
#define OP2 +=
#else
#define OP0 +=
#define OP1 +=
#define OP2 -=
#endif
#else
#define OP0 +=
#define OP1 +=
#define OP2 -=
#if !defined(XCONJ)
#define OP0 +=
#define OP1 -=
#define OP2 +=
#else
#define OP0 -=
#define OP1 -=
#define OP2 -=
#endif
#endif

#define ZGEMV_T_8x1() \


Loading…
Cancel
Save