aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Hayes <m.hayes@elec.canterbury.ac.nz>1999-05-14 19:19:30 +0000
committerMichael Hayes <m.hayes@gcc.gnu.org>1999-05-14 19:19:30 +0000
commitc08733d0221f41ce5a2d684e9592940f380d7623 (patch)
tree751688adb76039bbc93bb92241387e8547af2e2e /gcc
parent152d5997620ef463541f3e9550a4477336552f30 (diff)
downloadgcc-c08733d0221f41ce5a2d684e9592940f380d7623.zip
gcc-c08733d0221f41ce5a2d684e9592940f380d7623.tar.gz
gcc-c08733d0221f41ce5a2d684e9592940f380d7623.tar.bz2
c4x.md (set_lo_sum+2): New splitter to load large const_ints.
* config/c4x/c4x.md (set_lo_sum+2): New splitter to load large const_ints. From-SVN: r26940
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/c4x/c4x.md14
2 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 461524b..9be1091 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/c4x/c4x.md b/gcc/config/c4x/c4x.md
index 1b7bd2b..a0a4e0b 100644
--- a/gcc/config/c4x/c4x.md
+++ b/gcc/config/c4x/c4x.md
@@ -1127,6 +1127,20 @@
(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.