[Bug target/70873] [7 Regressio] 20% performance regression at 482.sphinx3 after r235442 with -O2 -m32 on Haswell.

hjl.tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Wed May 4 20:01:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70873

--- Comment #26 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Uroš Bizjak from comment #25)
> (In reply to H.J. Lu from comment #23)
> 
> > We need to move those special SSE SF->DF splitters before
> 
> No, this splitter will fail if the transformation doesn't result in a
> constant. So, we actually want this splitter first, to try to transform a
> memory load to a constant load, and moving others before this one would be
> harmful.
> 
> > (define_split
> >   [(set (match_operand 0 "any_fp_register_operand")
> >         (float_extend (match_operand 1 "memory_operand")))]
> >   "reload_completed
> >    && (GET_MODE (operands[0]) == TFmode
> >        || GET_MODE (operands[0]) == XFmode
> >        || GET_MODE (operands[0]) == DFmode)"
> >   [(set (match_dup 0) (match_dup 2))]
> > {
> >   operands[2] = find_constant_src (curr_insn);
> > 
> >   if (operands[2] == NULL_RTX
> >       || (SSE_REGNO_P (REGNO (operands[0]))
> >           && standard_sse_constant_p (operands[2],
> >                                       GET_MODE (operands[0])) != 1)
> >       || (STACK_REGNO_P (REGNO (operands[0]))
> >            && standard_80387_constant_p (operands[2]) < 1))
> >     FAIL;
> > })

But when this splitter fails, no other splitters will be tried.


More information about the Gcc-bugs mailing list