From 0c4fe8c7266f8df1fbf5ad6fadc82ac069260c5b Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Thu, 26 Mar 2015 23:14:07 +0100 Subject: [PATCH] re PR target/65561 (avx512fintrin.h:5344:1: internal compiler error: in curr_insn_transform, at lra-constraints.c:3494) PR target/65561 * config/i386/sse.md (avx512f_vextract32x4_1_maskm): Check operand 6 and operand 0 for equality. (vec_extract_lo__maskm): Check operand 2 and operand 0 for equality. (vec_extract_hi__maskm): Ditto. From-SVN: r221712 --- gcc/ChangeLog | 15 ++++++++++++--- gcc/config/i386/sse.md | 11 +++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eda17564616f..f6c6f39adb46 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2015-03-26 Uros Bizjak + + PR target/65561 + * config/i386/sse.md (avx512f_vextract32x4_1_maskm): + Check operand 6 and operand 0 for equality. + (vec_extract_lo__maskm): Check operand 2 and operand 0 + for equality. + (vec_extract_hi__maskm): Ditto. + 2015-03-26 Bill Schmidt Backport of r214242, r214254, and bug fix patches from mainline @@ -87,8 +96,8 @@ 2015-02-11 Martin Liska PR ipa/64813 - * cgraphunit.c (cgraph_node::expand_thunk): Do not create a return - value for call to a function that is noreturn. + * cgraphunit.c (cgraph_node::expand_thunk): Do not create a return + value for call to a function that is noreturn. 2015-03-23 Yvan Roux @@ -1254,7 +1263,7 @@ Backport from mainline. 2014-11-28 Ramana Radhakrishnan - * config/arm/t-aprofile (MULTILIB_MATCHES): New entry for + * config/arm/t-aprofile (MULTILIB_MATCHES): New entry for -march=armv8-a+crc. 2014-11-26 Richard Biener diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 439ced0dde57..5973b3423b05 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -5890,7 +5890,8 @@ "TARGET_AVX512F && (INTVAL (operands[2]) == (INTVAL (operands[3]) - 1) && INTVAL (operands[3]) == (INTVAL (operands[4]) - 1) - && INTVAL (operands[4]) == (INTVAL (operands[5]) - 1))" + && INTVAL (operands[4]) == (INTVAL (operands[5]) - 1)) + && rtx_equal_p (operands[6], operands[0])" { operands[2] = GEN_INT ((INTVAL (operands[2])) >> 2); return "vextract32x4\t{%2, %1, %0%{%7%}|%0%{%7%}, %1, %2}"; @@ -5985,8 +5986,9 @@ (const_int 2) (const_int 3)])) (match_operand: 2 "memory_operand" "0") (match_operand:QI 3 "register_operand" "Yk")))] - "TARGET_AVX512F" -"vextract64x4\t{$0x0, %1, %0%{%3%}|%0%{%3%}, %1, 0x0}" + "TARGET_AVX512F + && rtx_equal_p (operands[2], operands[0])" + "vextract64x4\t{$0x0, %1, %0%{%3%}|%0%{%3%}, %1, 0x0}" [(set_attr "type" "sselog") (set_attr "prefix_extra" "1") (set_attr "length_immediate" "1") @@ -6025,7 +6027,8 @@ (const_int 6) (const_int 7)])) (match_operand: 2 "memory_operand" "0") (match_operand:QI 3 "register_operand" "Yk")))] - "TARGET_AVX512F" + "TARGET_AVX512F + && rtx_equal_p (operands[2], operands[0])" "vextract64x4\t{$0x1, %1, %0%{%3%}|%0%{%3%}, %1, 0x1}" [(set_attr "type" "sselog") (set_attr "prefix_extra" "1") -- 2.47.2