sh.md (attribute "type"): Add nil.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Wed, 19 Nov 1997 00:36:12 +0000 (00:36 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Wed, 19 Nov 1997 00:36:12 +0000 (00:36 +0000)
        * sh.md (attribute "type"): Add nil.
        (movsi_ie): y/y alternative is type nil.
        (movsf_ie): Replace ry/yr/X alternative by r/y/X , y/r/X and y/y/X
        alternatives.
        (movsf_ie+1): Delete.

From-SVN: r16575

gcc/ChangeLog
gcc/config/sh/sh.md

index e35094a81f936f71c9e622711506eb0b6fef62d5..541c9c5e44b1d564cda091d3b01fc68bd96aad25 100644 (file)
@@ -1,3 +1,11 @@
+Tue Nov 18 23:03:30 1997  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * sh.md (attribute "type"): Add nil.
+       (movsi_ie): y/y alternative is type nil.
+       (movsf_ie): Replace ry/yr/X alternative by r/y/X , y/r/X and y/y/X
+       alternatives.
+       (movsf_ie+1): Delete.
+
 Tue Nov 18 15:39:59 1997  Jim Wilson  <wilson@cygnus.com>
 
        * mips/mips.c (save_restore_insns): If gp_offset or fp_offset are
index 1faad9324268470c6975901bfe451a7e4b234caf..42b866c2af2c11df5ec580a3808df9fe71b0b55a 100644 (file)
 ;; fp          floating point
 ;; fdiv                floating point divide (or square root)
 ;; gp_fpul     move between general purpose register and fpul
+;; nil         no-op move, will be deleted.
 
 (define_attr "type"
- "cbranch,jump,jump_ind,arith,arith3,arith3b,dyn_shift,other,load,load_si,store,move,fmove,smpy,dmpy,return,pload,pstore,pcload,pcload_si,rte,sfunc,call,fp,fdiv,gp_fpul"
+ "cbranch,jump,jump_ind,arith,arith3,arith3b,dyn_shift,other,load,load_si,store,move,fmove,smpy,dmpy,return,pload,pstore,pcload,pcload_si,rte,sfunc,call,fp,fdiv,gp_fpul,nil"
   (const_string "other"))
 
 ; If a conditional branch destination is within -252..258 bytes away
        lds     %1,%0
        sts     %1,%0
        ! move optimized away"
-  [(set_attr "type" "pcload_si,move,*,load_si,move,move,store,store,pstore,move,load,pload,pcload_si,gp_fpul,gp_fpul,other")
+  [(set_attr "type" "pcload_si,move,*,load_si,move,move,store,store,pstore,move,load,pload,pcload_si,gp_fpul,gp_fpul,nil")
    (set_attr "length" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,0")])
 
 (define_insn "movsi_i_lowpart"
        sts     %1,%0"
   [(set_attr "type" "move,move,pcload,load,store,move,move")])
 
+;; We may not split the ry/yr/XX alternatives to movsi_ie, since
+;; update_flow_info would not know where to put REG_EQUAL notes
+;; when the destination changes mode.
 (define_insn "movsf_ie"
   [(set (match_operand:SF 0 "general_movdst_operand"
-        "=f,r,f,f,fy,f,m,r,r,m,f,y,y,rf,ry")
+        "=f,r,f,f,fy,f,m,r,r,m,f,y,y,rf,r,y,y")
        (match_operand:SF 1 "general_movsrc_operand"
-         "f,r,G,H,FQ,m,f,FQ,m,r,y,f,>,fr,yr"))
-   (clobber (match_scratch:SI 2 "=X,X,X,X,&z,X,X,X,X,X,X,X,X,y,X"))]
+         "f,r,G,H,FQ,m,f,FQ,m,r,y,f,>,fr,y,r,y"))
+   (clobber (match_scratch:SI 2 "=X,X,X,X,&z,X,X,X,X,X,X,X,X,y,X,X,X"))]
 
   "TARGET_SH3E
    && (arith_reg_operand (operands[0], SFmode)
        flds    %1,fpul
        lds.l   %1,%0
        #
-       #"
-  [(set_attr "type" "fmove,move,fmove,fmove,pcload,load,store,pcload,load,store,fmove,fmove,load,*,*")
-   (set_attr "length" "*,*,*,*,4,*,*,*,*,*,2,2,2,*,*")])
-
-(define_split
-  [(set (match_operand:SF 0 "register_operand" "ry")
-       (match_operand:SF 1 "register_operand" "ry"))
-   (clobber (match_scratch:SI 2 "X"))]
-  "reload_completed
-   && true_regnum (operands[0]) < FIRST_FP_REG
-   && true_regnum (operands[1]) < FIRST_FP_REG"
-  [(set (match_dup 0) (match_dup 1))]
-  "
-{
-  operands[0] = gen_rtx (REG, SImode, true_regnum (operands[0]));
-  operands[1] = gen_rtx (REG, SImode, true_regnum (operands[1]));
-}")
+       sts     %1,%0
+       lds     %1,%0
+       ! move optimized away"
+  [(set_attr "type" "fmove,move,fmove,fmove,pcload,load,store,pcload,load,store,fmove,fmove,load,*,gp_fpul,gp_fpul,nil")
+   (set_attr "length" "*,*,*,*,4,*,*,*,*,*,2,2,2,*,2,2,0")])
 
 (define_split
   [(set (match_operand:SF 0 "register_operand" "")