]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/config/rl78/rl78-expand.md
Update copyright years.
[thirdparty/gcc.git] / gcc / config / rl78 / rl78-expand.md
index f61e444b5da8300eca695d071bb1e534094cb27e..739855ee40a046a160a6c70a07ba3553c66bd1e5 100644 (file)
@@ -1,5 +1,5 @@
 ;;  Machine Description for Renesas RL78 processors
-;;  Copyright (C) 2011-2014 Free Software Foundation, Inc.
+;;  Copyright (C) 2011-2020 Free Software Foundation, Inc.
 ;;  Contributed by Red Hat.
 
 ;; This file is part of GCC.
@@ -48,7 +48,7 @@
        && ! REG_P (operands[0]))
        operands[1] = copy_to_mode_reg (QImode, operands[1]);
 
-    if (CONST_INT_P (operands[1]) && ! IN_RANGE (INTVAL (operands[1]), (-1 << 8) + 1, (1 << 8) - 1))
+    if (CONST_INT_P (operands[1]) && ! IN_RANGE (INTVAL (operands[1]), (HOST_WIDE_INT_M1U << 8) + 1, (1 << 8) - 1))
       FAIL;
   }
 )
        (match_operand:HI 4 "general_operand"))
    (set (match_operand:HI 3 "nonimmediate_operand")
        (match_operand:HI 5 "general_operand"))]
-  "rl78_split_movsi (operands);"
+  "rl78_split_movsi (operands, SImode);"
   [(set_attr "valloc" "op1")]
 )
 
+(define_insn_and_split "movsf"
+  [(set (match_operand:SF 0 "nonimmediate_operand" "=vYS,v,Wfr")
+       (match_operand:SF 1 "general_operand" "viYS,Wfr,v"))]
+  ""
+  "#"
+  ""
+  [(set (match_operand:HI 2 "nonimmediate_operand")
+       (match_operand:HI 4 "general_operand"))
+   (set (match_operand:HI 3 "nonimmediate_operand")
+       (match_operand:HI 5 "general_operand"))]
+  "rl78_split_movsi (operands, SFmode);"
+  [(set_attr "valloc" "op1")]
+)
+
+(define_expand "bswaphi2"
+  [(set (match_operand:HI           0 "nonimmediate_operand")
+        (bswap:HI (match_operand:HI 1 "general_operand")))]
+  ""
+  "if (rl78_force_nonfar_2 (operands, gen_bswaphi2))
+     DONE;"
+)
+
 ;;---------- Conversions ------------------------
 
 (define_expand "zero_extendqihi2"
 )
 
 (define_expand "andqi3"
-  [(set (match_operand:QI         0 "nonimmediate_operand")
-       (and:QI (match_operand:QI 1 "general_operand")
-               (match_operand:QI 2 "general_operand")))
+  [(set (match_operand:QI         0 "rl78_nonimmediate_operand")
+       (and:QI (match_operand:QI 1 "rl78_general_operand")
+               (match_operand:QI 2 "rl78_general_operand")))
    ]
   ""
   "if (rl78_force_nonfar_3 (operands, gen_andqi3))
 )
 
 (define_expand "iorqi3"
-  [(set (match_operand:QI         0 "nonimmediate_operand")
-       (ior:QI (match_operand:QI 1 "general_operand")
-               (match_operand:QI 2 "general_operand")))
+  [(set (match_operand:QI         0 "rl78_nonimmediate_operand")
+       (ior:QI (match_operand:QI 1 "rl78_general_operand")
+               (match_operand:QI 2 "rl78_general_operand")))
    ]
   ""
   "if (rl78_force_nonfar_3 (operands, gen_iorqi3))
 )
 
 (define_expand "xorqi3"
-  [(set (match_operand:QI         0 "nonimmediate_operand")
-       (xor:QI (match_operand:QI 1 "general_operand")
-               (match_operand:QI 2 "general_operand")))
+  [(set (match_operand:QI         0 "rl78_nonimmediate_operand")
+       (xor:QI (match_operand:QI 1 "rl78_general_operand")
+               (match_operand:QI 2 "rl78_general_operand")))
    ]
   ""
   "if (rl78_force_nonfar_3 (operands, gen_xorqi3))