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
This commit is contained in:
Richard Henderson 2000-09-05 20:20:53 -07:00 committed by Richard Henderson
parent 354e99ce38
commit 3392dafcfd
2 changed files with 40 additions and 32 deletions

View File

@ -1,3 +1,9 @@
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> 2000-09-05 Richard Henderson <rth@cygnus.com>
* config/ia64/ia64.md (mulhi3): Fix typo last change. * config/ia64/ia64.md (mulhi3): Fix typo last change.

View File

@ -11,30 +11,31 @@
.global __divtf3 .global __divtf3
.proc __divtf3 .proc __divtf3
__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) fnma.s1 f11 = farg1, f10, f1
(p6) fmpy.s1 f12 = farg0, f10
;; ;;
(p6) fma.s1 f12 = f11, f10, f10 (p6) fmpy.s1 f13 = f11, f11
(p6) fma.s1 f11 = f11, f11, f0 (p6) fma.s1 f14 = f11, f11, f11
;; ;;
(p6) fma.s1 f11 = f11, f12, f12 (p6) fma.s1 f11 = f13, f13, f11
(p6) fma.s1 f13 = f14, f10, f10
;; ;;
(p6) fnma.s1 f12 = farg1, f11, f1 (p6) fma.s1 f10 = f13, f11, f10
(p6) fma.s1 f10 = farg0, f10, f0 (p6) fnma.s1 f12 = farg1, f12, farg0
;; ;;
(p6) fma.s1 f11 = f12, f11, f11 (p6) fma.s1 f11 = f11, f10, f12
(p6) fnma.s1 f12 = farg1, f10, farg0 (p6) fnma.s1 f13 = farg1, f10, f1
;; ;;
(p6) fma.s1 f10 = f12, f11, f10 (p6) fma.s1 f10 = f12, f10, f10
(p6) fnma.s1 f12 = farg1, f11, f1 (p6) fnma.s1 f12 = farg1, f11, farg0
;; ;;
(p6) fnma.s1 f8 = farg1, f10, farg0 (p6) fma fret0 = f12, f10, f11
(p6) fma.s1 f9 = f12, f11, f11 (p7) mov fret0 = f10
;;
(p6) fma f10 = f8, f9, f10
;;
mov fret0 = f10
br.ret.sptk rp br.ret.sptk rp
;; ;;
.endp __divtf3 .endp __divtf3
@ -53,17 +54,21 @@ __divtf3:
.global __divdf3 .global __divdf3
.proc __divdf3 .proc __divdf3
__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) fnma.s1 f12 = farg1, f10, f1
;; ;;
(p6) fma.s1 f11 = f12, f11, f11 (p6) fma.s1 f11 = f12, f11, f11
(p6) fma.s1 f13 = f12, f12, f0 (p6) fmpy.s1 f13 = f12, f12
(p6) fma.s1 f10 = f12, f10, f10
;; ;;
(p6) fma.s1 f10 = f12, f10, f10
(p6) fma.s1 f11 = f13, f11, f11 (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.s1 f10 = f13, f10, f10
;; ;;
(p6) fma.d.s1 f11 = f12, f11, f11 (p6) fma.d.s1 f11 = f12, f11, f11
@ -71,9 +76,8 @@ __divdf3:
;; ;;
(p6) fnma.d.s1 f8 = farg1, f11, farg0 (p6) fnma.d.s1 f8 = farg1, f11, farg0
;; ;;
(p6) fma.d f10 = f8, f10, f11 (p6) fma.d fret0 = f8, f10, f11
;; (p7) mov fret0 = f10
mov fret0 = f10
br.ret.sptk rp br.ret.sptk rp
;; ;;
.endp __divdf3 .endp __divdf3
@ -92,22 +96,20 @@ __divdf3:
.global __divsf3 .global __divsf3
.proc __divsf3 .proc __divsf3
__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) fnma.s1 f9 = farg1, f10, f1
;; ;;
(p6) fma.s1 f8 = f9, f8, f8 (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 f8 = f9, f8, f8
(p6) fma.s1 f9 = f9, f9, f0 (p6) fmpy.s1 f9 = f9, f9
;; ;;
(p6) fma.d.s1 f8 = f9, f8, f8 (p6) fma.d.s1 f10 = f9, f8, f8
;; ;;
(p6) fma.s f10 = f8, f1, f0 fnorm.s.s0 fret0 = f10
;;
mov fret0 = f10
br.ret.sptk rp br.ret.sptk rp
;; ;;
.endp __divsf3 .endp __divsf3