* config/h8300/h8300-protos.h: Remove prototypes for
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 May 2002 01:35:12 +0000 (01:35 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 May 2002 01:35:12 +0000 (01:35 +0000)
ok_for_bclr and small_power_of_two.
* config/h8300/h8300.c (small_power_of_two): Remove.
(ok_for_blcr): Likewise.
(fix_bit_operand): Make WHAT deal with an integer instead of a
constraint character.
* config/h8300/h8300.h (CONST_OK_FOR_O): Remove.
(CONST_OK_FOR_P): Likewise.
(CONST_OK_FOR_LETTER_P): Do not call CONST_OK_FOR_O or
CONST_OK_FOR_P any more.
* config/h8300/h8300.md (andqi3): Adjust to the new prototype
of fix_bit_operand.
(iorqi3): Likewise.
(xorqi3): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54037 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/h8300/h8300-protos.h
gcc/config/h8300/h8300.c
gcc/config/h8300/h8300.h
gcc/config/h8300/h8300.md

index d6895ef..19bcad2 100644 (file)
@@ -1,3 +1,20 @@
+2002-05-29  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * config/h8300/h8300-protos.h: Remove prototypes for
+       ok_for_bclr and small_power_of_two.
+       * config/h8300/h8300.c (small_power_of_two): Remove.
+       (ok_for_blcr): Likewise.
+       (fix_bit_operand): Make WHAT deal with an integer instead of a
+       constraint character.
+       * config/h8300/h8300.h (CONST_OK_FOR_O): Remove.
+       (CONST_OK_FOR_P): Likewise.
+       (CONST_OK_FOR_LETTER_P): Do not call CONST_OK_FOR_O or
+       CONST_OK_FOR_P any more.
+       * config/h8300/h8300.md (andqi3): Adjust to the new prototype
+       of fix_bit_operand.
+       (iorqi3): Likewise.
+       (xorqi3): Likewise.
+
 2002-05-29  Jason Thorpe  <thorpej@wasabisystems.com>
 
        * config/mips/netbsd.h (TARGET_OS_CPP_BUILTINS): Define.
index d02c082..aa337d1 100644 (file)
@@ -74,8 +74,6 @@ extern int h8300_tiny_data_p PARAMS ((tree));
 extern void h8300_init_once PARAMS ((void));
 extern void asm_file_start PARAMS ((FILE *));
 extern void asm_file_end PARAMS ((FILE *));
-extern int ok_for_bclr PARAMS ((HOST_WIDE_INT));
-extern int small_power_of_two PARAMS ((HOST_WIDE_INT));
 extern int initial_offset PARAMS ((int, int));
 
 #ifdef GCC_C_PRAGMA_H
index 0258c68..59e3161 100644 (file)
@@ -521,28 +521,6 @@ asm_file_end (file)
   fprintf (file, "\t.end\n");
 }
 \f
-/* Return true if VALUE is a valid constant for constraint 'P'.
-   IE: VALUE is a power of two <= 2**15.  */
-
-int
-small_power_of_two (value)
-     HOST_WIDE_INT value;
-{
-  int power = exact_log2 (value);
-  return power >= 0 && power <= 15;
-}
-
-/* Return true if VALUE is a valid constant for constraint 'O', which
-   means that the constant would be ok to use as a bit for a bclr
-   instruction.  */
-
-int
-ok_for_bclr (value)
-     HOST_WIDE_INT value;
-{
-  return small_power_of_two ((~value) & 0xff);
-}
-
 /* Return true if OP is a valid source operand for an integer move
    instruction.  */
 
@@ -3245,32 +3223,30 @@ fix_bit_operand (operands, what, type)
      only 'U' memory afterwards, so if this is a MEM operand, we must force
      it to be valid for 'U' by reloading the address.  */
 
-  if (GET_CODE (operands[2]) == CONST_INT)
+  if ((what == 0 && single_zero_operand (operands[2], QImode))
+      || (what == 1 && single_one_operand (operands[2], QImode)))
     {
-      if (CONST_OK_FOR_LETTER_P (INTVAL (operands[2]), what))
+      /* OK to have a memory dest.  */
+      if (GET_CODE (operands[0]) == MEM
+         && !EXTRA_CONSTRAINT (operands[0], 'U'))
        {
-         /* Ok to have a memory dest.  */
-         if (GET_CODE (operands[0]) == MEM
-             && !EXTRA_CONSTRAINT (operands[0], 'U'))
-           {
-             rtx mem = gen_rtx_MEM (GET_MODE (operands[0]),
-                                    copy_to_mode_reg (Pmode,
-                                                      XEXP (operands[0], 0)));
-             MEM_COPY_ATTRIBUTES (mem, operands[0]);
-             operands[0] = mem;
-           }
+         rtx mem = gen_rtx_MEM (GET_MODE (operands[0]),
+                                copy_to_mode_reg (Pmode,
+                                                  XEXP (operands[0], 0)));
+         MEM_COPY_ATTRIBUTES (mem, operands[0]);
+         operands[0] = mem;
+       }
 
-         if (GET_CODE (operands[1]) == MEM
-             && !EXTRA_CONSTRAINT (operands[1], 'U'))
-           {
-             rtx mem = gen_rtx_MEM (GET_MODE (operands[1]),
-                                    copy_to_mode_reg (Pmode,
-                                                      XEXP (operands[1], 0)));
-             MEM_COPY_ATTRIBUTES (mem, operands[0]);
-             operands[1] = mem;
-           }
-         return 0;
+      if (GET_CODE (operands[1]) == MEM
+         && !EXTRA_CONSTRAINT (operands[1], 'U'))
+       {
+         rtx mem = gen_rtx_MEM (GET_MODE (operands[1]),
+                                copy_to_mode_reg (Pmode,
+                                                  XEXP (operands[1], 0)));
+         MEM_COPY_ATTRIBUTES (mem, operands[0]);
+         operands[1] = mem;
        }
+      return 0;
     }
 
   /* Dest and src op must be register.  */
index 7e78fc3..8109aee 100644 (file)
@@ -429,8 +429,6 @@ enum reg_class {
   (TARGET_H8300H || TARGET_H8300S                      \
    ? (VALUE) == -1 || (VALUE) == -2 || (VALUE) == -4   \
    : (VALUE) == -1 || (VALUE) == -2)
-#define CONST_OK_FOR_O(VALUE) (ok_for_bclr (VALUE))
-#define CONST_OK_FOR_P(VALUE) (small_power_of_two (VALUE))
 
 #define CONST_OK_FOR_LETTER_P(VALUE, C)                \
   ((C) == 'I' ? CONST_OK_FOR_I (VALUE) :       \
@@ -439,8 +437,6 @@ enum reg_class {
    (C) == 'L' ? CONST_OK_FOR_L (VALUE) :       \
    (C) == 'M' ? CONST_OK_FOR_M (VALUE) :       \
    (C) == 'N' ? CONST_OK_FOR_N (VALUE) :       \
-   (C) == 'O' ? CONST_OK_FOR_O (VALUE) :       \
-   (C) == 'P' ? CONST_OK_FOR_P (VALUE) :       \
    0)
 
 /* Similar, but for floating constants, and defining letters G and H.
index 6ae6d6f..b789a3b 100644 (file)
   ""
   "
 {
-  if (fix_bit_operand (operands, 'O', AND))
+  if (fix_bit_operand (operands, 0, AND))
     DONE;
 }")
 
   ""
   "
 {
-  if (fix_bit_operand (operands, 'P', IOR))
+  if (fix_bit_operand (operands, 1, IOR))
     DONE;
 }")
 
   ""
   "
 {
-  if (fix_bit_operand (operands, 'O', XOR))
+  if (fix_bit_operand (operands, 1, XOR))
     DONE;
 }")