]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/gcc-tumbl.git/commitdiff
Backport from mainline:
authorwalt <walt@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 26 Mar 2013 06:30:55 +0000 (06:30 +0000)
committerwalt <walt@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 26 Mar 2013 06:30:55 +0000 (06:30 +0000)
2013-03-25  Walter Lee  <walt@tilera.com>

* config/tilegx/tilegx.c (expand_set_cint64_one_inst): Inline
tests for constraint J, K, N, P.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@197091 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/tilegx/tilegx.c

index d7929950139c201e92e7ff277e92b6ef7d7d9c6d..6108b098fd08353512cc319a2dd213667c190318 100644 (file)
@@ -1,3 +1,11 @@
+2013-03-26  Walter Lee  <walt@tilera.com>
+
+       Backport from mainline:
+       2013-03-25  Walter Lee  <walt@tilera.com>
+
+       * config/tilegx/tilegx.c (expand_set_cint64_one_inst): Inline
+       tests for constraint J, K, N, P.
+
 2013-03-26  Walter Lee  <walt@tilera.com>
 
        Backport from mainline:
index de652c3bd3a0029eada55af492d45a0f027e29db..ff36b2e35165b6434f7097f4bcd1eaf19bfc533e 100644 (file)
@@ -1352,14 +1352,16 @@ expand_set_cint64_one_inst (rtx dest_reg,
     }
   else if (!three_wide_only)
     {
-      rtx imm_op = GEN_INT (val);
-
-      if (satisfies_constraint_J (imm_op)
-         || satisfies_constraint_K (imm_op)
-         || satisfies_constraint_N (imm_op)
-         || satisfies_constraint_P (imm_op))
+      /* Test for the following constraints: J, K, N, P.  We avoid
+        generating an rtx and using existing predicates because we
+        can be testing and rejecting a lot of constants, and GEN_INT
+        is O(N).  */
+      if ((val >= -32768 && val <= 65535)
+         || ((val == (val & 0xFF) * 0x0101010101010101LL))
+         || (val == ((trunc_int_for_mode (val, QImode) & 0xFFFF)
+                     * 0x0001000100010001LL)))
        {
-         emit_move_insn (dest_reg, imm_op);
+         emit_move_insn (dest_reg, GEN_INT (val));
          return true;
        }
     }