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] |
Other format: | [Raw text] |
Hi Uros,This part of reg-stack.c change to get_true_reg() lowers UNSPEC_TRUNC_NOOP to plain move:
On Fri, 24 Nov 2006, Uros Bizjak wrote:
2006-11-24 Uros Bizjak <ubizjak@gmail.com>
config/i386/i386.md (UNSPEC_TRUNC_NOOP): New unspec definition. (X87MODEF): New mode macro. (ssemodefsuffix): New mode attribute. (truncxf<mode>2_i387_noop_unspec): New insn pattern. (sqrt_extend<mode>xf2_i387): New insn pattern. (sqrt<mode>2): For non-SSE sqrt, emit sqrt_extend<mode>xf2_i387 insn and truncate result back to original mode using UNSPEC_TRUNC_NOOP truncation. (*sqrt<mode>2_sse): Implement using SSEMODEF mode macro and ssemodefsuffix mode attribute. (*sqrtsf2_mixed, *sqrtsf2_i387, *sqrtdf2_mixed, *sqrtdf2_i387) (*sqrtextendsfdf2_i387, *sqrtextendsfxf2_i387) (*sqrtextenddfxf2_i387): Remove insn patterns.
(fmodsf3, fmoddf3, remaindersf3, remainderdf3): Use noop truncation patterns.
reg-stack.c (get_true_reg): Handle UNSPEC_TRUNC_NOOP.
This patch looks like a step in the right direction. Ok for mainline.
However my brain isn't working at the moment, so I'm unsure whether and
how the UNSPEC_TRUNC_NOOP gets optimized away with -ffast-math. For
+ case UNSPEC: + if (XINT (*pat, 1) == UNSPEC_TRUNC_NOOP) + { + pat = & XVECEXP (*pat, 0, 0); + break; + } +
example, i386.c's output_387_reg_move doesn't appear to do anything
clever when operands[0] == operands[1]. However even without
understanding exactly what's going on, I agree with the philosophy
of making the XFmode operations more explicit and using macros to
simplify the backends patterns, and I trust you enough that your
implementation is sound. I can figure out how things work once its
in the tree.
Roger, thanks for your review! Uros.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |