aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-03-05 22:41:10 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-03-05 22:41:10 +0100
commit661b4dd0befeb56dac4baa777e0d4b0c979faa7f (patch)
treec83163bf55ca123be5ed6f5b6b797f83c3b8c8bc /gcc
parentf620e1d5c84586f6e60bf5350946ea4a75154ff4 (diff)
downloadgcc-661b4dd0befeb56dac4baa777e0d4b0c979faa7f.zip
gcc-661b4dd0befeb56dac4baa777e0d4b0c979faa7f.tar.gz
gcc-661b4dd0befeb56dac4baa777e0d4b0c979faa7f.tar.bz2
sse.md (sse_storehps, [...]): Require in condition that at least one operand is not a MEM.
* config/i386/sse.md (sse_storehps, sse_storelps, avx_<castmode><avxsizesuffix>_<castmode>, avx512f_<castmode><avxsizesuffix>_<castmode>, avx512f_<castmode><avxsizesuffix>_256<castmode>): Require in condition that at least one operand is not a MEM. From-SVN: r245904
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/sse.md10
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ad56f70..3432411 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2017-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/sse.md (sse_storehps, sse_storelps,
+ avx_<castmode><avxsizesuffix>_<castmode>,
+ avx512f_<castmode><avxsizesuffix>_<castmode>,
+ avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
+ in condition that at least one operand is not a MEM.
+
2017-03-03 Jakub Jelinek <jakub@redhat.com>
PR middle-end/79805
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index a6f1de7..52ddfd8 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -6639,7 +6639,7 @@
(vec_select:V2SF
(match_operand:V4SF 1 "nonimmediate_operand" "v,v,o")
(parallel [(const_int 2) (const_int 3)])))]
- "TARGET_SSE"
+ "TARGET_SSE && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
%vmovhps\t{%1, %0|%q0, %1}
%vmovhlps\t{%1, %d0|%d0, %1}
@@ -6692,7 +6692,7 @@
(vec_select:V2SF
(match_operand:V4SF 1 "nonimmediate_operand" " v,v,m")
(parallel [(const_int 0) (const_int 1)])))]
- "TARGET_SSE"
+ "TARGET_SSE && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
%vmovlps\t{%1, %0|%q0, %1}
%vmovaps\t{%1, %0|%0, %1}
@@ -18592,7 +18592,7 @@
(unspec:AVX256MODE2P
[(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "xm,x")]
UNSPEC_CAST))]
- "TARGET_AVX"
+ "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"#"
"&& reload_completed"
[(set (match_dup 0) (match_dup 1))]
@@ -19506,7 +19506,7 @@
(unspec:AVX512MODE2P
[(match_operand:<ssequartermode> 1 "nonimmediate_operand" "xm,x")]
UNSPEC_CAST))]
- "TARGET_AVX512F"
+ "TARGET_AVX512F && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"#"
"&& reload_completed"
[(set (match_dup 0) (match_dup 1))]
@@ -19523,7 +19523,7 @@
(unspec:AVX512MODE2P
[(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "xm,x")]
UNSPEC_CAST))]
- "TARGET_AVX512F"
+ "TARGET_AVX512F && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"#"
"&& reload_completed"
[(set (match_dup 0) (match_dup 1))]