+2007-05-23 Chen Liqin <liqin@sunnorth.com.cn>
+
+ PR target/30987
+ * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): remove.
+ * config/score/predicate.md (const_pow2, const_npow2): remove.
+ * config/score/score.h (ASM_OUTPUT_EXTERNAL): add ASM_OUTPUT_EXTERNAL undef.
+ PR target/30474
+ * config/score/score.c (score_print_operand): makes sure that only lower
+ bits are used.
+
2007-05-22 Ian Lance Taylor <iant@google.com>
* tree-vrp.c (avoid_overflow_infinity): New static function,
[(set_attr "type" "arith")
(set_attr "mode" "SI")])
-(define_insn "bitclr_c"
- [(set (match_operand:SI 0 "register_operand" "=e,d")
- (and:SI (match_operand:SI 1 "register_operand" "0,d")
- (match_operand:SI 2 "const_npow2")))
- (clobber (reg:CC CC_REGNUM))]
- ""
- "@
- bitclr! %0, %F2
- bitclr.c %0, %1, %F2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "bitset_c"
- [(set (match_operand:SI 0 "register_operand" "=e,d")
- (ior:SI (match_operand:SI 1 "register_operand" "0,d")
- (match_operand:SI 2 "const_pow2")))
- (clobber (reg:CC CC_REGNUM))]
- ""
- "@
- bitset! %0, %E2
- bitset.c %0, %1, %E2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "bittgl_c"
- [(set (match_operand:SI 0 "register_operand" "=e,d")
- (xor:SI (match_operand:SI 1 "register_operand" "0,d")
- (match_operand:SI 2 "const_pow2")))
- (clobber (reg:CC CC_REGNUM))]
- ""
- "@
- bittgl! %0, %E2
- bittgl.c %0, %1, %E2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
return IMM_IN_RANGE (INTVAL (op), 15, 1);
})
-(define_predicate "const_pow2"
- (match_code "const_int")
-{
- return IMM_IS_POW_OF_2 ((unsigned HOST_WIDE_INT) INTVAL (op), 0, 31);
-})
-
-(define_predicate "const_npow2"
- (match_code "const_int")
-{
- return IMM_IS_POW_OF_2 (~(unsigned HOST_WIDE_INT) INTVAL (op), 0, 31);
-})
{
gcc_assert (code == CONST_INT);
fprintf (file, HOST_WIDE_INT_PRINT_HEX,
- (unsigned HOST_WIDE_INT) INTVAL (op) >> 16);
+ (INTVAL (op) >> 16) & 0xffff);
}
else if (c == 'D')
{
{
rtx temp = gen_lowpart (SImode, op);
gcc_assert (GET_MODE (op) == SFmode);
- fprintf (file, HOST_WIDE_INT_PRINT_HEX, INTVAL (temp));
+ fprintf (file, HOST_WIDE_INT_PRINT_HEX, INTVAL (temp) & 0xffffffff);
}
else
output_addr_const (file, op);
output anything and let undefined symbol become external. However
the assembler uses length information on externals to allocate in
data/sdata bss/sbss, thereby saving exec time. */
+#undef ASM_OUTPUT_EXTERNAL
#define ASM_OUTPUT_EXTERNAL(STREAM, DECL, NAME) \
score_output_external (STREAM, DECL, NAME)