Brad Bishop | 26bdd44 | 2019-08-16 17:08:17 -0400 | [diff] [blame^] | 1 | From 5526d87787d61990be3187b230fae4d0591d0651 Mon Sep 17 00:00:00 2001 |
| 2 | From: Nagaraju Mekala <nmekala@xilix.com> |
| 3 | Date: Wed, 4 Apr 2018 16:41:41 +0530 |
| 4 | Subject: [PATCH 40/54] Added load store pattern movdi and also adding missing |
| 5 | files |
| 6 | |
| 7 | --- |
| 8 | gcc/config/microblaze/constraints.md | 5 +++++ |
| 9 | gcc/config/microblaze/microblaze.md | 26 ++++++++++++++++++++++++++ |
| 10 | gcc/config/microblaze/t-microblaze | 4 ++-- |
| 11 | 3 files changed, 33 insertions(+), 2 deletions(-) |
| 12 | |
| 13 | diff --git a/gcc/config/microblaze/constraints.md b/gcc/config/microblaze/constraints.md |
| 14 | index ae14944..a06b4d8 100644 |
| 15 | --- a/gcc/config/microblaze/constraints.md |
| 16 | +++ b/gcc/config/microblaze/constraints.md |
| 17 | @@ -52,6 +52,11 @@ |
| 18 | (and (match_code "const_int") |
| 19 | (match_test "ival > 0 && ival < 0x10000"))) |
| 20 | |
| 21 | +(define_constraint "K" |
| 22 | + "A constant in the range 0xffffff8000000000L to 0x0000007fffffffffL (inclusive)." |
| 23 | + (and (match_code "const_int") |
| 24 | + (match_test "ival > (long)0xffffff8000000000L && ival < (long)0x0000007fffffffffL"))) |
| 25 | + |
| 26 | ;; Define floating point constraints |
| 27 | |
| 28 | (define_constraint "G" |
| 29 | diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md |
| 30 | index 6976b37..0cd0441 100644 |
| 31 | --- a/gcc/config/microblaze/microblaze.md |
| 32 | +++ b/gcc/config/microblaze/microblaze.md |
| 33 | @@ -1120,6 +1120,32 @@ |
| 34 | ) |
| 35 | |
| 36 | |
| 37 | +(define_insn "*movdi_internal_64" |
| 38 | + [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,d,d,R,o") |
| 39 | + (match_operand:DI 1 "general_operand" " d,K,J,R,o,d,d"))] |
| 40 | + "TARGET_MB_64 && (INTVAL(operands[1]) < 0x7fffffffff) && (INTVAL(operands[1]) > 0xffffff8000000000)" |
| 41 | + { |
| 42 | + switch (which_alternative) |
| 43 | + { |
| 44 | + case 0: |
| 45 | + return "addlk\t%0,%1"; |
| 46 | + case 1: |
| 47 | + return "addlik\t%0,r0,%1"; |
| 48 | + case 2: |
| 49 | + return "addlk\t%0,r0,r0"; |
| 50 | + case 3: |
| 51 | + case 4: |
| 52 | + return "lli\t%0,%1"; |
| 53 | + case 5: |
| 54 | + case 6: |
| 55 | + return "sli\t%1,%0"; |
| 56 | + } |
| 57 | + return "unreachable"; |
| 58 | + } |
| 59 | + [(set_attr "type" "no_delay_move,no_delay_arith,no_delay_arith,no_delay_load,no_delay_load,no_delay_store,no_delay_store") |
| 60 | + (set_attr "mode" "DI") |
| 61 | + (set_attr "length" "8,8,8,8,12,8,12")]) |
| 62 | + |
| 63 | (define_insn "*movdi_internal" |
| 64 | [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,d,d,R,o") |
| 65 | (match_operand:DI 1 "general_operand" " d,i,J,R,o,d,d"))] |
| 66 | diff --git a/gcc/config/microblaze/t-microblaze b/gcc/config/microblaze/t-microblaze |
| 67 | index e9a1921..7671f63 100644 |
| 68 | --- a/gcc/config/microblaze/t-microblaze |
| 69 | +++ b/gcc/config/microblaze/t-microblaze |
| 70 | @@ -4,8 +4,8 @@ MULTILIB_EXCEPTIONS = *mxl-barrel-shift/mxl-multiply-high mxl-multiply-high |
| 71 | MULTILIB_EXCEPTIONS += *mxl-barrel-shift/mxl-multiply-high/mlittle-endian |
| 72 | MULTILIB_EXCEPTIONS += *mxl-barrel-shift/mxl-multiply-high/m64 |
| 73 | MULTILIB_EXCEPTIONS += mxl-multiply-high/mlittle-endian |
| 74 | -MULTILIB_EXCEPTIONS += mxl-multiply-high/m64 |
| 75 | -MULTILIB_EXCEPTIONS += *mxl-multiply-high/mlittle-endian/m64 |
| 76 | +#MULTILIB_EXCEPTIONS += mxl-multiply-high/m64 |
| 77 | +#MULTILIB_EXCEPTIONS += *mxl-multiply-high/mlittle-endian/m64 |
| 78 | |
| 79 | # Extra files |
| 80 | microblaze-c.o: $(srcdir)/config/microblaze/microblaze-c.c \ |
| 81 | -- |
| 82 | 2.7.4 |
| 83 | |