2001-07-18 Andrew Haley <aph@cambridge.redhat.com>
+ * config/sh/sh.md (ashlsi3_std splitter): Split only after reload.
+ (ashlsi3_n splitter): Likewise.
+ (lshrsi3_n splitter): Likewise.
+
+ (GOTaddr2picreg): Make const SImode.
+ (sym_label2reg): Likewise.
+ (symGOT2reg): Likewise.
+ (symGOTOFF2reg) Likewise.
+
+ (casesi_worker_0): Make unspec SImode.
+
+2001-07-18 Andrew Haley <aph@cambridge.redhat.com>
+
* config/sh/sh.c (barrier_align): Check that an operand really is
an insn before extracting its INSN_CODE.
shll%O2 %0
#"
"TARGET_SH3
+ && reload_completed
&& GET_CODE (operands[2]) == CONST_INT
&& ! CONST_OK_FOR_K (INTVAL (operands[2]))"
[(set (match_dup 3) (match_dup 2))
(ashift:SI (match_operand:SI 1 "arith_reg_operand" "")
(match_operand:SI 2 "const_int_operand" "n")))
(clobber (reg:SI T_REG))]
- ""
+ "reload_completed"
[(use (reg:SI R0_REG))]
"
{
(ashift:HI (match_operand:HI 1 "arith_reg_operand" "")
(match_operand:HI 2 "const_int_operand" "n")))
(clobber (reg:SI T_REG))]
- ""
+ "reload_completed"
[(use (reg:SI R0_REG))]
"
{
(lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "")
(match_operand:SI 2 "const_int_operand" "n")))
(clobber (reg:SI T_REG))]
- ""
+ "reload_completed"
[(use (reg:SI R0_REG))]
"
{
[(set (reg:SI R0_REG)
(unspec [(const (unspec [(match_dup 1)] UNSPEC_PIC))]
UNSPEC_MOVA))
- (set (match_dup 0) (const (unspec [(match_dup 1)] UNSPEC_PIC)))
+ (set (match_dup 0) (const:SI (unspec:SI [(match_dup 1)] UNSPEC_PIC)))
(set (match_dup 0) (plus:SI (match_dup 0) (reg:SI R0_REG)))]
"" "
{
(define_expand "sym_label2reg"
[(set (match_operand:SI 0 "" "")
(const (minus:SI
- (const (unspec [(match_operand:SI 1 "" "")] UNSPEC_PIC))
+ (const:SI (unspec:SI [(match_operand:SI 1 "" "")] UNSPEC_PIC))
(const (plus:SI
(match_operand:SI 2 "" "")
(const_int 2))))))]
(define_expand "symGOT2reg"
[(set (match_operand:SI 0 "" "")
- (const (unspec [(match_operand:SI 1 "" "")] UNSPEC_GOT)))
+ (const:SI (unspec:SI [(match_operand:SI 1 "" "")] UNSPEC_GOT)))
(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))
(set (match_dup 0) (mem:SI (match_dup 0)))]
""
(define_expand "symGOTOFF2reg"
[(set (match_operand:SI 0 "" "")
- (const (unspec [(match_operand:SI 1 "" "")] UNSPEC_GOTOFF)))
+ (const:SI (unspec:SI [(match_operand:SI 1 "" "")] UNSPEC_GOTOFF)))
(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))]
""
"
(define_insn "casesi_worker_0"
[(set (match_operand:SI 0 "register_operand" "=r,r")
- (unspec [(match_operand 1 "register_operand" "0,r")
+ (unspec:SI [(match_operand 1 "register_operand" "0,r")
(label_ref (match_operand 2 "" ""))] UNSPEC_CASESI))
(clobber (match_scratch:SI 3 "=X,1"))
(clobber (match_scratch:SI 4 "=&z,z"))]
(define_split
[(set (match_operand:SI 0 "register_operand" "")
- (unspec [(match_operand 1 "register_operand" "")
+ (unspec:SI [(match_operand 1 "register_operand" "")
(label_ref (match_operand 2 "" ""))] UNSPEC_CASESI))
(clobber (match_scratch:SI 3 ""))
(clobber (match_scratch:SI 4 ""))]
"TARGET_SH2 && reload_completed"
[(set (reg:SI R0_REG) (unspec [(label_ref (match_dup 2))] UNSPEC_MOVA))
(parallel [(set (match_dup 0)
- (unspec [(reg:SI R0_REG) (match_dup 1)
+ (unspec:SI [(reg:SI R0_REG) (match_dup 1)
(label_ref (match_dup 2))] UNSPEC_CASESI))
(clobber (match_dup 3))])]
"LABEL_NUSES (operands[2])++;")