OSDN Git Service

* config/arm/arm.md (*zeroextractqi_compare0_scratch): Re-add load
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Feb 1999 11:00:47 +0000 (11:00 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Feb 1999 11:00:47 +0000 (11:00 +0000)
instruction killed in previous change.  Simplify mask generation.
(*zeroextractsi_compare0_scratch): Simpify mask generation.

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

gcc/ChangeLog
gcc/config/arm/arm.md

index 98e194f..0b6bbdf 100644 (file)
@@ -1,3 +1,9 @@
+Tue Feb 16 10:53:51 1999  Richard Earnshaw (rearnsha@arm.com)
+
+       * config/arm/arm.md (*zeroextractqi_compare0_scratch): Re-add load
+       instruction killed in previous change.  Simplify mask generation.
+       (*zeroextractsi_compare0_scratch): Simpify mask generation.
+
 Tue Feb 16 09:52:26 1999  Nick Clifton  <nickc@cygnus.com>
 
        * config/arm/arm.md (zeroextractqi_compare0_scratch): Ensure that
index b9241c8..cf4212b 100644 (file)
    && INTVAL (operands[1]) + (INTVAL (operands[2]) & 1) <= 8
    && INTVAL (operands[1]) + INTVAL (operands[2]) <= 32"
   "*
-{
-  unsigned int mask = 0;
-  int cnt = INTVAL (operands[1]);
-  
-  while (cnt--)
-    mask = (mask << 1) | 1;
-  operands[1] = GEN_INT (mask << INTVAL (operands[2]));
+  operands[1] = GEN_INT (((1 << INTVAL (operands[1])) - 1)
+                        << INTVAL (operands[2]));
   output_asm_insn (\"tst%?\\t%0, %1\", operands);
   return \"\";
-}
 "
 [(set_attr "conds" "set")])
 
                          (match_operand 2 "const_int_operand" "n"))
                         (const_int 0)))
    (clobber (match_scratch:QI 3 "=r"))]
-  "INTVAL (operands[2]) >= 0 && INTVAL (operands[1]) > 0 &&
-  ((INTVAL (operands[1]) + INTVAL (operands[2])) <= 8)"
+  "INTVAL (operands[2]) >= 0 && INTVAL (operands[1]) > 0
+   && (INTVAL (operands[2]) + INTVAL (operands[1]) <= 8)"
   "*
-{
-  unsigned int mask = 0;
-  int cnt = INTVAL (operands[1]);
-  
-  while (cnt--)
-    mask = (mask << 1) | 1;
-  operands[1] = GEN_INT (mask << INTVAL (operands[2]));
+  operands[1] = GEN_INT (((1 << INTVAL (operands[1])) - 1)
+                        << INTVAL (operands[2]));
+  output_asm_insn (\"ldr%?b\\t%3, %0\", operands);
   output_asm_insn (\"tst%?\\t%3, %1\", operands);
   return \"\";
-}
 "
 [(set_attr "conds" "set")
  (set_attr "length" "8")])