aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2021-05-10 16:41:16 +0200
committerUros Bizjak <ubizjak@gmail.com>2021-05-10 16:41:16 +0200
commit695776733785973e809c89a739f3fa8d4c9b9d4e (patch)
tree9148c6b60373b6c42a4d2382a42c438acc82db22 /gcc
parent2bbacc18b35e44d45676a46eced26129f8f8378a (diff)
downloadgcc-695776733785973e809c89a739f3fa8d4c9b9d4e.zip
gcc-695776733785973e809c89a739f3fa8d4c9b9d4e.tar.gz
gcc-695776733785973e809c89a739f3fa8d4c9b9d4e.tar.bz2
i386: Force V2SI mode operands to registers in expand_sse_movcc
For some reason middle-end does not enforce operand predicates for vcond patterns. 2021-05-10 Uroš Bizjak <ubizjak@gmail.com> gcc/ * config/i386/i386-expand.c (ix86_expand_sse_movcc) <case E_V2SImode>: Force op_true to register.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i386/i386-expand.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c
index e9f11bc..5cfde5b 100644
--- a/gcc/config/i386/i386-expand.c
+++ b/gcc/config/i386/i386-expand.c
@@ -3707,6 +3707,8 @@ ix86_expand_sse_movcc (rtx dest, rtx cmp, rtx op_true, rtx op_false)
case E_V2SImode:
if (TARGET_SSE4_1)
{
+ op_true = force_reg (mode, op_true);
+
gen = gen_mmx_pblendvb;
if (mode != V8QImode)
d = gen_reg_rtx (V8QImode);