nvptx.c (enum nvptx_shuffle_kind): New.
* 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
This commit is contained in:
parent
2e733703c0
commit
592632598b
2 changed files with 22 additions and 9 deletions
|
@ -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>
|
2015-12-02 Aditya Kumar <aditya.k7@samsung.com>
|
||||||
Sebastian Pop <s.pop@samsung.com>
|
Sebastian Pop <s.pop@samsung.com>
|
||||||
|
|
||||||
|
|
|
@ -70,10 +70,15 @@
|
||||||
/* This file should be included last. */
|
/* This file should be included last. */
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
|
|
||||||
#define SHUFFLE_UP 0
|
/* The kind of shuffe instruction. */
|
||||||
#define SHUFFLE_DOWN 1
|
enum nvptx_shuffle_kind
|
||||||
#define SHUFFLE_BFLY 2
|
{
|
||||||
#define SHUFFLE_IDX 3
|
SHUFFLE_UP,
|
||||||
|
SHUFFLE_DOWN,
|
||||||
|
SHUFFLE_BFLY,
|
||||||
|
SHUFFLE_IDX,
|
||||||
|
SHUFFLE_MAX
|
||||||
|
};
|
||||||
|
|
||||||
/* Record the function decls we've written, and the libfuncs and function
|
/* Record the function decls we've written, and the libfuncs and function
|
||||||
decls corresponding to them. */
|
decls corresponding to them. */
|
||||||
|
@ -1221,7 +1226,7 @@ nvptx_gen_pack (rtx dst, rtx src0, rtx src1)
|
||||||
across the vectors of a single warp. */
|
across the vectors of a single warp. */
|
||||||
|
|
||||||
static rtx
|
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;
|
rtx res;
|
||||||
|
|
||||||
|
@ -2019,10 +2024,11 @@ nvptx_print_operand (FILE *file, rtx x, int code)
|
||||||
|
|
||||||
case 'S':
|
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[] =
|
static const char *const kinds[] =
|
||||||
{"up", "down", "bfly", "idx"};
|
{".up", ".down", ".bfly", ".idx"};
|
||||||
fprintf (file, ".%s", kinds[kind]);
|
fputs (kinds[kind], file);
|
||||||
}
|
}
|
||||||
break;
|
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)
|
if (!REG_P (idx) && GET_CODE (idx) != CONST_INT)
|
||||||
idx = copy_to_mode_reg (SImode, idx);
|
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)
|
if (pat)
|
||||||
emit_insn (pat);
|
emit_insn (pat);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue