diff options
Diffstat (limited to 'meta-xilinx-bsp/recipes-microblaze/gcc/gcc-9/0040-Added-load-store-pattern-movdi-and-also-adding-missi.patch')
-rw-r--r-- | meta-xilinx-bsp/recipes-microblaze/gcc/gcc-9/0040-Added-load-store-pattern-movdi-and-also-adding-missi.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-9/0040-Added-load-store-pattern-movdi-and-also-adding-missi.patch b/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-9/0040-Added-load-store-pattern-movdi-and-also-adding-missi.patch new file mode 100644 index 00000000..a973f4cd --- /dev/null +++ b/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-9/0040-Added-load-store-pattern-movdi-and-also-adding-missi.patch | |||
@@ -0,0 +1,83 @@ | |||
1 | From 95615e1bfae642dc4f5f1b03e1ffaea4f16aa99c 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/63] 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 5e1d79a..69bcb24 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 dbb592e..eb52957 100644 | ||
31 | --- a/gcc/config/microblaze/microblaze.md | ||
32 | +++ b/gcc/config/microblaze/microblaze.md | ||
33 | @@ -1122,6 +1122,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 | |||