diff options
author | Michael Hayes <m.hayes@elec.canterbury.ac.nz> | 1999-05-14 19:19:30 +0000 |
---|---|---|
committer | Michael Hayes <m.hayes@gcc.gnu.org> | 1999-05-14 19:19:30 +0000 |
commit | c08733d0221f41ce5a2d684e9592940f380d7623 (patch) | |
tree | 751688adb76039bbc93bb92241387e8547af2e2e /gcc | |
parent | 152d5997620ef463541f3e9550a4477336552f30 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/c4x/c4x.md | 14 |
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. |