Hello!

We have to check natural alignment of the operand in
misaligned_operand predicate. This predicate is used to check SSE
memory operands for alignment, when movaps instead of movups can be
used. This change makes predicate independent of BIGGEST_ALIGNMENT
setting.

2015-11-13  Uros Bizjak  <ubiz...@gmail.com>

    * config/i386/predicates.md (misaligned_operand): Return true if
    operand is aligned to less than its natural alignmnet.

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32},
committed to mainline SVN.

Uros.

Index: config/i386/predicates.md
===================================================================
--- config/i386/predicates.md   (revision 230213)
+++ config/i386/predicates.md   (working copy)
@@ -1364,10 +1364,11 @@
 (define_predicate "absneg_operator"
   (match_code "abs,neg"))

-;; Return true if OP is misaligned memory operand
+;; Return true if OP is a memory operand, aligned to
+;; less than its natural alignment.
 (define_predicate "misaligned_operand"
   (and (match_code "mem")
-       (match_test "MEM_ALIGN (op) < GET_MODE_ALIGNMENT (mode)")))
+       (match_test "MEM_ALIGN (op) < GET_MODE_BITSIZE (mode)")))

 ;; Return true if OP is a emms operation, known to be a PARALLEL.

Reply via email to