sh.md (ashlsi3_std splitter): Split only after reload.

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.

From-SVN: r44304
This commit is contained in:
Andrew Haley 2001-07-24 15:52:26 +00:00 committed by Andrew Haley
parent 2b9d17c73c
commit 615cd49b9a
2 changed files with 24 additions and 10 deletions

View File

@ -1,3 +1,16 @@
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

View File

@ -1654,6 +1654,7 @@
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))
@ -1696,7 +1697,7 @@
(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))]
"
{
@ -1744,7 +1745,7 @@
(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))]
"
{
@ -1904,7 +1905,7 @@
(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))]
"
{
@ -3747,7 +3748,7 @@
[(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)))]
"" "
{
@ -3778,7 +3779,7 @@
(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))))))]
@ -3786,7 +3787,7 @@
(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)))]
""
@ -3797,7 +3798,7 @@
(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)))]
""
"
@ -3886,7 +3887,7 @@
(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"))]
@ -3910,14 +3911,14 @@
(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])++;")