+2002-02-23 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.md (load_toc_aix_{si,di}): Use
+ gpc_reg_operand constraint.
+
+2002-02-23 Alan Modra <amodra@bigpond.net.au>
+
+ * config/rs6000/rs6000.c (num_insns_constant): Fix formatting.
+ Simplify comparison of `low'.
+ (add_operand): Fix formatting.
+ (non_add_cint_operand): Use CONST_OK_FOR_LETTER_P.
+ (rs6000_stack_info): Remove redundant test setting push_p.
+ (output_toc): Fix formatting.
+ * config/rs6000/rs6000.md (boolsi3, boolcsi3 splitters): Use
+ cc_reg_not_cr0_operand constraint.
+ (booldi3, boolcdi3 splitters): Same.
+
2002-02-23 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/altivec.h: Add extra level of parentheses on casts.
REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_SINGLE (rv, l);
- return num_insns_constant_wide ((HOST_WIDE_INT)l);
+ return num_insns_constant_wide ((HOST_WIDE_INT) l);
}
else if (GET_CODE (op) == CONST_DOUBLE)
else
{
- if (high == 0 && (low & 0x80000000) == 0)
+ if (high == 0 && low >= 0)
return num_insns_constant_wide (low);
- else if (high == -1 && (low & 0x80000000) != 0)
+ else if (high == -1 && low < 0)
return num_insns_constant_wide (low);
else if (mask64_operand (op, mode))
enum machine_mode mode;
{
if (GET_CODE (op) == CONST_INT)
- return (CONST_OK_FOR_LETTER_P (INTVAL(op), 'I')
- || CONST_OK_FOR_LETTER_P (INTVAL(op), 'L'));
+ return (CONST_OK_FOR_LETTER_P (INTVAL (op), 'I')
+ || CONST_OK_FOR_LETTER_P (INTVAL (op), 'L'));
return gpc_reg_operand (op, mode);
}
enum machine_mode mode ATTRIBUTE_UNUSED;
{
return (GET_CODE (op) == CONST_INT
- && (unsigned HOST_WIDE_INT) (INTVAL (op) + 0x8000) >= 0x10000
- && ! CONST_OK_FOR_LETTER_P (INTVAL (op), 'L'));
+ && !CONST_OK_FOR_LETTER_P (INTVAL (op), 'I')
+ && !CONST_OK_FOR_LETTER_P (INTVAL (op), 'L'));
}
/* Return 1 if the operand is a non-special register or a constant that
info_ptr->push_p = 1;
else if (abi == ABI_V4)
- info_ptr->push_p = (total_raw_size > info_ptr->fixed_size
- || info_ptr->calls_p);
+ info_ptr->push_p = total_raw_size > info_ptr->fixed_size;
else
info_ptr->push_p = (frame_pointer_needed
if (TARGET_MINIMAL_TOC)
fputs (DOUBLE_INT_ASM_OP, file);
else
- fprintf (file, "\t.tc ID_%lx_%lx[TC],", (long)high, (long)low);
+ fprintf (file, "\t.tc ID_%lx_%lx[TC],", (long) high, (long) low);
fprintf (file, "0x%lx%08lx\n", (long) high, (long) low);
return;
}
fputs ("\t.long ", file);
else
fprintf (file, "\t.tc ID_%lx_%lx[TC],",
- (long)high, (long)low);
+ (long) high, (long) low);
fprintf (file, "0x%lx,0x%lx\n", (long) high, (long) low);
}
else
(set_attr "length" "4,8")])
(define_split
- [(set (match_operand:CC 3 "cc_reg_operand" "")
+ [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(compare:CC (match_operator:SI 4 "boolean_operator"
[(match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "gpc_reg_operand" "")])
(set_attr "length" "4,8")])
(define_split
- [(set (match_operand:CC 3 "cc_reg_operand" "")
+ [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(compare:CC (match_operator:SI 4 "boolean_operator"
[(not:SI (match_operand:SI 1 "gpc_reg_operand" ""))
(match_operand:SI 2 "gpc_reg_operand" "")])
(set_attr "length" "4,8")])
(define_split
- [(set (match_operand:CC 3 "cc_reg_operand" "")
+ [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(compare:CC (match_operator:SI 4 "boolean_operator"
[(not:SI (match_operand:SI 1 "gpc_reg_operand" ""))
(not:SI (match_operand:SI 2 "gpc_reg_operand" ""))])
(set_attr "length" "4,8")])
(define_split
- [(set (match_operand:CC 3 "cc_reg_operand" "")
+ [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(compare:CC (match_operator:DI 4 "boolean_operator"
[(match_operand:DI 1 "gpc_reg_operand" "")
(match_operand:DI 2 "gpc_reg_operand" "")])
(set_attr "length" "4,8")])
(define_split
- [(set (match_operand:CC 3 "cc_reg_operand" "")
+ [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(compare:CC (match_operator:DI 4 "boolean_operator"
[(not:DI (match_operand:DI 1 "gpc_reg_operand" ""))
(match_operand:DI 2 "gpc_reg_operand" "")])
(set_attr "length" "4,8")])
(define_split
- [(set (match_operand:CC 3 "cc_reg_operand" "")
+ [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(compare:CC (match_operator:DI 4 "boolean_operator"
[(not:DI (match_operand:DI 1 "gpc_reg_operand" ""))
(not:DI (match_operand:DI 2 "gpc_reg_operand" ""))])
;; Code to initialize the TOC register...
(define_insn "load_toc_aix_si"
- [(parallel [(set (match_operand:SI 0 "register_operand" "=r")
+ [(parallel [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(unspec:SI [(const_int 0)] 7))
(use (reg:SI 2))])]
"DEFAULT_ABI == ABI_AIX && TARGET_32BIT"
[(set_attr "type" "load")])
(define_insn "load_toc_aix_di"
- [(parallel [(set (match_operand:DI 0 "register_operand" "=r")
+ [(parallel [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
(unspec:DI [(const_int 0)] 7))
(use (reg:DI 2))])]
"DEFAULT_ABI == ABI_AIX && TARGET_64BIT"