nvptx.c (enum nvptx_shuffle_kind): New.
authorNathan Sidwell <nathan@acm.org>
Wed, 2 Dec 2015 17:28:32 +0000 (17:28 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Wed, 2 Dec 2015 17:28:32 +0000 (17:28 +0000)
* config/nvptx/nvptx.c (enum nvptx_shuffle_kind): New.  Absorb
SHUFFLE defines.
(nvptx_gen_shuffle, nvptx_print_operand, nvptx_expand_shuffle): Adjust.

From-SVN: r231192

gcc/ChangeLog
gcc/config/nvptx/nvptx.c

index a3d9854aecddda8aa2de24fa6830bc6591ebe592..d335b2ef4754a7086201e2f809aeac665df87772 100644 (file)
@@ -1,3 +1,9 @@
+2015-12-02  Nathan Sidwell  <nathan@acm.org>
+
+       * config/nvptx/nvptx.c (enum nvptx_shuffle_kind): New.  Absorb
+       SHUFFLE defines.
+       (nvptx_gen_shuffle, nvptx_print_operand, nvptx_expand_shuffle): Adjust.
+
 2015-12-02  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
 
index 17e129c537356f7209aad0e65f0f846874965782..dfdeb699d31f4a00183fe1e50711b9804888a500 100644 (file)
 /* This file should be included last.  */
 #include "target-def.h"
 
-#define SHUFFLE_UP 0
-#define SHUFFLE_DOWN 1
-#define SHUFFLE_BFLY 2
-#define SHUFFLE_IDX 3
+/* The kind of shuffe instruction.  */
+enum nvptx_shuffle_kind
+{
+  SHUFFLE_UP,
+  SHUFFLE_DOWN,
+  SHUFFLE_BFLY,
+  SHUFFLE_IDX,
+  SHUFFLE_MAX
+};
 
 /* Record the function decls we've written, and the libfuncs and function
    decls corresponding to them.  */
@@ -1221,7 +1226,7 @@ nvptx_gen_pack (rtx dst, rtx src0, rtx src1)
    across the vectors of a single warp.  */
 
 static rtx
-nvptx_gen_shuffle (rtx dst, rtx src, rtx idx, unsigned kind)
+nvptx_gen_shuffle (rtx dst, rtx src, rtx idx, nvptx_shuffle_kind kind)
 {
   rtx res;
 
@@ -2019,10 +2024,11 @@ nvptx_print_operand (FILE *file, rtx x, int code)
 
     case 'S':
       {
-       unsigned kind = UINTVAL (x);
+       nvptx_shuffle_kind kind = (nvptx_shuffle_kind) UINTVAL (x);
+       /* Same order as nvptx_shuffle_kind.  */
        static const char *const kinds[] = 
-         {"up", "down", "bfly", "idx"};
-       fprintf (file, ".%s", kinds[kind]);
+         {".up", ".down", ".bfly", ".idx"};
+       fputs (kinds[kind], file);
       }
       break;
 
@@ -3990,7 +3996,8 @@ nvptx_expand_shuffle (tree exp, rtx target, machine_mode mode, int ignore)
   if (!REG_P (idx) && GET_CODE (idx) != CONST_INT)
     idx = copy_to_mode_reg (SImode, idx);
 
-  rtx pat = nvptx_gen_shuffle (target, src, idx, INTVAL (op));
+  rtx pat = nvptx_gen_shuffle (target, src, idx,
+                              (nvptx_shuffle_kind) INTVAL (op));
   if (pat)
     emit_insn (pat);