Bug in new genrecog?
Richard Henderson
rth@cygnus.com
Wed Oct 6 12:29:00 GMT 1999
On Wed, Oct 06, 1999 at 12:00:10PM -0700, Mark Mitchell wrote:
> (define_expand "tablejump_internal3"
> [(parallel [(set (pc)
> (plus:SI (match_operand:SI 0 "register_operand" "d")
> (label_ref:SI (match_operand:SI 1 "" ""))))
> (use (label_ref:SI (match_dup 1)))])]
> ""
> "")
Try this.
r~
Index: config/mips/mips.md
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/mips/mips.md,v
retrieving revision 1.64
diff -c -p -d -r1.64 mips.md
*** mips.md 1999/10/04 09:26:57 1.64
--- mips.md 1999/10/06 19:27:10
*************** move\\t%0,%z4\\n\\
*** 6161,6200 ****
;; byte loads.
(define_insn ""
- [(set (match_operand:BLK 0 "memory_operand" "=d") ;; destination
- (match_operand:BLK 1 "memory_operand" "d")) ;; source
- (clobber (match_scratch:SI 4 "=&d")) ;; temp 1
- (clobber (match_scratch:SI 5 "=&d")) ;; temp 2
- (clobber (match_scratch:SI 6 "=&d")) ;; temp 3
- (clobber (match_scratch:SI 7 "=&d")) ;; temp 4
- (use (match_operand:SI 2 "small_int" "I")) ;; # bytes to move
- (use (match_operand:SI 3 "small_int" "I")) ;; alignment
- (use (const_int 0))] ;; normal block move
- "TARGET_MIPS16"
- "* return output_block_move (insn, operands, 4, BLOCK_MOVE_NORMAL);"
- [(set_attr "type" "multi")
- (set_attr "mode" "none")
- (set_attr "length" "80")])
-
- (define_insn ""
- [(set (match_operand:BLK 0 "memory_operand" "=d") ;; destination
- (match_operand:BLK 1 "memory_operand" "o")) ;; source
- (clobber (match_scratch:SI 4 "=&d")) ;; temp 1
- (clobber (match_scratch:SI 5 "=&d")) ;; temp 2
- (clobber (match_scratch:SI 6 "=&d")) ;; temp 3
- (clobber (match_scratch:SI 7 "=&d")) ;; temp 4
- (use (match_operand:SI 2 "small_int" "I")) ;; # bytes to move
- (use (match_operand:SI 3 "small_int" "I")) ;; alignment
- (use (const_int 0))] ;; normal block move
- "TARGET_MIPS16"
- "* return output_block_move (insn, operands, 4, BLOCK_MOVE_NORMAL);"
- [(set_attr "type" "multi")
- (set_attr "mode" "none")
- (set_attr "length" "80")])
-
- (define_insn ""
[(set (match_operand:BLK 0 "memory_operand" "=o") ;; destination
! (match_operand:BLK 1 "memory_operand" "d")) ;; source
(clobber (match_scratch:SI 4 "=&d")) ;; temp 1
(clobber (match_scratch:SI 5 "=&d")) ;; temp 2
(clobber (match_scratch:SI 6 "=&d")) ;; temp 3
--- 6161,6168 ----
;; byte loads.
(define_insn ""
[(set (match_operand:BLK 0 "memory_operand" "=o") ;; destination
! (match_operand:BLK 1 "memory_operand" "o")) ;; source
(clobber (match_scratch:SI 4 "=&d")) ;; temp 1
(clobber (match_scratch:SI 5 "=&d")) ;; temp 2
(clobber (match_scratch:SI 6 "=&d")) ;; temp 3
*************** move\\t%0,%z4\\n\\
*** 6268,6275 ****
(set_attr "length" "80")])
(define_insn ""
! [(set (match_operand:BLK 0 "memory_operand" "=d") ;; destination
! (match_operand:BLK 1 "memory_operand" "d")) ;; source
(clobber (match_scratch:SI 4 "=&d")) ;; temp 1
(clobber (match_scratch:SI 5 "=&d")) ;; temp 2
(clobber (match_scratch:SI 6 "=&d")) ;; temp 3
--- 6236,6243 ----
(set_attr "length" "80")])
(define_insn ""
! [(set (match_operand:BLK 0 "memory_operand" "=o") ;; destination
! (match_operand:BLK 1 "memory_operand" "o")) ;; source
(clobber (match_scratch:SI 4 "=&d")) ;; temp 1
(clobber (match_scratch:SI 5 "=&d")) ;; temp 2
(clobber (match_scratch:SI 6 "=&d")) ;; temp 3
*************** move\\t%0,%z4\\n\\
*** 6297,6318 ****
"* return output_block_move (insn, operands, 4, BLOCK_MOVE_LAST);"
[(set_attr "type" "store")
(set_attr "mode" "none")])
-
- (define_insn ""
- [(set (match_operand:BLK 0 "memory_operand" "=d") ;; destination
- (match_operand:BLK 1 "memory_operand" "d")) ;; source
- (clobber (match_scratch:SI 4 "=&d")) ;; temp 1
- (clobber (match_scratch:SI 5 "=&d")) ;; temp 2
- (clobber (match_scratch:SI 6 "=&d")) ;; temp 3
- (clobber (match_scratch:SI 7 "=&d")) ;; temp 4
- (use (match_operand:SI 2 "small_int" "I")) ;; # bytes to move
- (use (match_operand:SI 3 "small_int" "I")) ;; alignment
- (use (const_int 2))] ;; just last store of block move
- "TARGET_MIPS16"
- "* return output_block_move (insn, operands, 4, BLOCK_MOVE_LAST);"
- [(set_attr "type" "store")
- (set_attr "mode" "none")])
-
;;
;; ....................
--- 6265,6270 ----
*************** move\\t%0,%z4\\n\\
*** 9141,9147 ****
(define_expand "tablejump_internal3"
[(parallel [(set (pc)
(plus:SI (match_operand:SI 0 "register_operand" "d")
! (label_ref:SI (match_operand:SI 1 "" ""))))
(use (label_ref:SI (match_dup 1)))])]
""
"")
--- 9093,9099 ----
(define_expand "tablejump_internal3"
[(parallel [(set (pc)
(plus:SI (match_operand:SI 0 "register_operand" "d")
! (label_ref:SI (match_operand 1 "" ""))))
(use (label_ref:SI (match_dup 1)))])]
""
"")
*************** move\\t%0,%z4\\n\\
*** 9149,9155 ****
(define_expand "tablejump_mips161"
[(set (pc) (plus:SI (sign_extend:SI
(match_operand:HI 0 "register_operand" "d"))
! (label_ref:SI (match_operand:SI 1 "" ""))))]
"TARGET_MIPS16 && !(Pmode == DImode)"
"
{
--- 9101,9107 ----
(define_expand "tablejump_mips161"
[(set (pc) (plus:SI (sign_extend:SI
(match_operand:HI 0 "register_operand" "d"))
! (label_ref:SI (match_operand 1 "" ""))))]
"TARGET_MIPS16 && !(Pmode == DImode)"
"
{
*************** move\\t%0,%z4\\n\\
*** 9171,9177 ****
(define_expand "tablejump_mips162"
[(set (pc) (plus:DI (sign_extend:DI
(match_operand:HI 0 "register_operand" "d"))
! (label_ref:DI (match_operand:SI 1 "" ""))))]
"TARGET_MIPS16 && Pmode == DImode"
"
{
--- 9123,9129 ----
(define_expand "tablejump_mips162"
[(set (pc) (plus:DI (sign_extend:DI
(match_operand:HI 0 "register_operand" "d"))
! (label_ref:DI (match_operand 1 "" ""))))]
"TARGET_MIPS16 && Pmode == DImode"
"
{
*************** move\\t%0,%z4\\n\\
*** 9200,9206 ****
(define_insn ""
[(set (pc)
(plus:SI (match_operand:SI 0 "register_operand" "d")
! (label_ref:SI (match_operand:SI 1 "" ""))))
(use (label_ref:SI (match_dup 1)))]
"!(Pmode == DImode) && next_active_insn (insn) != 0
&& GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC
--- 9152,9158 ----
(define_insn ""
[(set (pc)
(plus:SI (match_operand:SI 0 "register_operand" "d")
! (label_ref:SI (match_operand 1 "" ""))))
(use (label_ref:SI (match_dup 1)))]
"!(Pmode == DImode) && next_active_insn (insn) != 0
&& GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC
*************** move\\t%0,%z4\\n\\
*** 9219,9225 ****
(define_expand "tablejump_internal4"
[(parallel [(set (pc)
(plus:DI (match_operand:DI 0 "se_register_operand" "d")
! (label_ref:DI (match_operand:SI 1 "" ""))))
(use (label_ref:DI (match_dup 1)))])]
""
"")
--- 9171,9177 ----
(define_expand "tablejump_internal4"
[(parallel [(set (pc)
(plus:DI (match_operand:DI 0 "se_register_operand" "d")
! (label_ref:DI (match_operand 1 "" ""))))
(use (label_ref:DI (match_dup 1)))])]
""
"")
*************** move\\t%0,%z4\\n\\
*** 9231,9237 ****
(define_insn ""
[(set (pc)
(plus:DI (match_operand:DI 0 "se_register_operand" "d")
! (label_ref:DI (match_operand:SI 1 "" ""))))
(use (label_ref:DI (match_dup 1)))]
"Pmode == DImode && next_active_insn (insn) != 0
&& GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC
--- 9183,9189 ----
(define_insn ""
[(set (pc)
(plus:DI (match_operand:DI 0 "se_register_operand" "d")
! (label_ref:DI (match_operand 1 "" ""))))
(use (label_ref:DI (match_dup 1)))]
"Pmode == DImode && next_active_insn (insn) != 0
&& GET_CODE (PATTERN (next_active_insn (insn))) == ADDR_DIFF_VEC
More information about the Gcc-bugs
mailing list