diff mbox

Remove snprintf from <avx512>_(load|store)<mode>_mask

Message ID 20160110222818.GA25853@gmail.com
State New
Headers show

Commit Message

H.J. Lu Jan. 10, 2016, 10:28 p.m. UTC
This patch removes snprintf from <avx512>_(load|store)<mode>_mask
patterns.  Tested on x86-64.  OK for trunk?

H.J.
---

	* config/i386/sse.md (<avx512>_load<mode>_mask): Remove
	snprintf.
	(<avx512>_store<mode>_mask): Likewise.
---
 gcc/config/i386/sse.md | 52 ++++++++++++++++----------------------------------
 1 file changed, 16 insertions(+), 36 deletions(-)

Comments

Kirill Yukhin Jan. 11, 2016, 11:46 a.m. UTC | #1
Hello HJ,
On 10 Jan 14:28, H.J. Lu wrote:
> This patch removes snprintf from <avx512>_(load|store)<mode>_mask
> patterns.  Tested on x86-64.  OK for trunk?
The patch is OK for main trunk.

--
Thanks, K
> 
> H.J.
> ---
> 
> 	* config/i386/sse.md (<avx512>_load<mode>_mask): Remove
> 	snprintf.
> 	(<avx512>_store<mode>_mask): Likewise.
diff mbox

Patch

diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 757e7bd..88ebbbb 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -951,30 +951,20 @@ 
 	  (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512F"
 {
-  static char buf [64];
-
-  const char *insn_op;
-  const char *sse_suffix;
-  const char *align;
   if (FLOAT_MODE_P (GET_MODE_INNER (<MODE>mode)))
     {
-      insn_op = "vmov";
-      sse_suffix = "<ssemodesuffix>";
+      if (misaligned_operand (operands[1], <MODE>mode))
+	return "vmovu<ssemodesuffix>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}";
+      else
+	return "vmova<ssemodesuffix>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}";
     }
   else
     {
-      insn_op = "vmovdq";
-      sse_suffix = "<ssescalarsize>";
+      if (misaligned_operand (operands[1], <MODE>mode))
+	return "vmovdqu<ssescalarsize>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}";
+      else
+	return "vmovdqa<ssescalarsize>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}";
     }
-
-  if (misaligned_operand (operands[1], <MODE>mode))
-    align = "u";
-  else
-    align = "a";
-
-  snprintf (buf, sizeof (buf), "%s%s%s\t{%%1, %%0%%{%%3%%}%%N2|%%0%%{%%3%%}%%N2, %%1}",
-	    insn_op, align, sse_suffix);
-  return buf;
 }
   [(set_attr "type" "ssemov")
    (set_attr "prefix" "evex")
@@ -1026,30 +1016,20 @@ 
 	  (match_operand:<avx512fmaskmode> 2 "register_operand" "Yk")))]
   "TARGET_AVX512F"
 {
-  static char buf [64];
-
-  const char *insn_op;
-  const char *sse_suffix;
-  const char *align;
   if (FLOAT_MODE_P (GET_MODE_INNER (<MODE>mode)))
     {
-      insn_op = "vmov";
-      sse_suffix = "<ssemodesuffix>";
+      if (misaligned_operand (operands[0], <MODE>mode))
+	return "vmovu<ssemodesuffix>\t{%1, %0%{%2%}|%0%{%2%}, %1}";
+      else
+	return "vmova<ssemodesuffix>\t{%1, %0%{%2%}|%0%{%2%}, %1}";
     }
   else
     {
-      insn_op = "vmovdq";
-      sse_suffix = "<ssescalarsize>";
+      if (misaligned_operand (operands[0], <MODE>mode))
+	return "vmovdqu<ssescalarsize>\t{%1, %0%{%2%}|%0%{%2%}, %1}";
+      else
+	return "vmovdqa<ssescalarsize>\t{%1, %0%{%2%}|%0%{%2%}, %1}";
     }
-
-  if (misaligned_operand (operands[0], <MODE>mode))
-    align = "u";
-  else
-    align = "a";
-
-  snprintf (buf, sizeof (buf), "%s%s%s\t{%%1, %%0%%{%%2%%}|%%0%%{%%2%%}, %%1}",
-	    insn_op, align, sse_suffix);
-  return buf;
 }
   [(set_attr "type" "ssemov")
    (set_attr "prefix" "evex")