summaryrefslogtreecommitdiff
path: root/gcc/config/i386/sse.md
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2011-09-21 19:37:00 +0200
committerUros Bizjak <uros@gcc.gnu.org>2011-09-21 19:37:00 +0200
commitbd352290bcbe1c80ce47ea3aa4d66d17a6e8d482 (patch)
treeae971a93333b822559742d9213ede6fd99d96a3b /gcc/config/i386/sse.md
parent655d51578160132920f0f88daadf8c9453c20045 (diff)
downloadgcc-bd352290bcbe1c80ce47ea3aa4d66d17a6e8d482.tar.gz
re PR target/50464 (Using -Ofast -march=bdver1 results in internal compiler error: in extract_insn, at recog.c:2109)
PR target/50464 * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change operand 1 predicate to register_operand and operand 2 predicate to nonimmediate_operand. * config/i386/i386.c (ix86_expand_sse_movcc): When generating xop_pcmov, force op_true to register. Also, force op_false to register if it doesn't satisfy nonimmediate_operand predicate. testsuite/ChangeLog: PR target/50464 * g++.dg/other/pr50464.C: New test. From-SVN: r179053
Diffstat (limited to 'gcc/config/i386/sse.md')
-rw-r--r--gcc/config/i386/sse.md4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 7c15e1a9a70..6c20ddbd851 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -10401,8 +10401,8 @@
[(set (match_operand:V 0 "register_operand" "=x,x")
(if_then_else:V
(match_operand:V 3 "nonimmediate_operand" "x,m")
- (match_operand:V 1 "vector_move_operand" "x,x")
- (match_operand:V 2 "vector_move_operand" "xm,x")))]
+ (match_operand:V 1 "register_operand" "x,x")
+ (match_operand:V 2 "nonimmediate_operand" "xm,x")))]
"TARGET_XOP"
"vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "sse4arg")])