CVS: gcc/gcc-current/gcc/config/msp430 msp430.md,1.10,1.11

Dmitry Diky <[email protected]>
Newsgroups gmane.comp.hardware.texas-instruments.msp430.gcc.cvs
Message-ID <[email protected]>
Update of /cvsroot/mspgcc/gcc/gcc-current/gcc/config/msp430
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6325

Modified Files:
	msp430.md 
Log Message:
fix volatile issues


Index: msp430.md
===================================================================
RCS file: /cvsroot/mspgcc/gcc/gcc-current/gcc/config/msp430/msp430.md,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -w -d -r1.10 -r1.11
--- msp430.md	31 May 2004 16:14:32 -0000	1.10
+++ msp430.md	20 Jul 2004 14:01:40 -0000	1.11
@@ -125,7 +125,7 @@
         (match_operand:SI 0 "general_operand" ""))]
   ""
   "#"
-  ""
+  "(reload_completed || !MEM_VOLATILE_P(operands[0]))"
   [ (set (mem:HI (post_dec (reg:HI 1))) (match_dup 1))
     (set (mem:HI (post_dec (reg:HI 1))) (match_dup 2))]
 "{
@@ -139,7 +139,7 @@
         (match_operand:DI 0 "general_operand" ""))]
   ""
   "#"
-  ""
+  "(reload_completed || !MEM_VOLATILE_P(operands[0]))"
   [ (set (mem:HI (post_dec (reg:HI 1))) (match_dup 4))
     (set (mem:HI (post_dec (reg:HI 1))) (match_dup 3))
     (set (mem:HI (post_dec (reg:HI 1))) (match_dup 2))
@@ -157,7 +157,7 @@
         (match_operand:SF 0 "general_operand" ""))]
   ""
   "#"
-  ""
+  "(reload_completed || !MEM_VOLATILE_P(operands[0]))"
   [ (set (mem:HI (post_dec (reg:HI 1))) (match_dup 1))
     (set (mem:HI (post_dec (reg:HI 1))) (match_dup 2))]
 "{
@@ -344,6 +344,25 @@
 [(set_attr "length" "9")
 (set_attr "cc" "cbranch")])
 
+(define_insn "*testqi_1"
+ [(set (cc0) (compare (and:QI (match_operand:QI 0 "nonimmediate_operand_msp430" "r,r,m,m")
+			      (match_operand:QI 1 "general_operand_msp430" "rPR,mi,rPR,mi")) 
+     (const_int 0)))]
+""
+"bit.b %1, %0"
+[(set_attr "length" "1,2,2,3")
+   (set_attr "cc" "compare,compare,compare,compare")])
+
+
+(define_insn "*testhi_1"
+ [(set (cc0) (compare:HI (and:HI (match_operand:HI 0 "nonimmediate_operand_msp430" "r,r,m,m")
+			      (match_operand:HI 1 "general_operand_msp430" "rPR,mi,rPR,mi")) 
+     (const_int 0)))]
+""
+"bit	%1, %0"
+[(set_attr "length" "1,2,2,3")
+   (set_attr "cc" "compare,compare,compare,compare")])
+
 ;;========================================================================
 ;; noop
 (define_insn "nop"
@@ -1220,15 +1239,15 @@
 ;; move long (32 bit)
 
 (define_insn "movsi" 
-  [(set (match_operand:SI 0 "nonimmediate_operand" "")
-        (match_operand:SI 1 "general_operand" ""))]
+  [(set (match_operand:SI 0 "nonimmediate_operand_msp430" "")
+        (match_operand:SI 1 "general_operand_msp430" ""))]
 ""
 "#")
 
 (define_split
-  [(set (match_operand:SI 0 "nonimmediate_operand" "")
-        (match_operand:SI 1 "general_operand" ""))]
-"/*reload_completed */ 1
+  [(set (match_operand:SI 0 "nonimmediate_operand_msp430" "")
+        (match_operand:SI 1 "general_operand_msp430" ""))]
+"(reload_completed || ( !MEM_VOLATILE_P(operands[0]) && !MEM_VOLATILE_P(operands[1])))
   && extra_constraint(operands[1],'R') 
   && dead_or_set_p (insn, XEXP(operands[1],0))"
 [(set (match_dup 2) (mem:HI (post_inc:HI (match_dup 4))))
@@ -1240,9 +1259,9 @@
 }")
 
 (define_split
-  [(set (match_operand:SI 0 "nonimmediate_operand" "")
-        (match_operand:SI 1 "general_operand" ""))]
-"/*reload_completed */ 1
+  [(set (match_operand:SI 0 "nonimmediate_operand_msp430" "")
+        (match_operand:SI 1 "general_operand_msp430" ""))]
+"(reload_completed || ( !MEM_VOLATILE_P(operands[0]) && !MEM_VOLATILE_P(operands[1])))
 && (!extra_constraint(operands[1],'R')
     || ( REG_P(XEXP(operands[1],0)) 
       && !dead_or_set_p (insn, XEXP(operands[1],0)) ))"
@@ -1257,8 +1276,8 @@
 
 
 (define_insn "*movsi_subreg"
- [(set (subreg:HI (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,m") 2)
-       (subreg:HI (match_operand:SI 1 "general_operand" "rP,mi,rP,mi") 2))]
+ [(set (subreg:HI (match_operand:SI 0 "nonimmediate_operand_msp430" "=r,r,m,m") 2)
+       (subreg:HI (match_operand:SI 1 "general_operand_msp430" "rP,mi,rP,mi") 2))]
  ""
  "mov	%B1, %B0"
  [(set_attr "length" "1,2,2,3")
@@ -1275,8 +1294,8 @@
 
 
 (define_insn "*movsf_subreg"
- [(set (subreg:HI (match_operand:SF 0 "nonimmediate_operand" "=r,r,m,m") 2)
-       (subreg:HI (match_operand:SF 1 "general_operand" "rP,mi,rP,mi") 2))]
+ [(set (subreg:HI (match_operand:SF 0 "nonimmediate_operand_msp430" "=r,r,m,m") 2)
+       (subreg:HI (match_operand:SF 1 "general_operand_msp430" "rP,mi,rP,mi") 2))]
  ""
  "mov	%B1, %B0"
  [(set_attr "length" "1,2,2,3")
@@ -1285,7 +1304,7 @@
 (define_split
   [(set (match_operand:SF 0 "nonimmediate_operand" "")
         (match_operand:SF 1 "general_operand" ""))]
-"/*reload_completed */ 1
+"(reload_completed || ( !MEM_VOLATILE_P(operands[0]) && !MEM_VOLATILE_P(operands[1])))
   && extra_constraint(operands[1],'R') 
   && dead_or_set_p (insn, XEXP(operands[1],0))"
 [(set (match_dup 2) (mem:HI (post_inc:HI (match_dup 4))))
@@ -1299,7 +1318,7 @@
 (define_split
   [(set (match_operand:SF 0 "nonimmediate_operand" "")
         (match_operand:SF 1 "general_operand" ""))]
-"/*reload_completed */ 1
+"(reload_completed || ( !MEM_VOLATILE_P(operands[0]) && !MEM_VOLATILE_P(operands[1])))
 && (!extra_constraint(operands[1],'R')
     || ( REG_P(XEXP(operands[1],0)) 
       && !dead_or_set_p (insn, XEXP(operands[1],0)) ))"
@@ -1326,7 +1345,7 @@
 (define_split
   [(set (match_operand:DI 0 "nonimmediate_operand" "")
         (match_operand:DI 1 "general_operand" ""))]
-"/*reload_completed */ 1
+"(reload_completed || ( !MEM_VOLATILE_P(operands[0]) && !MEM_VOLATILE_P(operands[1])))
   && extra_constraint(operands[1],'R') 
   && dead_or_set_p (insn, XEXP(operands[1],0))"
 [(set (match_dup 2) (mem:HI (post_inc:HI (match_dup 6))))
@@ -1345,7 +1364,7 @@
 (define_split
   [(set (match_operand:DI 0 "nonimmediate_operand" "")
         (match_operand:DI 1 "general_operand" ""))]
-"/*reload_completed */ 1
+"(reload_completed || ( !MEM_VOLATILE_P(operands[0]) && !MEM_VOLATILE_P(operands[1])))
   && extra_constraint(operands[1],'R') 
   && !dead_or_set_p (insn, XEXP(operands[1],0))"
 [(set (match_dup 2) (mem:HI (post_inc:HI (match_dup 6))))
@@ -1380,6 +1399,58 @@
   operands[9] = simplify_gen_subreg(HImode,operands[1],DImode,6);
 }")
 
+;; volatile issues
+(define_insn "*movdi_subreg2"
+ [(set (subreg:HI (match_operand:DI 0 "nonimmediate_operand_msp430" "=r,r,m,m") 2)
+       (subreg:HI (match_operand:DI 1 "general_operand_msp430" "rP,mi,rP,mi") 2))]
+ ""
+ "mov	%B1, %B0"
+ [(set_attr "length" "1,2,2,3")
+    (set_attr "cc" "none")])
+
+(define_insn "*movdi_subreg4"
+ [(set (subreg:HI (match_operand:DI 0 "nonimmediate_operand_msp430" "=r,r,m,m") 4)
+       (subreg:HI (match_operand:DI 1 "general_operand_msp430" "rP,mi,rP,mi") 4))]
+ ""
+ "mov	%C1, %C0"
+ [(set_attr "length" "1,2,2,3")
+    (set_attr "cc" "none")])
+
+(define_insn "*movdi_subreg6"
+ [(set (subreg:HI (match_operand:DI 0 "nonimmediate_operand_msp430" "=r,r,m,m") 6)
+       (subreg:HI (match_operand:DI 1 "general_operand_msp430" "rP,mi,rP,mi") 6))]
+ ""
+ "mov	%D1, %D0"
+ [(set_attr "length" "1,2,2,3")
+    (set_attr "cc" "none")])
+
+
+;; volatile - non-volatile issues
+(define_insn "*movdin_subreg2"
+ [(set (subreg:HI (match_operand:DI 0 "nonimmediate_operand_msp430" "=r,r,m,m") 2)
+        (match_operand:HI 1 "general_operand_msp430" "rP,mi,rP,mi"))]
+ ""
+ "mov	%1, %B0"
+ [(set_attr "length" "1,2,2,3")
+    (set_attr "cc" "none")])
+
+(define_insn "*movdin_subreg4"
+ [(set (subreg:HI (match_operand:DI 0 "nonimmediate_operand_msp430" "=r,r,m,m") 4)
+   (match_operand:HI 1 "general_operand_msp430" "rP,mi,rP,mi"))]
+ ""
+ "mov	%1, %C0"
+ [(set_attr "length" "1,2,2,3")
+    (set_attr "cc" "none")])
+
+(define_insn "*movdin_subreg6"
+ [(set (subreg:HI (match_operand:DI 0 "nonimmediate_operand_msp430" "=r,r,m,m") 6)
+   (match_operand:HI 1 "general_operand_msp430" "rP,mi,rP,mi"))]
+ ""
+ "mov	%1, %D0"
+ [(set_attr "length" "1,2,2,3")
+    (set_attr "cc" "none")])
+
+
 ;;============================================================================
 ;;  ARITHMETIC CODE
 ;;
@@ -1724,7 +1795,7 @@
                 (match_operand:SI 2 "general_operand"  		"")))]
 ""
 "#"
-""
+"(reload_completed || ( !MEM_VOLATILE_P(operands[0]) && !MEM_VOLATILE_P(operands[1])))"
 [(set:HI (match_dup 3) (and:HI (match_dup 5) (match_dup 7)))
  (set:HI (match_dup 4) (and:HI (match_dup 6) (match_dup 8)))]
 "{
@@ -1734,7 +1805,8 @@
   operands[6] = simplify_gen_subreg(HImode,operands[1],SImode,2);
   operands[7] = simplify_gen_subreg(HImode,operands[2],SImode,0); 
   operands[8] = simplify_gen_subreg(HImode,operands[2],SImode,2);
-}")
+}"
+[(set_attr "cc" "none")])
 
 ;;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ;; ior 1 byte 
@@ -1773,7 +1845,8 @@
   operands[6] = simplify_gen_subreg(HImode,operands[1],SImode,2);
   operands[7] = simplify_gen_subreg(HImode,operands[2],SImode,0); 
   operands[8] = simplify_gen_subreg(HImode,operands[2],SImode,2);
-}")
+}"
+[(set_attr "cc" "none")])
 
 ;;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 ;;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -2564,6 +2637,7 @@
 ""
 "{msp430_lshrhi3(operands); DONE; }")
 
+
 (define_insn "lshrhi3_cnt"
   [(parallel [(set (match_operand:HI 0 "register_operand"       "=r")
 	      (lshiftrt:HI (match_operand:HI 1 "register_operand" "0")



-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.