[Bug target/47754] [missed optimization] AVX allows unaligned memory operands but GCC uses unaligned load and register operand

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Oct 30 17:59:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47754

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Wed Oct 30 17:59:44 2013
New Revision: 204219

URL: http://gcc.gnu.org/viewcvs?rev=204219&root=gcc&view=rev
Log:
    PR target/47754
    * config/i386/i386.c (ix86_avx256_split_vector_move_misalign): If
    op1 is misaligned_operand, just use *mov<mode>_internal insn
    rather than UNSPEC_LOADU load.
    (ix86_expand_vector_move_misalign): Likewise (for TARGET_AVX only).
    Avoid gen_lowpart on op0 if it isn't MEM.

    * gcc.target/i386/avx256-unaligned-load-1.c: Adjust scan-assembler
    and scan-assembler-not regexps.
    * gcc.target/i386/avx256-unaligned-load-2.c: Likewise.
    * gcc.target/i386/avx256-unaligned-load-3.c: Likewise.
    * gcc.target/i386/avx256-unaligned-load-4.c: Likewise.
    * gcc.target/i386/l_fma_float_1.c: Use pattern for
    scan-assembler-times instead of just one insn name.
    * gcc.target/i386/l_fma_float_2.c: Likewise.
    * gcc.target/i386/l_fma_float_3.c: Likewise.
    * gcc.target/i386/l_fma_float_4.c: Likewise.
    * gcc.target/i386/l_fma_float_5.c: Likewise.
    * gcc.target/i386/l_fma_float_6.c: Likewise.
    * gcc.target/i386/l_fma_double_1.c: Likewise.
    * gcc.target/i386/l_fma_double_2.c: Likewise.
    * gcc.target/i386/l_fma_double_3.c: Likewise.
    * gcc.target/i386/l_fma_double_4.c: Likewise.
    * gcc.target/i386/l_fma_double_5.c: Likewise.
    * gcc.target/i386/l_fma_double_6.c: Likewise.

Modified:
    trunk/gcc/config/i386/i386.c
    trunk/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
    trunk/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_double_1.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_double_2.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_double_3.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_double_4.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_double_5.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_double_6.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_float_1.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_float_2.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_float_3.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_float_4.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_float_5.c
    trunk/gcc/testsuite/gcc.target/i386/l_fma_float_6.c



More information about the Gcc-bugs mailing list