From: Michael Hayes Date: Fri, 14 May 1999 19:19:30 +0000 (+0000) Subject: c4x.md (set_lo_sum+2): New splitter to load large const_ints. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c08733d0221f41ce5a2d684e9592940f380d7623;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 461524bae61..9be10911156 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sat May 15 14:12:38 1999 Michael Hayes + + * config/c4x/c4x.md (set_lo_sum+2): New splitter to load large + const_ints. + Sat May 15 14:09:08 1999 Michael Hayes * 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 1b7bd2b287b..a0a4e0b9dd9 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.