Remove snprintf from <avx512>_(load|store)<mode>_mask
authorH.J. Lu <hongjiu.lu@intel.com>
Mon, 11 Jan 2016 12:33:25 +0000 (12:33 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Mon, 11 Jan 2016 12:33:25 +0000 (04:33 -0800)
This patch removes snprintf from <avx512>_(load|store)<mode>_mask
patterns.

* config/i386/sse.md (<avx512>_load<mode>_mask): Remove
snprintf.
(<avx512>_store<mode>_mask): Likewise.

From-SVN: r232225

gcc/ChangeLog
gcc/config/i386/sse.md

index c910e8968c7d392b2316c8ae951c6326c0ecf560..ffe643e6084da50c45c1c75472c36803b09b6610 100644 (file)
@@ -1,3 +1,9 @@
+2016-01-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/sse.md (<avx512>_load<mode>_mask): Remove
+       snprintf.
+       (<avx512>_store<mode>_mask): Likewise.
+
 2016-01-11  Bernd Schmidt  <bschmidt@redhat.com>
             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
index 278dd383295fc12a53354d85c2a7c87c298919bd..c8e2150a14d855fad5e0cc447477e47c345ed573 100644 (file)
          (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")
          (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")