Commit f2d45bd7 by Richard Stallman

*** empty log message ***

From-SVN: r483
parent 2aa7ec37
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
;; * Fix true frame pointer omission. ;; * Fix true frame pointer omission.
;; * Make the jump tables contain branches, not addresses! This would ;; * Make the jump tables contain branches, not addresses! This would
;; save us one instruction. ;; save us one instruction.
;; * Could the compilcated scheme for compares be simplyfied, if we had ;; * Could the complicated scheme for compares be simplified, if we had
;; no named cmpqi or cmphi patterns, and instead anonymous patterns for ;; no named cmpqi or cmphi patterns, and instead anonymous patterns for
;; the less-than-word compare cases pyr can handle??? ;; the less-than-word compare cases pyr can handle???
;; * The jump insn seems to accept more than just IR addressing. Would ;; * The jump insn seems to accept more than just IR addressing. Would
...@@ -84,6 +84,7 @@ ...@@ -84,6 +84,7 @@
rtx br_insn = NEXT_INSN (insn); rtx br_insn = NEXT_INSN (insn);
RTX_CODE br_code; RTX_CODE br_code;
extern int swap_operands;
if (GET_CODE (br_insn) != JUMP_INSN) if (GET_CODE (br_insn) != JUMP_INSN)
abort(); abort();
br_code = GET_CODE (XEXP (XEXP (PATTERN (br_insn), 1), 0)); br_code = GET_CODE (XEXP (XEXP (PATTERN (br_insn), 1), 0));
...@@ -144,7 +145,7 @@ ...@@ -144,7 +145,7 @@
(define_insn "" (define_insn ""
[(set (cc0) [(set (cc0)
(match_operand:SI 0 "general_operand" "r"))] (match_operand:SI 0 "nonimmediate_operand" "r"))]
"" ""
"* "*
{ {
...@@ -183,7 +184,7 @@ ...@@ -183,7 +184,7 @@
(define_expand "tsthi" (define_expand "tsthi"
[(set (cc0) [(set (cc0)
(match_operand:HI 0 "general_operand" ""))] (match_operand:HI 0 "nonimmediate_operand" ""))]
"" ""
" "
{ {
...@@ -200,6 +201,7 @@ ...@@ -200,6 +201,7 @@
"weird_memory_memory (operands[0], operands[1])" "weird_memory_memory (operands[0], operands[1])"
"* "*
{ {
extern int swap_operands;
rtx br_insn = NEXT_INSN (insn); rtx br_insn = NEXT_INSN (insn);
if (GET_CODE (br_insn) != JUMP_INSN) if (GET_CODE (br_insn) != JUMP_INSN)
...@@ -253,7 +255,7 @@ ...@@ -253,7 +255,7 @@
(define_expand "tstqi" (define_expand "tstqi"
[(set (cc0) [(set (cc0)
(match_operand:QI 0 "general_operand" ""))] (match_operand:QI 0 "nonimmediate_operand" ""))]
"" ""
" "
{ {
...@@ -270,6 +272,7 @@ ...@@ -270,6 +272,7 @@
"weird_memory_memory (operands[0], operands[1])" "weird_memory_memory (operands[0], operands[1])"
"* "*
{ {
extern int swap_operands;
rtx br_insn = NEXT_INSN (insn); rtx br_insn = NEXT_INSN (insn);
RTX_CODE br_code; RTX_CODE br_code;
...@@ -678,7 +681,7 @@ ...@@ -678,7 +681,7 @@
;; If the destination is a memory operand, indexed source operands are ;; If the destination is a memory operand, indexed source operands are
;; disallowed. Big DImode constants are always loaded into a reg pair, ;; disallowed. Big DImode constants are always loaded into a reg pair,
;; although offsetable memory addresses really could be dealt with. ;; although offsettable memory addresses really could be dealt with.
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "memory_operand" "=m") [(set (match_operand:DI 0 "memory_operand" "=m")
...@@ -1203,6 +1206,8 @@ ...@@ -1203,6 +1206,8 @@
(match_operand:SI 3 "general_operand" "g"))] (match_operand:SI 3 "general_operand" "g"))]
"movdi_possible (operands)" "movdi_possible (operands)"
"* "*
{
extern int swap_operands;
output_asm_insn (\"# COMBINE movw %1,%0\", operands); output_asm_insn (\"# COMBINE movw %1,%0\", operands);
output_asm_insn (\"# COMBINE movw %3,%2\", operands); output_asm_insn (\"# COMBINE movw %3,%2\", operands);
movdi_possible (operands); movdi_possible (operands);
...@@ -1210,7 +1215,7 @@ ...@@ -1210,7 +1215,7 @@
return (swap_operands) ? \"movl %3,%0\" : \"movl %1,%2\"; return (swap_operands) ? \"movl %3,%0\" : \"movl %1,%2\";
return (swap_operands) ? \"movl %1,%0\" : \"movl %3,%2\"; return (swap_operands) ? \"movl %1,%0\" : \"movl %3,%2\";
") }")
;; Optimize certain tests after memory stores. ;; Optimize certain tests after memory stores.
...@@ -1360,6 +1365,12 @@ ...@@ -1360,6 +1365,12 @@
output_asm_insn (\"xorw %1,%0\", xoperands); output_asm_insn (\"xorw %1,%0\", xoperands);
return \"xorw %2,%0\"; return \"xorw %2,%0\";
}") }")
;; My version, modelled after Jonathan Stone's and "tablejump" - S.P.
(define_insn "indirect_jump"
[(set (pc) (match_operand:SI 0 "general_operand" "r"))]
""
"jump (%0)")
;;- Local variables: ;;- Local variables:
;;- mode:emacs-lisp ;;- mode:emacs-lisp
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment