OSDN Git Service

* config/c4x/c4x.md (set_lo_sum+2): New splitter to load large
authorm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 May 1999 19:19:30 +0000 (19:19 +0000)
committerm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 May 1999 19:19:30 +0000 (19:19 +0000)
const_ints.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26940 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/c4x/c4x.md

index 461524b..9be1091 100644 (file)
@@ -1,3 +1,8 @@
+Sat May 15 14:12:38 1999  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+       * config/c4x/c4x.md (set_lo_sum+2): New splitter to load large
+       const_ints.
+
 Sat May 15 14:09:08 1999  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
 
        * config/c4x/c4x.md (decrement_and_branch_on_count): Disabled.
index 1b7bd2b..a0a4e0b 100644 (file)
    (set (match_dup 0) (lo_sum:QI (match_dup 0) (match_dup 1)))]
   "")
 
+(define_split
+  [(set (match_operand:QI 0 "std_reg_operand" "")
+       (match_operand:QI 1 "const_int_operand" ""))]
+  "! TARGET_C3X
+   && (INTVAL (operands[1]) & ~0xffff) != 0
+   && (INTVAL (operands[1]) & 0xffff) != 0"
+  [(set (match_dup 0) (match_dup 2))
+   (set (match_dup 0) (ior:QI (match_dup 0) (match_dup 3)))]
+  "
+{
+   operands[2] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[1]) & ~0xffff);
+   operands[3] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[1]) & 0xffff);
+}")
+
 ; This pattern is required to handle the case where a register that clobbers
 ; CC has been selected to load a symbolic address.  We force the address
 ; into memory and then generate LDP and LDIU insns.