]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
m32c.c (m32c_const_ok_for_constraint_p): Add ImB constraint for single-bit-clear...
authorDJ Delorie <dj@redhat.com>
Mon, 10 Nov 2008 19:37:20 +0000 (14:37 -0500)
committerDJ Delorie <dj@gcc.gnu.org>
Mon, 10 Nov 2008 19:37:20 +0000 (14:37 -0500)
* config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
constraint for single-bit-clear in lower byte of HI constant, vs
Imb which just ignores the upper byte.
* config/m32c/predicates.md (m32c_1mask8_operand): Use it.
* config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
(iorhi3_16): Check for single bit set, not single bit clear.

From-SVN: r141747

gcc/ChangeLog
gcc/config/m32c/bitops.md
gcc/config/m32c/m32c.c
gcc/config/m32c/predicates.md

index 721cb77a7c971eadc22458553db78b0856a537ad..c30ee95b812c3cbcad07e1e8b0cdacc2b24a13d3 100644 (file)
@@ -1,3 +1,12 @@
+2008-11-10  DJ Delorie  <dj@redhat.com>
+
+       * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
+       constraint for single-bit-clear in lower byte of HI constant, vs
+       Imb which just ignores the upper byte.
+       * config/m32c/predicates.md (m32c_1mask8_operand): Use it.
+       * config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
+       (iorhi3_16): Check for single bit set, not single bit clear.
+
 2008-11-10  Janis Johnson  <janis187@us.ibm.com>
 
        * doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
index 966e680640f94a5a87c0e32f7f74d6928d138a4a..d92494ac3efd2897348b0592acd67be87615832f 100644 (file)
@@ -98,7 +98,7 @@
 (define_insn "andhi3_16"
   [(set (match_operand:HI 0 "mra_operand" "=Sp,Sp,Rhi,RhiSd,??Rmm,RhiSd,??Rmm")
        (and:HI (match_operand:HI 1 "mra_operand" "%0,0,0,0,0,0,0")
-               (match_operand:HI 2 "mrai_operand" "Imb,Imw,Imw,iRhiSd,?Rmm,?Rmm,iRhiSd")))]
+               (match_operand:HI 2 "mrai_operand" "ImB,Imw,Imw,iRhiSd,?Rmm,?Rmm,iRhiSd")))]
   "TARGET_A16"
   "@
    
 (define_insn "iorhi3_16"
   [(set (match_operand:HI 0 "mra_operand" "=Sp,Sp,Rhi,RhiSd,RhiSd,??Rmm,??Rmm")
        (ior:HI (match_operand:HI 1 "mra_operand" "%0,0,0,0,0,0,0")
-               (match_operand:HI 2 "mrai_operand" "Imb,Imw,Ilw,iRhiSd,?Rmm,iRhiSd,?Rmm")))]
+               (match_operand:HI 2 "mrai_operand" "Ilb,Ilw,Ilw,iRhiSd,?Rmm,iRhiSd,?Rmm")))]
   "TARGET_A16"
   "@
    bset %B2,%0
 (define_insn "andhi3_24"
   [(set (match_operand:HI 0 "mra_operand" "=Sd,Sd,Rqi,Rqi,RhiSd,??Rmm,RhiSd,??Rmm")
        (and:HI (match_operand:HI 1 "mra_operand" "%0,0,0,0,0,0,0,0")
-               (match_operand:HI 2 "mrai_operand" "Imb,Imw,Imb,Imw,iRhiSd,?Rmm,?Rmm,iRhiSd")))]
+               (match_operand:HI 2 "mrai_operand" "ImB,Imw,ImB,Imw,iRhiSd,?Rmm,?Rmm,iRhiSd")))]
   "TARGET_A24"
   "@
    bclr\t%B2,%0
index 3fda87bcf0f5bd1c594c81e3f5a597e33dd242c6..d2260c86075e7df146b1106883c4b173778accf9 100644 (file)
@@ -949,6 +949,11 @@ m32c_const_ok_for_constraint_p (HOST_WIDE_INT value,
       int b = exact_log2 ((value ^ 0xff) & 0xff);
       return (b >= 0 && b <= 7);
     }
+  if (memcmp (str, "ImB", 3) == 0)
+    {
+      int b = exact_log2 ((value ^ 0xffff) & 0xffff);
+      return (b >= 0 && b <= 7);
+    }
   if (memcmp (str, "Ilw", 3) == 0)
     {
       int b = exact_log2 (value);
index 5d1b8428497393e66ffbf5e896fb68af6e829adc..1a2ff4b4fe8fed8c1cdee6de16bd444b38c07319 100644 (file)
 
 (define_predicate "m32c_1mask8_operand"
   (and (match_operand 0 "const_int_operand")
-       (match_test "m32c_const_ok_for_constraint_p(INTVAL(op), 'I', \"Imb\")")))
+       (match_test "m32c_const_ok_for_constraint_p(INTVAL(op), 'I', \"ImB\")")))
 
 (define_predicate "m32c_1mask16_operand"
   (and (match_operand 0 "const_int_operand")