Add missing TARGET_FIX case for movsi on Alpha/VMS

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Sat Feb 16 11:54:00 GMT 2002


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.

*** config/alpha/alpha.md	2002/01/24 04:01:05	1.178
--- config/alpha/alpha.md	2002/02/16 18:52:19
*************** fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi
*** 5293,5300 ****
    [(set_attr "type" "ilog,iadd,iadd,ild,ist,fcpys,fld,fst,ftoi,itof")])
  
! (define_insn "*movsi_nt_vms"
    [(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)
      && (register_operand (operands[0], SImode)
          || reg_or_0_operand (operands[1], SImode))"
--- 5293,5301 ----
    [(set_attr "type" "ilog,iadd,iadd,ild,ist,fcpys,fld,fst,ftoi,itof")])
  
! (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))"
*************** fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi
*** 5310,5313 ****
--- 5311,5335 ----
     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"



More information about the Gcc-patches mailing list