https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117192

--- Comment #9 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Andrew Pinski from comment #6)

> The andn is swapped.
Indeed:

+(define_expand "andn<mode>3"
+  [(set (match_operand:MMXMODEI 0 "register_operand")
+        (and:MMXMODEI
+          (not:MMXMODEI (match_operand:MMXMODEI 1 "register_operand"))
+          (match_operand:MMXMODEI 2 "register_operand")))]
+  "TARGET_SSE2")

+(define_expand "andn<mode>3"
+  [(set (match_operand:VI 0 "register_operand")
+       (and:VI
+         (not:VI (match_operand:VI 2 "register_operand"))
+         (match_operand:VI 1 "register_operand")))]
+  "TARGET_SSE2")

Which operand order is correct?

Reply via email to