mips.c (mips_gen_const_int_vector): Change type of last argument.
authorPrachi Godbole <prachi.godbole@imgtec.com>
Mon, 6 Mar 2017 10:08:51 +0000 (10:08 +0000)
committerPrachi Godbole <prachigodbole@gcc.gnu.org>
Mon, 6 Mar 2017 10:08:51 +0000 (10:08 +0000)
gcc/
* config/mips/mips.c (mips_gen_const_int_vector): Change type of last
argument.
* config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise.

gcc/testsuite/
* gcc.target/mips/msa-bclri.c: New test.

From-SVN: r245910

gcc/ChangeLog
gcc/config/mips/mips-protos.h
gcc/config/mips/mips.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/mips/msa-bclri.c [new file with mode: 0644]

index 8c9396795c4b422b508b75f0ec0f1ab63204a358..5157670b995d703df833ddea1a331a2e2c6f807e 100644 (file)
@@ -1,3 +1,9 @@
+2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
+
+       * config/mips/mips.c (mips_gen_const_int_vector): Change type of last
+       argument.
+       * config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise.
+
 2017-03-06  Richard Biener  <rguenther@suse.de>
 
        * lto-streamer.c (lto_check_version): Use %qs in diagnostics.
index b1bb22d7b9581acb2dec39bcb4ba323e464366fe..95819ae85324b206c289d0c7060191650def2616 100644 (file)
@@ -294,7 +294,7 @@ extern bool mips_const_vector_shuffle_set_p (rtx, machine_mode);
 extern bool mips_const_vector_bitimm_set_p (rtx, machine_mode);
 extern bool mips_const_vector_bitimm_clr_p (rtx, machine_mode);
 extern rtx mips_msa_vec_parallel_const_half (machine_mode, bool);
-extern rtx mips_gen_const_int_vector (machine_mode, int);
+extern rtx mips_gen_const_int_vector (machine_mode, HOST_WIDE_INT);
 extern bool mips_secondary_memory_needed (enum reg_class, enum reg_class,
                                          machine_mode);
 extern bool mips_cannot_change_mode_class (machine_mode,
index 4e13fbe1ec3aec8e5253fa2669488cd93fde81a8..7778207dfc402c4efe60410149bae6dbed2dc81e 100644 (file)
@@ -21630,7 +21630,7 @@ mips_expand_vi_broadcast (machine_mode vmode, rtx target, rtx elt)
 /* Return a const_int vector of VAL with mode MODE.  */
 
 rtx
-mips_gen_const_int_vector (machine_mode mode, int val)
+mips_gen_const_int_vector (machine_mode mode, HOST_WIDE_INT val)
 {
   int nunits = GET_MODE_NUNITS (mode);
   rtvec v = rtvec_alloc (nunits);
index 26bfb0ac170b3dad41196d67c556eb901ef59e4d..ed9bcb164669b60ef6e1a54dd00582dc8ae74697 100644 (file)
@@ -1,3 +1,7 @@
+2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
+
+       * gcc.target/mips/msa-bclri.c: New test.
+
 2017-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/70266
diff --git a/gcc/testsuite/gcc.target/mips/msa-bclri.c b/gcc/testsuite/gcc.target/mips/msa-bclri.c
new file mode 100644 (file)
index 0000000..23c0442
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-mno-mips16 -mfp64 -mhard-float -mmsa" } */
+
+typedef long long v2i64 __attribute__ ((vector_size(16)));
+
+/* Test MSA AND.d optimization: generate BCLRI.d instead, for immediate const
+   vector operand with only one bit clear.  */
+
+void
+and_d_msa (v2i64 *vx, v2i64 *vy)
+{
+  v2i64 and_vec = {0x7FFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFF};
+  *vy = (*vx) & and_vec;
+}
+/* { dg-final { scan-assembler "bclri.d" } }  */