From 5ae46837e197be9b99bc8ada79f37f1a7dd4b51f Mon Sep 17 00:00:00 2001 From: Kirill Yukhin Date: Wed, 18 May 2016 09:16:09 +0000 Subject: [PATCH] i386. Extend static buffers. Fix SF mode operand constraint to `Yv' in storehpd pattern. gcc/ * gcc/config/i386/sse.md (define_insn "*andnot3"): Extend static array to 128 chars. (define_insn "*andnottf3"): Ditto. (define_insn "*3"/any_logic): Ditto. (define_insn "*tf3"/any_logic): Ditto. (define_insn "sse2_storehpd"): Use Yv constraint for scalar operand to block AVX-512VL insn variant emit when it is not enabled. From-SVN: r236364 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/i386/sse.md | 12 ++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5376a102a3..4592bcccbdc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2016-05-18 Kirill Yukhin + + * gcc/config/i386/sse.md (define_insn "*andnot3"): Extend static + array to 128 chars. + (define_insn "*andnottf3"): Ditto. + (define_insn "*3"/any_logic): Ditto. + (define_insn "*tf3"/any_logic): Ditto. + (define_insn "sse2_storehpd"): Use Yv constraint for scalar + operand to block AVX-512VL insn variant emit when it is not enabled. + 2016-05-18 Kirill Yukhin * config/i386/sse.md (define_insn "*vec_concatv2sf_sse4_1"): Use 'Yv' diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index a8492c7d61a..b0d3f81f43d 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -3027,7 +3027,7 @@ (match_operand:MODEF 2 "register_operand" "x,x,v,v")))] "SSE_FLOAT_MODE_P (mode)" { - static char buf[32]; + static char buf[128]; const char *ops; const char *suffix = (get_attr_mode (insn) == MODE_V4SF) ? "ps" : ""; @@ -3094,7 +3094,7 @@ (match_operand:TF 2 "vector_operand" "xBm,xm,vm,v")))] "TARGET_SSE" { - static char buf[32]; + static char buf[128]; const char *ops; const char *tmp = (which_alternative >= 2 ? "pandnq" @@ -3150,7 +3150,7 @@ (match_operand:MODEF 2 "register_operand" "x,x,v,v")))] "SSE_FLOAT_MODE_P (mode)" { - static char buf[32]; + static char buf[128]; const char *ops; const char *suffix = (get_attr_mode (insn) == MODE_V4SF) ? "ps" : ""; @@ -3225,7 +3225,7 @@ "TARGET_SSE && ix86_binary_operator_ok (, TFmode, operands)" { - static char buf[32]; + static char buf[128]; const char *ops; const char *tmp = (which_alternative >= 2 ? "pq" @@ -8426,9 +8426,9 @@ ;; Avoid combining registers from different units in a single alternative, ;; see comment above inline_secondary_memory_needed function in i386.c (define_insn "sse2_storehpd" - [(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,v,x,*f,r") + [(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,Yv,x,*f,r") (vec_select:DF - (match_operand:V2DF 1 "nonimmediate_operand" " v,0,v,o,o,o") + (match_operand:V2DF 1 "nonimmediate_operand" " v,0, v,o,o,o") (parallel [(const_int 1)])))] "TARGET_SSE2 && !(MEM_P (operands[0]) && MEM_P (operands[1]))" "@ -- 2.30.2