This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

ia64 divsf3 thinko


When trying to eliminate redundant moves, I forgot that we 
may have just gotten a NaN out of the frcpa.  So pull the 
same predicate inversion trick as I use on divdf3.


r~

        * config/ia64/lib1funcs.asm (__divsf3): Protect fnorm.s with p6.

Index: lib1funcs.asm
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/ia64/lib1funcs.asm,v
retrieving revision 1.10
diff -c -p -d -r1.10 lib1funcs.asm
*** lib1funcs.asm	2000/09/08 06:17:23	1.10
--- lib1funcs.asm	2000/09/13 21:08:50
*************** __divdf3:
*** 96,103 ****
--- 96,106 ----
  	.global __divsf3
  	.proc __divsf3
  __divsf3:
+ 	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)	fmpy.s1 f8 = farg0, f10
  (p6)	fnma.s1 f9 = farg1, f10, f1
  	;;
*************** __divsf3:
*** 109,115 ****
  	;;
  (p6)	fma.d.s1 f10 = f9, f8, f8
  	;;
! 	fnorm.s.s0 fret0 = f10
  	br.ret.sptk rp
  	;;
  	.endp __divsf3
--- 112,119 ----
  	;;
  (p6)	fma.d.s1 f10 = f9, f8, f8
  	;;
! (p6)	fnorm.s.s0 fret0 = f10
! (p7)	mov fret0 = f10
  	br.ret.sptk rp
  	;;
  	.endp __divsf3

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]