expr.c (expand_assignment): Add assertion to prevent emitting null rtx for movmisalig...
authorJulian Brown <julian@codesourcery.com>
Mon, 4 Oct 2010 14:59:30 +0000 (14:59 +0000)
committerJulian Brown <jules@gcc.gnu.org>
Mon, 4 Oct 2010 14:59:30 +0000 (14:59 +0000)
commitc452684d45087cb02bf3a9ebe973682a3b946a56
treeb1fa492abbca688528392350fda6e82bd301c1e9
parenta3f2babd42c1b52ec313dec8af4eaa0386182d64
expr.c (expand_assignment): Add assertion to prevent emitting null rtx for movmisalign pattern.

gcc/
* expr.c (expand_assignment): Add assertion to prevent emitting
null rtx for movmisalign pattern.
(expand_expr_real_1): Likewise.
* config/arm/arm.c (arm_builtin_support_vector_misalignment): New.
(TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): New. Use above.
(arm_vector_alignment_reachable): New.
(TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE): New. Use above.
(neon_vector_mem_operand): Disallow PRE_DEC for misaligned loads.
(arm_print_operand): Include alignment qualifier in %A.
* config/arm/neon.md (UNSPEC_MISALIGNED_ACCESS): New constant.
(movmisalign<mode>): New expander.
(movmisalign<mode>_neon_store, movmisalign<mode>_neon_load): New
insn patterns.

gcc/testsuite/
* gcc.dg/vect/vect-42.c: Use vect_element_align instead of
vect_hw_misalign.
* gcc.dg/vect/vect-60.c: Likewise.
* gcc.dg/vect/vect-56.c: Likewise.
* gcc.dg/vect/vect-93.c: Likewise.
* gcc.dg/vect/no-scevccp-outer-8.c: Likewise.
* gcc.dg/vect/vect-95.c: Likewise.
* gcc.dg/vect/vect-96.c: Likewise.
* gcc.dg/vect/vect-outer-5.c: Use quad-word vectors when available.
* gcc.dg/vect/slp-25.c: Likewise.
* gcc.dg/vect/slp-3.c: Likewise.
* gcc.dg/vect/vect-multitypes-1.c: Likewise.
* gcc.dg/vect/no-vfa-pr29145.c: Likewise.
* gcc.dg/vect/vect-multitypes-4.c: Likewise. Use vect_element_align.
* gcc.dg/vect/vect-109.c: Likewise.
* gcc.dg/vect/vect-peel-1.c: Likewise.
* gcc.dg/vect/vect-peel-2.c: Likewise.
* lib/target-supports.exp
(check_effective_target_arm_vect_no_misalign): New.
(check_effective_target_vect_no_align): Use above.
(check_effective_target_vect_element_align): New.
(add_options_for_quad_vectors): New.

From-SVN: r164941
22 files changed:
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/neon.md
gcc/expr.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/no-scevccp-outer-8.c
gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
gcc/testsuite/gcc.dg/vect/slp-25.c
gcc/testsuite/gcc.dg/vect/slp-3.c
gcc/testsuite/gcc.dg/vect/vect-109.c
gcc/testsuite/gcc.dg/vect/vect-42.c
gcc/testsuite/gcc.dg/vect/vect-56.c
gcc/testsuite/gcc.dg/vect/vect-60.c
gcc/testsuite/gcc.dg/vect/vect-93.c
gcc/testsuite/gcc.dg/vect/vect-95.c
gcc/testsuite/gcc.dg/vect/vect-96.c
gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
gcc/testsuite/gcc.dg/vect/vect-outer-5.c
gcc/testsuite/gcc.dg/vect/vect-peel-1.c
gcc/testsuite/gcc.dg/vect/vect-peel-2.c
gcc/testsuite/lib/target-supports.exp