OSDN Git Service

Apply https://gcc.gnu.org/bugzilla/attachment.cgi?id=28797 for lm32-elf.
[pf3gnuchains/gcc-fork.git] / gcc / config / lm32 / lm32.md
index 72c0d84..850f948 100644 (file)
@@ -1,7 +1,7 @@
 ;; Machine description of the Lattice Mico32 architecture for GNU C compiler.
 ;; Contributed by Jon Beniston <jon@beniston.com>
 
-;; Copyright (C) 2009 Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 
 ;; This file is part of GCC.
 
 )
 
 (define_insn "movsi_insn"
-  [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,m,r,r,r,r,r")
-        (match_operand:SI 1 "movsi_rhs_operand" "m,r,r,J,K,L,U,S,Y"))]
+  [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,m,r,r,r,r,r,r")
+        (match_operand:SI 1 "general_operand" "m,r,r,J,K,L,U,S,Y,n"))]
   "lm32_move_ok (SImode, operands)"
   "@
    lw       %0, %1
    ori      %0, r0, %1
    orhi     %0, r0, hi(%1)
    mva      %0, gp(%1)
-   orhi     %0, r0, hi(%1)"
-  [(set_attr "type" "load,arith,store,store,arith,arith,arith,arith,arith")]   
+   orhi     %0, r0, hi(%1)
+   ori      %0, r0, lo(%1); orhi     %0, %0, hi(%1)"
+  [(set_attr "type" "load,arith,store,store,arith,arith,arith,arith,arith,arith")]   
 )
 
 ;; ---------------------------------
   [(set_attr "type" "uibranch")]  
 )
 
-(define_insn "return"
+(define_expand "return"
   [(return)]
   "lm32_can_use_return ()"
+  ""
+) 
+
+(define_expand "simple_return"
+  [(simple_return)]
+  ""
+  ""
+) 
+
+(define_insn "*return"
+  [(return)]
+  "reload_completed"
+  "ret"
+  [(set_attr "type" "uibranch")]  
+) 
+
+(define_insn "*simple_return"
+  [(simple_return)]
+  ""
   "ret"
   [(set_attr "type" "uibranch")]  
 ) 
         {
           int i;
           int shifts = INTVAL (operands[2]);
+          rtx one = GEN_INT (1);
           
           if (shifts == 0)
             emit_move_insn (operands[0], operands[1]);