diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/nvptx/nvptx.c | 17 |
2 files changed, 17 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aeeadfb8399..245ec28096c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2017-06-06 Tom de Vries <tom@codesourcery.com> + * config/nvptx/nvptx.c (split_mode_p): New function. + (nvptx_declare_function_name, nvptx_print_operand): Use split_mode_p. + +2017-06-06 Tom de Vries <tom@codesourcery.com> + * config/nvptx/nvptx.c (nvptx_print_operand): Use maybe_split_mode. 2017-06-06 Jan Hubicka <hubicka@ucw.cz> diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index 75ecc94be1f..2eb55700247 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -328,6 +328,14 @@ maybe_split_mode (machine_mode mode) return VOIDmode; } +/* Return true if mode should be treated as two registers. */ + +static bool +split_mode_p (machine_mode mode) +{ + return maybe_split_mode (mode) != VOIDmode; +} + /* Output a register, subreg, or register pair (with optional enclosing braces). */ @@ -1277,7 +1285,7 @@ nvptx_declare_function_name (FILE *file, const char *name, const_tree decl) machine_mode mode = PSEUDO_REGNO_MODE (i); machine_mode split = maybe_split_mode (mode); - if (split != VOIDmode) + if (split_mode_p (mode)) mode = split; fprintf (file, "\t.reg%s ", nvptx_ptx_type_from_mode (mode, true)); output_reg (file, i, split, -2); @@ -2396,9 +2404,8 @@ nvptx_print_operand (FILE *file, rtx x, int code) if (x_code == SUBREG) { mode = GET_MODE (SUBREG_REG (x)); - machine_mode split = maybe_split_mode (mode); - if (split != VOIDmode) - mode = split; + if (split_mode_p (mode)) + mode = maybe_split_mode (mode); } fprintf (file, "%s", nvptx_ptx_type_from_mode (mode, code == 't')); break; @@ -2499,7 +2506,7 @@ nvptx_print_operand (FILE *file, rtx x, int code) machine_mode inner_mode = GET_MODE (inner_x); machine_mode split = maybe_split_mode (inner_mode); - if (split != VOIDmode + if (split_mode_p (inner_mode) && (GET_MODE_SIZE (inner_mode) == GET_MODE_SIZE (mode))) output_reg (file, REGNO (inner_x), split); else |