summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2017-11-03 15:44:29 +0000
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2017-11-03 15:44:29 +0000
commitdc2ef1623c78c635877740742d882c92b7d4b426 (patch)
tree23cb7feec4c7a7b48944da3fcfb761e7fda8b1c2
parent205ce1aa3b50814847900daf8d9ef78b30270a97 (diff)
downloadgcc-dc2ef1623c78c635877740742d882c92b7d4b426.tar.gz
rs6000: Remove rs6000_emit_sISEL
Instead of calling rs6000_emit_sISEL, call rs6000_emit_int_cmove directly, in the one place it is used. * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete. (rs6000_emit_int_cmove): New declaration. * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration. (rs6000_emit_sISEL): Delete. (rs6000_emit_int_cmove): Make non-static. * config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove instead of rs6000_emit_sISEL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254380 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/rs6000/rs6000-protos.h2
-rw-r--r--gcc/config/rs6000/rs6000.c11
-rw-r--r--gcc/config/rs6000/rs6000.md2
4 files changed, 13 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0a27e36d6b8..c8c1576aae3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2017-11-03 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete.
+ (rs6000_emit_int_cmove): New declaration.
+ * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration.
+ (rs6000_emit_sISEL): Delete.
+ (rs6000_emit_int_cmove): Make non-static.
+ * config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove
+ instead of rs6000_emit_sISEL.
+
2017-11-03 Jan Hubicka <hubicka@ucw.cz>
* asan.c (create_cond_insert_point): Maintain profile.
diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h
index db0e692739c..721b906ee65 100644
--- a/gcc/config/rs6000/rs6000-protos.h
+++ b/gcc/config/rs6000/rs6000-protos.h
@@ -124,7 +124,6 @@ extern void print_operand_address (FILE *, rtx);
extern enum rtx_code rs6000_reverse_condition (machine_mode,
enum rtx_code);
extern rtx rs6000_emit_eqne (machine_mode, rtx, rtx, rtx);
-extern void rs6000_emit_sISEL (machine_mode, rtx[]);
extern void rs6000_emit_sCOND (machine_mode, rtx[]);
extern void rs6000_emit_cbranch (machine_mode, rtx[]);
extern char * output_cbranch (rtx, const char *, int, rtx_insn *);
@@ -132,6 +131,7 @@ extern const char * output_probe_stack_range (rtx, rtx, rtx);
extern void rs6000_emit_dot_insn (rtx dst, rtx src, int dot, rtx ccreg);
extern bool rs6000_emit_set_const (rtx, rtx);
extern int rs6000_emit_cmove (rtx, rtx, rtx, rtx);
+extern int rs6000_emit_int_cmove (rtx, rtx, rtx, rtx);
extern int rs6000_emit_vector_cond_expr (rtx, rtx, rtx, rtx, rtx, rtx);
extern void rs6000_emit_minmax (rtx, enum rtx_code, rtx, rtx);
extern void rs6000_split_signbit (rtx, rtx);
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 182dc308287..0eabd5f108c 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -1357,7 +1357,6 @@ static void rs6000_common_init_builtins (void);
static void paired_init_builtins (void);
static rtx paired_expand_predicate_builtin (enum insn_code, tree, rtx);
static void htm_init_builtins (void);
-static int rs6000_emit_int_cmove (rtx, rtx, rtx, rtx);
static rs6000_stack_t *rs6000_stack_info (void);
static void is_altivec_return_reg (rtx, void *);
int easy_vector_constant (rtx, machine_mode);
@@ -22478,14 +22477,6 @@ rs6000_expand_float128_convert (rtx dest, rtx src, bool unsigned_p)
}
-/* Emit the RTL for an sISEL pattern. */
-
-void
-rs6000_emit_sISEL (machine_mode mode ATTRIBUTE_UNUSED, rtx operands[])
-{
- rs6000_emit_int_cmove (operands[0], operands[1], const1_rtx, const0_rtx);
-}
-
/* Emit RTL that sets a register to zero if OP1 and OP2 are equal. SCRATCH
can be used as that dest register. Return the dest register. */
@@ -23261,7 +23252,7 @@ rs6000_emit_cmove (rtx dest, rtx op, rtx true_cond, rtx false_cond)
/* Same as above, but for ints (isel). */
-static int
+int
rs6000_emit_int_cmove (rtx dest, rtx op, rtx true_cond, rtx false_cond)
{
rtx condition_rtx, cr;
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 2ef028f93b3..ed5ff397e07 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -11782,7 +11782,7 @@
{
/* Use ISEL if the user asked for it. */
if (TARGET_ISEL)
- rs6000_emit_sISEL (<MODE>mode, operands);
+ rs6000_emit_int_cmove (operands[0], operands[1], const1_rtx, const0_rtx);
/* Expanding EQ and NE directly to some machine instructions does not help
but does hurt combine. So don't. */