| From 95615e1bfae642dc4f5f1b03e1ffaea4f16aa99c Mon Sep 17 00:00:00 2001 |
| From: Nagaraju Mekala <nmekala@xilix.com> |
| Date: Wed, 4 Apr 2018 16:41:41 +0530 |
| Subject: [PATCH 40/63] Added load store pattern movdi and also adding missing |
| files |
| |
| --- |
| gcc/config/microblaze/constraints.md | 5 +++++ |
| gcc/config/microblaze/microblaze.md | 26 ++++++++++++++++++++++++++ |
| gcc/config/microblaze/t-microblaze | 4 ++-- |
| 3 files changed, 33 insertions(+), 2 deletions(-) |
| |
| diff --git a/gcc/config/microblaze/constraints.md b/gcc/config/microblaze/constraints.md |
| index 5e1d79a..69bcb24 100644 |
| --- a/gcc/config/microblaze/constraints.md |
| +++ b/gcc/config/microblaze/constraints.md |
| @@ -52,6 +52,11 @@ |
| (and (match_code "const_int") |
| (match_test "ival > 0 && ival < 0x10000"))) |
| |
| +(define_constraint "K" |
| + "A constant in the range 0xffffff8000000000L to 0x0000007fffffffffL (inclusive)." |
| + (and (match_code "const_int") |
| + (match_test "ival > (long)0xffffff8000000000L && ival < (long)0x0000007fffffffffL"))) |
| + |
| ;; Define floating point constraints |
| |
| (define_constraint "G" |
| diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md |
| index dbb592e..eb52957 100644 |
| --- a/gcc/config/microblaze/microblaze.md |
| +++ b/gcc/config/microblaze/microblaze.md |
| @@ -1122,6 +1122,32 @@ |
| ) |
| |
| |
| +(define_insn "*movdi_internal_64" |
| + [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,d,d,R,o") |
| + (match_operand:DI 1 "general_operand" " d,K,J,R,o,d,d"))] |
| + "TARGET_MB_64 && (INTVAL(operands[1]) < 0x7fffffffff) && (INTVAL(operands[1]) > 0xffffff8000000000)" |
| + { |
| + switch (which_alternative) |
| + { |
| + case 0: |
| + return "addlk\t%0,%1"; |
| + case 1: |
| + return "addlik\t%0,r0,%1"; |
| + case 2: |
| + return "addlk\t%0,r0,r0"; |
| + case 3: |
| + case 4: |
| + return "lli\t%0,%1"; |
| + case 5: |
| + case 6: |
| + return "sli\t%1,%0"; |
| + } |
| + return "unreachable"; |
| + } |
| + [(set_attr "type" "no_delay_move,no_delay_arith,no_delay_arith,no_delay_load,no_delay_load,no_delay_store,no_delay_store") |
| + (set_attr "mode" "DI") |
| + (set_attr "length" "8,8,8,8,12,8,12")]) |
| + |
| (define_insn "*movdi_internal" |
| [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,d,d,R,o") |
| (match_operand:DI 1 "general_operand" " d,i,J,R,o,d,d"))] |
| diff --git a/gcc/config/microblaze/t-microblaze b/gcc/config/microblaze/t-microblaze |
| index e9a1921..7671f63 100644 |
| --- a/gcc/config/microblaze/t-microblaze |
| +++ b/gcc/config/microblaze/t-microblaze |
| @@ -4,8 +4,8 @@ MULTILIB_EXCEPTIONS = *mxl-barrel-shift/mxl-multiply-high mxl-multiply-high |
| MULTILIB_EXCEPTIONS += *mxl-barrel-shift/mxl-multiply-high/mlittle-endian |
| MULTILIB_EXCEPTIONS += *mxl-barrel-shift/mxl-multiply-high/m64 |
| MULTILIB_EXCEPTIONS += mxl-multiply-high/mlittle-endian |
| -MULTILIB_EXCEPTIONS += mxl-multiply-high/m64 |
| -MULTILIB_EXCEPTIONS += *mxl-multiply-high/mlittle-endian/m64 |
| +#MULTILIB_EXCEPTIONS += mxl-multiply-high/m64 |
| +#MULTILIB_EXCEPTIONS += *mxl-multiply-high/mlittle-endian/m64 |
| |
| # Extra files |
| microblaze-c.o: $(srcdir)/config/microblaze/microblaze-c.c \ |
| -- |
| 2.7.4 |
| |