Backport changes 45216, 61098, 64549, 79523.
This commit is contained in:
parent
2ede486e33
commit
f52c9355e6
|
@ -1,3 +1,19 @@
|
|||
Sun Oct 16 20:02:26 CEST 2016 Krystian Baclawski
|
||||
|
||||
2004-03-16 Richard Zidlicky <rz@linux-m68k.org>
|
||||
* config/m68k/m68k.md: Fix constraints for bitfield instructions.
|
||||
|
||||
Thu Jan 9 12:00:36 CET 2003 Jan Hubicka <jh@suse.cz>
|
||||
* m68k.md (umulsidi, mulsidi expanders): Use register operand.
|
||||
|
||||
2002-04-02 Richard Henderson <rth@redhat.com>
|
||||
* config/m68k/m68k.md (dbcc peepholes): Match four forms of dbra.
|
||||
|
||||
2001-08-27 Roman Zippel <zippel@linux-m68k.org>
|
||||
* config/m68k/m68k.md (pushqi1): New.
|
||||
(adddi_dilshr32, adddi_dishl32): Only data register can be
|
||||
source for mem destination.
|
||||
|
||||
Sun Oct 16 18:17:25 CEST 2016 Krystian Baclawski
|
||||
|
||||
2001-06-09 Peter Jakubek <pjak@snafu.de>
|
||||
|
|
|
@ -1057,6 +1057,13 @@
|
|||
"TARGET_5200"
|
||||
"* return output_move_strictqi (operands);")
|
||||
|
||||
(define_expand "pushqi1"
|
||||
[(set (reg:SI 15) (plus:SI (reg:SI 15) (const_int -2)))
|
||||
(set (mem:QI (plus:SI (reg:SI 15) (const_int 1)))
|
||||
(match_operand:QI 0 "general_operand" ""))]
|
||||
"!TARGET_5200"
|
||||
"")
|
||||
|
||||
(define_expand "movsf"
|
||||
[(set (match_operand:SF 0 "general_operand" "")
|
||||
(match_operand:SF 1 "general_operand" ""))]
|
||||
|
@ -2116,7 +2123,7 @@
|
|||
;; (plus:DI (match_operand:DI 2 "general_operand" "%0")
|
||||
;; (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro")
|
||||
;; (const_int 32))))]
|
||||
(plus:DI (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro,r")
|
||||
(plus:DI (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro,d")
|
||||
(const_int 32))
|
||||
(match_operand:DI 2 "general_operand" "0,0")))]
|
||||
""
|
||||
|
@ -2135,7 +2142,7 @@
|
|||
;; (plus:DI (match_operand:DI 2 "general_operand" "%0")
|
||||
;; (ashift:DI (match_operand:DI 1 "general_operand" "ro")
|
||||
;; (const_int 32))))]
|
||||
(plus:DI (ashift:DI (match_operand:DI 1 "general_operand" "ro,r")
|
||||
(plus:DI (ashift:DI (match_operand:DI 1 "general_operand" "ro,d")
|
||||
(const_int 32))
|
||||
(match_operand:DI 2 "general_operand" "0,0")))]
|
||||
""
|
||||
|
@ -3062,7 +3069,7 @@
|
|||
[(parallel
|
||||
[(set (subreg:SI (match_operand:DI 0 "register_operand" "") 1)
|
||||
(mult:SI (match_operand:SI 1 "register_operand" "")
|
||||
(match_operand:SI 2 "nonimmediate_operand" "")))
|
||||
(match_operand:SI 2 "register_operand" "")))
|
||||
(set (subreg:SI (match_dup 0) 0)
|
||||
(truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (match_dup 1))
|
||||
(zero_extend:DI (match_dup 2)))
|
||||
|
@ -3101,7 +3108,7 @@
|
|||
[(parallel
|
||||
[(set (subreg:SI (match_operand:DI 0 "register_operand" "") 1)
|
||||
(mult:SI (match_operand:SI 1 "register_operand" "")
|
||||
(match_operand:SI 2 "nonimmediate_operand" "")))
|
||||
(match_operand:SI 2 "register_operand" "")))
|
||||
(set (subreg:SI (match_dup 0) 0)
|
||||
(truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
|
||||
(sign_extend:DI (match_dup 2)))
|
||||
|
@ -5427,8 +5434,8 @@
|
|||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "general_operand" "=d")
|
||||
(sign_extract:SI (match_operand:QI 1 "memory_operand" "o")
|
||||
(match_operand:SI 2 "general_operand" "di")
|
||||
(match_operand:SI 3 "general_operand" "di")))]
|
||||
(match_operand:SI 2 "general_operand" "dn")
|
||||
(match_operand:SI 3 "general_operand" "dn")))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"bfexts %1{%b3:%b2},%0")
|
||||
|
||||
|
@ -5443,8 +5450,8 @@
|
|||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "general_operand" "=d,d")
|
||||
(zero_extract:SI (match_operand:QI 1 "memory_operand" "o,d")
|
||||
(match_operand:SI 2 "general_operand" "di,di")
|
||||
(match_operand:SI 3 "general_operand" "di,di")))]
|
||||
(match_operand:SI 2 "general_operand" "dn,dn")
|
||||
(match_operand:SI 3 "general_operand" "dn,dn")))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"*
|
||||
{
|
||||
|
@ -5462,8 +5469,8 @@
|
|||
|
||||
(define_insn ""
|
||||
[(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o")
|
||||
(match_operand:SI 1 "general_operand" "di")
|
||||
(match_operand:SI 2 "general_operand" "di"))
|
||||
(match_operand:SI 1 "general_operand" "dn")
|
||||
(match_operand:SI 2 "general_operand" "dn"))
|
||||
(xor:SI (zero_extract:SI (match_dup 0) (match_dup 1) (match_dup 2))
|
||||
(match_operand 3 "const_int_operand" "n")))]
|
||||
"TARGET_68020 && TARGET_BITFIELD
|
||||
|
@ -5478,8 +5485,8 @@
|
|||
|
||||
(define_insn ""
|
||||
[(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o")
|
||||
(match_operand:SI 1 "general_operand" "di")
|
||||
(match_operand:SI 2 "general_operand" "di"))
|
||||
(match_operand:SI 1 "general_operand" "dn")
|
||||
(match_operand:SI 2 "general_operand" "dn"))
|
||||
(const_int 0))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"*
|
||||
|
@ -5490,8 +5497,8 @@
|
|||
|
||||
(define_insn ""
|
||||
[(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o")
|
||||
(match_operand:SI 1 "general_operand" "di")
|
||||
(match_operand:SI 2 "general_operand" "di"))
|
||||
(match_operand:SI 1 "general_operand" "dn")
|
||||
(match_operand:SI 2 "general_operand" "dn"))
|
||||
(const_int -1))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"*
|
||||
|
@ -5510,8 +5517,8 @@
|
|||
|
||||
(define_insn ""
|
||||
[(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o")
|
||||
(match_operand:SI 1 "general_operand" "di")
|
||||
(match_operand:SI 2 "general_operand" "di"))
|
||||
(match_operand:SI 1 "general_operand" "dn")
|
||||
(match_operand:SI 2 "general_operand" "dn"))
|
||||
(match_operand:SI 3 "register_operand" "d"))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"bfins %3,%0{%b2:%b1}")
|
||||
|
@ -5522,16 +5529,16 @@
|
|||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "general_operand" "=d")
|
||||
(sign_extract:SI (match_operand:SI 1 "register_operand" "d")
|
||||
(match_operand:SI 2 "general_operand" "di")
|
||||
(match_operand:SI 3 "general_operand" "di")))]
|
||||
(match_operand:SI 2 "general_operand" "dn")
|
||||
(match_operand:SI 3 "general_operand" "dn")))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"bfexts %1{%b3:%b2},%0")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "general_operand" "=d")
|
||||
(zero_extract:SI (match_operand:SI 1 "register_operand" "d")
|
||||
(match_operand:SI 2 "general_operand" "di")
|
||||
(match_operand:SI 3 "general_operand" "di")))]
|
||||
(match_operand:SI 2 "general_operand" "dn")
|
||||
(match_operand:SI 3 "general_operand" "dn")))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"*
|
||||
{
|
||||
|
@ -5549,8 +5556,8 @@
|
|||
|
||||
(define_insn ""
|
||||
[(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+d")
|
||||
(match_operand:SI 1 "general_operand" "di")
|
||||
(match_operand:SI 2 "general_operand" "di"))
|
||||
(match_operand:SI 1 "general_operand" "dn")
|
||||
(match_operand:SI 2 "general_operand" "dn"))
|
||||
(const_int 0))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"*
|
||||
|
@ -5561,8 +5568,8 @@
|
|||
|
||||
(define_insn ""
|
||||
[(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+d")
|
||||
(match_operand:SI 1 "general_operand" "di")
|
||||
(match_operand:SI 2 "general_operand" "di"))
|
||||
(match_operand:SI 1 "general_operand" "dn")
|
||||
(match_operand:SI 2 "general_operand" "dn"))
|
||||
(const_int -1))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"*
|
||||
|
@ -5573,8 +5580,8 @@
|
|||
|
||||
(define_insn ""
|
||||
[(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+d")
|
||||
(match_operand:SI 1 "general_operand" "di")
|
||||
(match_operand:SI 2 "general_operand" "di"))
|
||||
(match_operand:SI 1 "general_operand" "dn")
|
||||
(match_operand:SI 2 "general_operand" "dn"))
|
||||
(match_operand:SI 3 "register_operand" "d"))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"*
|
||||
|
@ -5597,7 +5604,7 @@
|
|||
[(set (cc0)
|
||||
(zero_extract:SI (match_operand:QI 0 "memory_operand" "o")
|
||||
(match_operand:SI 1 "const_int_operand" "n")
|
||||
(match_operand:SI 2 "general_operand" "di")))]
|
||||
(match_operand:SI 2 "general_operand" "dn")))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"*
|
||||
{
|
||||
|
@ -5624,7 +5631,7 @@
|
|||
[(set (cc0)
|
||||
(zero_extract:SI (match_operand:SI 0 "register_operand" "d")
|
||||
(match_operand:SI 1 "const_int_operand" "n")
|
||||
(match_operand:SI 2 "general_operand" "di")))]
|
||||
(match_operand:SI 2 "general_operand" "dn")))]
|
||||
"TARGET_68020 && TARGET_BITFIELD"
|
||||
"*
|
||||
{
|
||||
|
@ -7207,6 +7214,7 @@
|
|||
;;
|
||||
;; Which moves the jCC condition outside the inner loop for free.
|
||||
;;
|
||||
|
||||
(define_peephole
|
||||
[(set (pc) (if_then_else (match_operator 3 "valid_dbcc_comparison_p"
|
||||
[(cc0) (const_int 0)])
|
||||
|
@ -7215,7 +7223,53 @@
|
|||
(parallel
|
||||
[(set (pc)
|
||||
(if_then_else
|
||||
(ge (plus:HI (match_operand:HI 0 "register_operand" "+d")
|
||||
(ne (match_operand:HI 0 "register_operand" "")
|
||||
(const_int 0))
|
||||
(label_ref (match_operand 1 "" ""))
|
||||
(pc)))
|
||||
(set (match_dup 0)
|
||||
(plus:HI (match_dup 0)
|
||||
(const_int -1)))])]
|
||||
"!TARGET_5200 && DATA_REG_P (operands[0]) && ! flags_in_68881 ()"
|
||||
"*
|
||||
{
|
||||
CC_STATUS_INIT;
|
||||
output_dbcc_and_branch (operands);
|
||||
return \"\";
|
||||
}")
|
||||
|
||||
(define_peephole
|
||||
[(set (pc) (if_then_else (match_operator 3 "valid_dbcc_comparison_p"
|
||||
[(cc0) (const_int 0)])
|
||||
(label_ref (match_operand 2 "" ""))
|
||||
(pc)))
|
||||
(parallel
|
||||
[(set (pc)
|
||||
(if_then_else
|
||||
(ne (match_operand:SI 0 "register_operand" "")
|
||||
(const_int 0))
|
||||
(label_ref (match_operand 1 "" ""))
|
||||
(pc)))
|
||||
(set (match_dup 0)
|
||||
(plus:SI (match_dup 0)
|
||||
(const_int -1)))])]
|
||||
"!TARGET_5200 && DATA_REG_P (operands[0]) && ! flags_in_68881 ()"
|
||||
"*
|
||||
{
|
||||
CC_STATUS_INIT;
|
||||
output_dbcc_and_branch (operands);
|
||||
return \"\";
|
||||
}")
|
||||
|
||||
(define_peephole
|
||||
[(set (pc) (if_then_else (match_operator 3 "valid_dbcc_comparison_p"
|
||||
[(cc0) (const_int 0)])
|
||||
(label_ref (match_operand 2 "" ""))
|
||||
(pc)))
|
||||
(parallel
|
||||
[(set (pc)
|
||||
(if_then_else
|
||||
(ge (plus:HI (match_operand:HI 0 "register_operand" "")
|
||||
(const_int -1))
|
||||
(const_int 0))
|
||||
(label_ref (match_operand 1 "" ""))
|
||||
|
@ -7239,7 +7293,7 @@
|
|||
(parallel
|
||||
[(set (pc)
|
||||
(if_then_else
|
||||
(ge (plus:SI (match_operand:SI 0 "register_operand" "+d")
|
||||
(ge (plus:SI (match_operand:SI 0 "register_operand" "")
|
||||
(const_int -1))
|
||||
(const_int 0))
|
||||
(label_ref (match_operand 1 "" ""))
|
||||
|
|
Loading…
Reference in New Issue