aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-09-05 20:20:53 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-09-05 20:20:53 -0700
commit3392dafcfdcbe74f8c60e14fa0f3ea73363552ab (patch)
tree67c81d5388740d14bdcee22feca83e9074cfc6d0 /gcc
parent354e99ce386a338ed6b7288fdec8b6ca13ce8946 (diff)
downloadgcc-3392dafcfdcbe74f8c60e14fa0f3ea73363552ab.zip
gcc-3392dafcfdcbe74f8c60e14fa0f3ea73363552ab.tar.gz
gcc-3392dafcfdcbe74f8c60e14fa0f3ea73363552ab.tar.bz2
lib1func.asm (__divtf3): Rebundle for Itanium.
* config/ia64/lib1func.asm (__divtf3): Rebundle for Itanium. Eliminate final copy from non-trapping case. (__divdf3, __divsf3): Likewise. From-SVN: r36177
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/ia64/lib1funcs.asm66
2 files changed, 40 insertions, 32 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fd6e3b8..d6ee969 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2000-09-05 Richard Henderson <rth@cygnus.com>
+ * config/ia64/lib1func.asm (__divtf3): Rebundle for Itanium.
+ Eliminate final copy from non-trapping case.
+ (__divdf3, __divsf3): Likewise.
+
+2000-09-05 Richard Henderson <rth@cygnus.com>
+
* config/ia64/ia64.md (mulhi3): Fix typo last change.
* config/ia64/lib1func.asm (__divdi3, __udivdi3, __umodsi3): Likewise.
diff --git a/gcc/config/ia64/lib1funcs.asm b/gcc/config/ia64/lib1funcs.asm
index 44f30fd..8ce6fb0 100644
--- a/gcc/config/ia64/lib1funcs.asm
+++ b/gcc/config/ia64/lib1funcs.asm
@@ -11,30 +11,31 @@
.global __divtf3
.proc __divtf3
__divtf3:
- frcpa f10, p6 = farg0, farg1
+ cmp.eq p7, p0 = r0, r0
+ frcpa.s0 f10, p6 = farg0, farg1
;;
+(p6) cmp.ne p7, p0 = r0, r0
+ .pred.rel.mutex p6, p7
(p6) fnma.s1 f11 = farg1, f10, f1
+(p6) fmpy.s1 f12 = farg0, f10
;;
-(p6) fma.s1 f12 = f11, f10, f10
-(p6) fma.s1 f11 = f11, f11, f0
- ;;
-(p6) fma.s1 f11 = f11, f12, f12
+(p6) fmpy.s1 f13 = f11, f11
+(p6) fma.s1 f14 = f11, f11, f11
;;
-(p6) fnma.s1 f12 = farg1, f11, f1
-(p6) fma.s1 f10 = farg0, f10, f0
+(p6) fma.s1 f11 = f13, f13, f11
+(p6) fma.s1 f13 = f14, f10, f10
;;
-(p6) fma.s1 f11 = f12, f11, f11
-(p6) fnma.s1 f12 = farg1, f10, farg0
+(p6) fma.s1 f10 = f13, f11, f10
+(p6) fnma.s1 f12 = farg1, f12, farg0
;;
-(p6) fma.s1 f10 = f12, f11, f10
-(p6) fnma.s1 f12 = farg1, f11, f1
+(p6) fma.s1 f11 = f11, f10, f12
+(p6) fnma.s1 f13 = farg1, f10, f1
;;
-(p6) fnma.s1 f8 = farg1, f10, farg0
-(p6) fma.s1 f9 = f12, f11, f11
- ;;
-(p6) fma f10 = f8, f9, f10
+(p6) fma.s1 f10 = f12, f10, f10
+(p6) fnma.s1 f12 = farg1, f11, farg0
;;
- mov fret0 = f10
+(p6) fma fret0 = f12, f10, f11
+(p7) mov fret0 = f10
br.ret.sptk rp
;;
.endp __divtf3
@@ -53,17 +54,21 @@ __divtf3:
.global __divdf3
.proc __divdf3
__divdf3:
- frcpa f10, p6 = farg0, farg1
+ cmp.eq p7, p0 = r0, r0
+ frcpa.s0 f10, p6 = farg0, farg1
;;
-(p6) fma.s1 f11 = farg0, f10, f0
+(p6) cmp.ne p7, p0 = r0, r0
+ .pred.rel.mutex p6, p7
+(p6) fmpy.s1 f11 = farg0, f10
(p6) fnma.s1 f12 = farg1, f10, f1
;;
(p6) fma.s1 f11 = f12, f11, f11
-(p6) fma.s1 f13 = f12, f12, f0
-(p6) fma.s1 f10 = f12, f10, f10
+(p6) fmpy.s1 f13 = f12, f12
;;
+(p6) fma.s1 f10 = f12, f10, f10
(p6) fma.s1 f11 = f13, f11, f11
-(p6) fma.s1 f12 = f13, f13, f0
+ ;;
+(p6) fmpy.s1 f12 = f13, f13
(p6) fma.s1 f10 = f13, f10, f10
;;
(p6) fma.d.s1 f11 = f12, f11, f11
@@ -71,9 +76,8 @@ __divdf3:
;;
(p6) fnma.d.s1 f8 = farg1, f11, farg0
;;
-(p6) fma.d f10 = f8, f10, f11
- ;;
- mov fret0 = f10
+(p6) fma.d fret0 = f8, f10, f11
+(p7) mov fret0 = f10
br.ret.sptk rp
;;
.endp __divdf3
@@ -92,22 +96,20 @@ __divdf3:
.global __divsf3
.proc __divsf3
__divsf3:
- frcpa f10, p6 = farg0, farg1
+ frcpa.s0 f10, p6 = farg0, farg1
;;
-(p6) fma.s1 f8 = farg0, f10, f0
+(p6) fmpy.s1 f8 = farg0, f10
(p6) fnma.s1 f9 = farg1, f10, f1
;;
(p6) fma.s1 f8 = f9, f8, f8
-(p6) fma.s1 f9 = f9, f9, f0
+(p6) fmpy.s1 f9 = f9, f9
;;
(p6) fma.s1 f8 = f9, f8, f8
-(p6) fma.s1 f9 = f9, f9, f0
- ;;
-(p6) fma.d.s1 f8 = f9, f8, f8
+(p6) fmpy.s1 f9 = f9, f9
;;
-(p6) fma.s f10 = f8, f1, f0
+(p6) fma.d.s1 f10 = f9, f8, f8
;;
- mov fret0 = f10
+ fnorm.s.s0 fret0 = f10
br.ret.sptk rp
;;
.endp __divsf3