On Sat, Jul 11, 2015 at 9:23 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Thu, Jul 09, 2015 at 01:58:22PM -0700, H.J. Lu wrote: >> On Thu, Jul 09, 2015 at 12:13:38PM -0700, H.J. Lu wrote: >> > ix86_split_long_move can optimize floating point constant move, which >> > can be used to optimize SFmode move for IA MCU. >> > >> > OK for trunk if there is no regression? >> > >> > >> > H.J. >> > --- >> > gcc/ >> > >> > PR target/66824 >> > * config/i386/i386.c (ix86_split_to_parts): Allow SFmode move >> > for IA MCU. >> > (ix86_split_long_move): Support single move. >> > * config/i386/i386.md (FP splitter): Allow SFmode for IA MCU. >> > >> > gcc/testsuite/ >> > >> > PR target/66824 >> > * gcc.target/i386/pr66824.c: New test. >> > --- >> >> >> I missed the testcase. Here is the updated patch. >> > > ix86_split_long_move can optimize floating point constant move, which > can be used to optimize SFmode move with software floating point. > > OK for trunk if there are no regressions?
No, this patch is wrong. Please investigate why "*movsf_internal" doesn't use "?r/rmF" alternative in case FP regs are unavailable. Perhaps you should add new alternative with a conditional constraint, but without "?". And... please use: #define TARGET_HARD_FP_REGS (TARGET_80387 || TARGET_MMX || TARGET_SSE) Uros.