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]

[PATCH, i386]: Fix PR 61423, incorrect conversion from unsigned int to floating point


Hello!

Attached patch fixes PR 61423. The problem was that splitters omitted
apparently necessary zero extension, and left garbage in the highpart
of the register.

2014-06-06  Uros Bizjak  <ubizjak@gmail.com>

    PR target/61423
    * config/i386/i386.md (*floatunssi<mode>2_i387_with_xmm): New
    define_insn_and_split pattern, merged from *floatunssi<mode>2_1
    and corresponding splitters.  Zero extend general register
    or memory input operand to XMM temporary.  Enable for
    TARGET_SSE2 and TARGET_INTER_UNIT_MOVES_TO_VEC only.
    (floatunssi<mode>2): Update expander predicate.

testsuite/ChangeLog:

2014-06-06  Uros Bizjak  <ubizjak@gmail.com>

    PR target/61423
    * gcc.target/i386/pr61423.c: New test.

The patch was bootstrapped and regression tested on
x86_64-pc-linux-gnu {,-m32} and committed to mainline SVN.

Please note that the patch breaks bootstrap when gcc is configured
with "--with-arch=core-avx-i --with-cpu=core-avx-i" due to an
unrelated problem in REE pass. The failing preprocessed source from
the libgcc is attached to the PR.

Uros.

Attachment: p.diff.txt
Description: Text document


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