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