alpha.md (*movsi_nt_vms_nofix): Was *movesi_nt_vms; now only if !TARGET_FIX.
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Sat, 16 Feb 2002 18:54:33 +0000 (18:54 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 16 Feb 2002 18:54:33 +0000 (13:54 -0500)
* config/alpha/alpha.md (*movsi_nt_vms_nofix): Was *movesi_nt_vms;
now only if !TARGET_FIX.
(*movsi_nt_vms_fix): New pattern.

From-SVN: r49807

gcc/ChangeLog
gcc/config/alpha/alpha.md

index 52cabeda71476a01607fd721d8539fe35b286731..c960356ecd17b004d15f61883a2eeb56e247a80b 100644 (file)
@@ -1,3 +1,9 @@
+Sat Feb 16 13:48:50 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * config/alpha/alpha.md (*movsi_nt_vms_nofix): Was *movesi_nt_vms;
+       now only if !TARGET_FIX.
+       (*movsi_nt_vms_fix): New pattern.
+
 2002-02-16  Douglas B Rupp  <rupp@gnat.com>
 
        * config/alpha/alpha.c: Implement null frame procedure types on VMS.
index b987de8cb49a8597d6346922b7258db4d4b2abab..2ca89840ae5683f7aeeeb3935ab9f14edb69d57f 100644 (file)
@@ -5292,10 +5292,11 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
    itofs %1,%0"
   [(set_attr "type" "ilog,iadd,iadd,ild,ist,fcpys,fld,fst,ftoi,itof")])
 
-(define_insn "*movsi_nt_vms"
+(define_insn "*movsi_nt_vms_nofix"
   [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,m,*f,*f,m")
        (match_operand:SI 1 "input_operand" "rJ,K,L,s,m,rJ,*fJ,m,*f"))]
   "(TARGET_ABI_WINDOWS_NT || TARGET_ABI_OPEN_VMS)
+    && !TARGET_FIX
     && (register_operand (operands[0], SImode)
         || reg_or_0_operand (operands[1], SImode))"
   "@
@@ -5310,6 +5311,27 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
    st%, %R1,%0"
   [(set_attr "type" "ilog,iadd,iadd,ldsym,ild,ist,fcpys,fld,fst")])
 
+(define_insn "*movsi_nt_vms_fix"
+  [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,m,*f,*f,m,r,*f")
+       (match_operand:SI 1 "input_operand" "rJ,K,L,s,m,rJ,*fJ,m,*f,*f,r"))]
+  "(TARGET_ABI_WINDOWS_NT || TARGET_ABI_OPEN_VMS)
+    && TARGET_FIX
+    && (register_operand (operands[0], SImode)
+        || reg_or_0_operand (operands[1], SImode))"
+  "@
+   bis $31,%1,%0
+   lda %0,%1
+   ldah %0,%h1
+   lda %0,%1
+   ldl %0,%1
+   stl %r1,%0
+   cpys %R1,%R1,%0
+   ld%, %0,%1
+   st%, %R1,%0
+   ftois %1,%0
+   itofs %1,%0"
+  [(set_attr "type" "ilog,iadd,iadd,ldsym,ild,ist,fcpys,fld,fst,ftoi,itof")])
+
 (define_insn "*movhi_nobwx"
   [(set (match_operand:HI 0 "register_operand" "=r,r")
        (match_operand:HI 1 "input_operand" "rJ,n"))]