gcc/
authorkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Aug 2014 07:28:15 +0000 (07:28 +0000)
committerkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Aug 2014 07:28:15 +0000 (07:28 +0000)
* config/i386/i386.c (standard_sse_constant_opcode): Use
vpxord/vpternlog if avx512 is availible.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213847 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.c

index 6aff6fc..afce14f 100644 (file)
@@ -1,3 +1,15 @@
+2014-08-12  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+           Maxim Kuznetsov  <maxim.kuznetsov@intel.com>
+           Anna Tikhonova  <anna.tikhonova@intel.com>
+           Ilya Tocar  <ilya.tocar@intel.com>
+           Andrey Turetskiy  <andrey.turetskiy@intel.com>
+           Ilya Verbin  <ilya.verbin@intel.com>
+           Kirill Yukhin  <kirill.yukhin@intel.com>
+           Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
+
+       * config/i386/i386.c (standard_sse_constant_opcode): Use
+       vpxord/vpternlog if avx512 is availible.
+
 2014-08-12  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
        PR middle-end/62103
index f12e1c4..c77e8a6 100644 (file)
@@ -8997,19 +8997,24 @@ standard_sse_constant_opcode (rtx insn, rtx x)
       switch (get_attr_mode (insn))
        {
        case MODE_XI:
-       case MODE_V16SF:
          return "vpxord\t%g0, %g0, %g0";
+       case MODE_V16SF:
+         return TARGET_AVX512DQ ? "vxorps\t%g0, %g0, %g0"
+                                : "vpxord\t%g0, %g0, %g0";
        case MODE_V8DF:
-         return "vpxorq\t%g0, %g0, %g0";
+         return TARGET_AVX512DQ ? "vxorpd\t%g0, %g0, %g0"
+                                : "vpxorq\t%g0, %g0, %g0";
        case MODE_TI:
-         return "%vpxor\t%0, %d0";
+         return TARGET_AVX512VL ? "vpxord\t%t0, %t0, %t0"
+                                : "%vpxor\t%0, %d0";
        case MODE_V2DF:
          return "%vxorpd\t%0, %d0";
        case MODE_V4SF:
          return "%vxorps\t%0, %d0";
 
        case MODE_OI:
-         return "vpxor\t%x0, %x0, %x0";
+         return TARGET_AVX512VL ? "vpxord\t%x0, %x0, %x0"
+                                : "vpxor\t%x0, %x0, %x0";
        case MODE_V4DF:
          return "vxorpd\t%x0, %x0, %x0";
        case MODE_V8SF:
@@ -9020,7 +9025,8 @@ standard_sse_constant_opcode (rtx insn, rtx x)
        }
 
     case 2:
-      if (get_attr_mode (insn) == MODE_XI
+      if (TARGET_AVX512VL
+         || get_attr_mode (insn) == MODE_XI
          || get_attr_mode (insn) == MODE_V8DF
          || get_attr_mode (insn) == MODE_V16SF)
        return "vpternlogd\t{$0xFF, %g0, %g0, %g0|%g0, %g0, %g0, 0xFF}";