aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/xtensa
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@acm.org>2002-03-12 20:02:36 +0000
committerBob Wilson <bwilson@gcc.gnu.org>2002-03-12 20:02:36 +0000
commite2fb85daa1bd54e7f64f99831000b0219118d8c3 (patch)
tree0dd65f61fd44112d0578512c728d7272344caa81 /gcc/config/xtensa
parent5a471df6f90bc64da849851237864184394f77ae (diff)
downloadgcc-e2fb85daa1bd54e7f64f99831000b0219118d8c3.zip
gcc-e2fb85daa1bd54e7f64f99831000b0219118d8c3.tar.gz
gcc-e2fb85daa1bd54e7f64f99831000b0219118d8c3.tar.bz2
xtensa-config.h: Define XCHAL_HAVE_LOOPS.
* config/xtensa/xtensa-config.h: Define XCHAL_HAVE_LOOPS. * config/xtensa/lib1funcs.asm: Fix copyright to include special case for libgcc files. (__udivsi3): Avoid loop instructions when XCHAL_HAVE_LOOPS is 0. (__divsi3): Likewise. (__umodsi3): Likewise. (__modsi3): Likewise. * config/xtensa/lib2funcs.S: Fix copyright to include special case for libgcc files. From-SVN: r50677
Diffstat (limited to 'gcc/config/xtensa')
-rw-r--r--gcc/config/xtensa/lib1funcs.asm39
-rw-r--r--gcc/config/xtensa/lib2funcs.S9
-rw-r--r--gcc/config/xtensa/xtensa-config.h8
3 files changed, 54 insertions, 2 deletions
diff --git a/gcc/config/xtensa/lib1funcs.asm b/gcc/config/xtensa/lib1funcs.asm
index acfb357..a40f11b 100644
--- a/gcc/config/xtensa/lib1funcs.asm
+++ b/gcc/config/xtensa/lib1funcs.asm
@@ -1,5 +1,5 @@
/* Assembly functions for the Xtensa version of libgcc1.
- Copyright (C) 2001 Free Software Foundation, Inc.
+ Copyright (C) 2001,2002 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
@@ -9,6 +9,15 @@ the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file. (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
@@ -211,13 +220,20 @@ __udivsi3:
movi a2, 0 # quotient = 0
# test-subtract-and-shift loop; one quotient bit on each iteration
+#if XCHAL_HAVE_LOOPS
loopnez a4, .Lloopend
+#endif /* XCHAL_HAVE_LOOPS */
+.Lloop:
bltu a6, a3, .Lzerobit
sub a6, a6, a3
addi a2, a2, 1
.Lzerobit:
slli a2, a2, 1
srli a3, a3, 1
+#if !XCHAL_HAVE_LOOPS
+ addi a4, a4, -1
+ bnez a4, .Lloop
+#endif /* !XCHAL_HAVE_LOOPS */
.Lloopend:
bltu a6, a3, .Lreturn
@@ -270,13 +286,20 @@ __divsi3:
movi a2, 0 # quotient = 0
# test-subtract-and-shift loop; one quotient bit on each iteration
+#if XCHAL_HAVE_LOOPS
loopnez a4, .Lloopend
+#endif /* XCHAL_HAVE_LOOPS */
+.Lloop:
bltu a6, a3, .Lzerobit
sub a6, a6, a3
addi a2, a2, 1
.Lzerobit:
slli a2, a2, 1
srli a3, a3, 1
+#if !XCHAL_HAVE_LOOPS
+ addi a4, a4, -1
+ bnez a4, .Lloop
+#endif /* !XCHAL_HAVE_LOOPS */
.Lloopend:
bltu a6, a3, .Lreturn
@@ -331,11 +354,18 @@ __umodsi3:
sll a3, a3 # divisor <<= count
# test-subtract-and-shift loop
+#if XCHAL_HAVE_LOOPS
loopnez a4, .Lloopend
+#endif /* XCHAL_HAVE_LOOPS */
+.Lloop:
bltu a2, a3, .Lzerobit
sub a2, a2, a3
.Lzerobit:
srli a3, a3, 1
+#if !XCHAL_HAVE_LOOPS
+ addi a4, a4, -1
+ bnez a4, .Lloop
+#endif /* !XCHAL_HAVE_LOOPS */
.Lloopend:
bltu a2, a3, .Lreturn
@@ -384,11 +414,18 @@ __modsi3:
sll a3, a3 # udivisor <<= count
# test-subtract-and-shift loop
+#if XCHAL_HAVE_LOOPS
loopnez a4, .Lloopend
+#endif /* XCHAL_HAVE_LOOPS */
+.Lloop:
bltu a2, a3, .Lzerobit
sub a2, a2, a3
.Lzerobit:
srli a3, a3, 1
+#if !XCHAL_HAVE_LOOPS
+ addi a4, a4, -1
+ bnez a4, .Lloop
+#endif /* !XCHAL_HAVE_LOOPS */
.Lloopend:
bltu a2, a3, .Lreturn
diff --git a/gcc/config/xtensa/lib2funcs.S b/gcc/config/xtensa/lib2funcs.S
index 82679e6..f607e01 100644
--- a/gcc/config/xtensa/lib2funcs.S
+++ b/gcc/config/xtensa/lib2funcs.S
@@ -9,6 +9,15 @@ the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file. (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
diff --git a/gcc/config/xtensa/xtensa-config.h b/gcc/config/xtensa/xtensa-config.h
index 277efb2..edeae97 100644
--- a/gcc/config/xtensa/xtensa-config.h
+++ b/gcc/config/xtensa/xtensa-config.h
@@ -1,7 +1,12 @@
/* Xtensa configuration settings.
- Copyright (C) 2001 Free Software Foundation, Inc.
+ Copyright (C) 2001,2002 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
+** NOTE: This file was automatically generated by the Xtensa Processor
+** Generator. Changes made here will be lost when this file is
+** updated or replaced with the settings for a different Xtensa
+** processor configuration. DO NOT EDIT!
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
@@ -29,6 +34,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define XCHAL_HAVE_NSA 1
#define XCHAL_HAVE_MINMAX 0
#define XCHAL_HAVE_SEXT 0
+#define XCHAL_HAVE_LOOPS 1
#define XCHAL_HAVE_BOOLEANS 0
#define XCHAL_HAVE_FP 0
#define XCHAL_HAVE_FP_DIV 0