summaryrefslogtreecommitdiff
path: root/gcc/config/ia64/lib1funcs.asm
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-06 03:20:53 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-06 03:20:53 +0000
commit54d078437f8d378d8451e75ddf76784386e75fba (patch)
tree67c81d5388740d14bdcee22feca83e9074cfc6d0 /gcc/config/ia64/lib1funcs.asm
parentd970db6d966b4cb2b16b1565406daee66e38e83f (diff)
downloadgcc-54d078437f8d378d8451e75ddf76784386e75fba.tar.gz
* config/ia64/lib1func.asm (__divtf3): Rebundle for Itanium.
Eliminate final copy from non-trapping case. (__divdf3, __divsf3): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36177 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/ia64/lib1funcs.asm')
-rw-r--r--gcc/config/ia64/lib1funcs.asm66
1 files changed, 34 insertions, 32 deletions
diff --git a/gcc/config/ia64/lib1funcs.asm b/gcc/config/ia64/lib1funcs.asm
index 44f30fd2cbf..8ce6fb0379e 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