> Joern Rennecke <joern.renne...@embecosm.com> wrote: >> That's a bug, then; we shouldn't use a library function there, >> but the cmpordered[sd]f_t_4 patterns. > > Argh, I've missed the required patterns are incorporated already > in your patch. I'll test it again with sh-softfp-predicate-fix > when the tests for 4.5.1-rc are done. Thanks!
I've tested sh-softfp-20100718-2131 + sh-softfp-predicate-fix on -m1, -m2, -m3, -m3 -ml, -m2a on sh-elf, sh4-linux and sh64-linux. sh64-linux required the first hunk of the attached patch to build. The test with -m3 -ml shows some regressions which look to be solved with the second hunk of the patch. Now all test results look clean. For NaN issue, I'd like to wait a full patch from Christian. I'm curious again about the numbers with/without it. Regards, kaz -- * config/sh/sh.md (cstoresf4): Fix typos. * config/sh/ieee-754-df.S (unorddf2): Use DBL1H instead of r6. diff -upr ORIG/trunk/gcc/config/sh/sh.md trunk/gcc/config/sh/sh.md --- ORIG/trunk/gcc/config/sh/sh.md Wed Jul 21 08:12:23 2010 +++ trunk/gcc/config/sh/sh.md Thu Jul 22 10:36:36 2010 @@ -9462,10 +9462,10 @@ mov.l\\t1f,r0\\n\\ "TARGET_SH1 || TARGET_SHMEDIA_FPU" "if (TARGET_SHMEDIA) { - if (!arith_operand (operands[2], DFmode)) - operands[2] = copy_to_mode_reg (DFmode, operands[2]); - if (!arith_operand (operands[3], DFmode)) - operands[3] = copy_to_mode_reg (DFmode, operands[3]); + if (!arith_operand (operands[2], SFmode)) + operands[2] = copy_to_mode_reg (SFmode, operands[2]); + if (!arith_operand (operands[3], SFmode)) + operands[3] = copy_to_mode_reg (SFmode, operands[3]); emit_insn (gen_cstore4_media (operands[0], operands[1], operands[2], operands[3])); DONE; diff -uprN ORIG/trunk/gcc/config/sh/ieee-754-df.S trunk/gcc/config/sh/ieee-754-df.S --- ORIG/trunk/gcc/config/sh/ieee-754-df.S 2010-07-20 11:39:29.000000000 +0900 +++ trunk/gcc/config/sh/ieee-754-df.S 2010-07-22 13:16:07.000000000 +0900 @@ -123,7 +123,7 @@ GLOBAL(unorddf2): mov.l LOCAL(c_DF_NAN_MASK),r1 not DBL0H,r0 tst r1,r0 - not r6,r0 + not DBL1H,r0 bt LOCAL(unord) tst r1,r0 LOCAL(unord):