diff options
Diffstat (limited to 'meta-microblaze/recipes-devtools/gcc/gcc-10/0019-Patch-microblaze-Add-cbranchsi4_reg.patch')
-rw-r--r-- | meta-microblaze/recipes-devtools/gcc/gcc-10/0019-Patch-microblaze-Add-cbranchsi4_reg.patch | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/meta-microblaze/recipes-devtools/gcc/gcc-10/0019-Patch-microblaze-Add-cbranchsi4_reg.patch b/meta-microblaze/recipes-devtools/gcc/gcc-10/0019-Patch-microblaze-Add-cbranchsi4_reg.patch new file mode 100644 index 00000000..b78a9814 --- /dev/null +++ b/meta-microblaze/recipes-devtools/gcc/gcc-10/0019-Patch-microblaze-Add-cbranchsi4_reg.patch | |||
@@ -0,0 +1,148 @@ | |||
1 | From f43cb8572131074c7ce43a1d39c7ba6c85611e18 Mon Sep 17 00:00:00 2001 | ||
2 | From: Mahesh Bodapati <mbodapat@xilinx.com> | ||
3 | Date: Tue, 17 Jan 2017 17:04:37 +0530 | ||
4 | Subject: [PATCH 19/58] [Patch, microblaze]: Add cbranchsi4_reg | ||
5 | |||
6 | This patch optimizes the generation of pcmpne/pcmpeq instruction if the | ||
7 | compare instruction has no immediate values.For the immediate values the | ||
8 | xor instruction is generated | ||
9 | |||
10 | Signed-off-by: Nagaraju Mekala <nmekala@xilix.com> | ||
11 | Signed-off-by: Ajit Agarwal <ajitkum@xilinx.com> | ||
12 | |||
13 | ChangeLog: | ||
14 | 2015-01-13 Nagaraju Mekala <nmekala@xilix.com> | ||
15 | Ajit Agarwal <ajitkum@xilinx.com> | ||
16 | |||
17 | *microblaze.md (cbranchsi4_reg): New | ||
18 | *microblaze.c (microblaze_expand_conditional_branch_reg): New | ||
19 | |||
20 | Conflicts: | ||
21 | |||
22 | gcc/config/microblaze/microblaze-protos.h | ||
23 | --- | ||
24 | gcc/config/microblaze/microblaze-protos.h | 2 +- | ||
25 | gcc/testsuite/gcc.target/microblaze/isa/fcmp1.c | 2 +- | ||
26 | gcc/testsuite/gcc.target/microblaze/isa/fcmp2.c | 2 +- | ||
27 | gcc/testsuite/gcc.target/microblaze/isa/fcmp3.c | 2 +- | ||
28 | gcc/testsuite/gcc.target/microblaze/isa/fcmp4.c | 2 +- | ||
29 | gcc/testsuite/gcc.target/microblaze/isa/nofcmp.c | 14 +++++++------- | ||
30 | gcc/testsuite/gcc.target/microblaze/isa/vanilla.c | 12 ++++++------ | ||
31 | 7 files changed, 18 insertions(+), 18 deletions(-) | ||
32 | |||
33 | diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h | ||
34 | index 96f7bb67f6c..76ffc682df2 100644 | ||
35 | --- a/gcc/config/microblaze/microblaze-protos.h | ||
36 | +++ b/gcc/config/microblaze/microblaze-protos.h | ||
37 | @@ -33,7 +33,7 @@ extern int microblaze_expand_shift (rtx *); | ||
38 | extern bool microblaze_expand_move (machine_mode, rtx *); | ||
39 | extern bool microblaze_expand_block_move (rtx, rtx, rtx, rtx); | ||
40 | extern void microblaze_expand_divide (rtx *); | ||
41 | -extern void microblaze_expand_conditional_branch (machine_mode, rtx *); | ||
42 | +extern void microblaze_expand_conditional_branch (enum machine_mode, rtx *); | ||
43 | extern void microblaze_expand_conditional_branch_reg (machine_mode, rtx *); | ||
44 | extern void microblaze_expand_conditional_branch_sf (rtx *); | ||
45 | extern int microblaze_can_use_return_insn (void); | ||
46 | diff --git a/gcc/testsuite/gcc.target/microblaze/isa/fcmp1.c b/gcc/testsuite/gcc.target/microblaze/isa/fcmp1.c | ||
47 | index 4041a241391..ccc6a461cd9 100644 | ||
48 | --- a/gcc/testsuite/gcc.target/microblaze/isa/fcmp1.c | ||
49 | +++ b/gcc/testsuite/gcc.target/microblaze/isa/fcmp1.c | ||
50 | @@ -6,5 +6,5 @@ void float_func () | ||
51 | { | ||
52 | /* { dg-final { scan-assembler "fcmp\.(le|gt)\tr(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1])\[^0-9]" } } */ | ||
53 | if (f2 <= f3) | ||
54 | - print ("le"); | ||
55 | + f2 = f3; | ||
56 | } | ||
57 | diff --git a/gcc/testsuite/gcc.target/microblaze/isa/fcmp2.c b/gcc/testsuite/gcc.target/microblaze/isa/fcmp2.c | ||
58 | index 3902b839db9..1dd5fe6c539 100644 | ||
59 | --- a/gcc/testsuite/gcc.target/microblaze/isa/fcmp2.c | ||
60 | +++ b/gcc/testsuite/gcc.target/microblaze/isa/fcmp2.c | ||
61 | @@ -6,5 +6,5 @@ void float_func () | ||
62 | { | ||
63 | /* { dg-final { scan-assembler "fcmp\.(lt|ge)\tr(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1])\[^0-9]" } } */ | ||
64 | if (f2 < f3) | ||
65 | - print ("lt"); | ||
66 | + f2 = f3; | ||
67 | } | ||
68 | diff --git a/gcc/testsuite/gcc.target/microblaze/isa/fcmp3.c b/gcc/testsuite/gcc.target/microblaze/isa/fcmp3.c | ||
69 | index 8555974dda5..d6f80fb0ec3 100644 | ||
70 | --- a/gcc/testsuite/gcc.target/microblaze/isa/fcmp3.c | ||
71 | +++ b/gcc/testsuite/gcc.target/microblaze/isa/fcmp3.c | ||
72 | @@ -6,5 +6,5 @@ void float_func () | ||
73 | { | ||
74 | /* { dg-final { scan-assembler "fcmp\.(eq|ne)\tr(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1])\[^0-9]" } } */ | ||
75 | if (f2 == f3) | ||
76 | - print ("eq"); | ||
77 | + f1 = f2 + f3; | ||
78 | } | ||
79 | diff --git a/gcc/testsuite/gcc.target/microblaze/isa/fcmp4.c b/gcc/testsuite/gcc.target/microblaze/isa/fcmp4.c | ||
80 | index 79cc5f9dd8e..d1177249552 100644 | ||
81 | --- a/gcc/testsuite/gcc.target/microblaze/isa/fcmp4.c | ||
82 | +++ b/gcc/testsuite/gcc.target/microblaze/isa/fcmp4.c | ||
83 | @@ -5,5 +5,5 @@ void float_func(float f1, float f2, float f3) | ||
84 | /* { dg-final { scan-assembler "fcmp\.eq\tr(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1])\[^0-9]" } } */ | ||
85 | /* { dg-final { scan-assembler "fcmp\.le\tr(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1]),r(\[0-9]\|\[1-2]\[0-9]\|3\[0-1])\[^0-9]" } } */ | ||
86 | if(f1==f2 && f1<=f3) | ||
87 | - print ("f1 eq f2 && f1 le f3"); | ||
88 | + f2 = f3; | ||
89 | } | ||
90 | diff --git a/gcc/testsuite/gcc.target/microblaze/isa/nofcmp.c b/gcc/testsuite/gcc.target/microblaze/isa/nofcmp.c | ||
91 | index ebfb170ecee..75822977ef8 100644 | ||
92 | --- a/gcc/testsuite/gcc.target/microblaze/isa/nofcmp.c | ||
93 | +++ b/gcc/testsuite/gcc.target/microblaze/isa/nofcmp.c | ||
94 | @@ -5,17 +5,17 @@ volatile float f1, f2, f3; | ||
95 | void float_func () | ||
96 | { | ||
97 | /* { dg-final { scan-assembler-not "fcmp" } } */ | ||
98 | - if (f2 <= f3) | ||
99 | - print ("le"); | ||
100 | + if (f2 <= f3) | ||
101 | + f1 = f3; | ||
102 | else if (f2 == f3) | ||
103 | - print ("eq"); | ||
104 | + f1 = f3; | ||
105 | else if (f2 < f3) | ||
106 | - print ("lt"); | ||
107 | + f1 = f3; | ||
108 | else if (f2 > f3) | ||
109 | - print ("gt"); | ||
110 | + f1 = f3; | ||
111 | else if (f2 >= f3) | ||
112 | - print ("ge"); | ||
113 | + f1 = f3; | ||
114 | else if (f2 != f3) | ||
115 | - print ("ne"); | ||
116 | + f1 = f3; | ||
117 | |||
118 | } | ||
119 | diff --git a/gcc/testsuite/gcc.target/microblaze/isa/vanilla.c b/gcc/testsuite/gcc.target/microblaze/isa/vanilla.c | ||
120 | index 1d6ba807b12..532c035adfd 100644 | ||
121 | --- a/gcc/testsuite/gcc.target/microblaze/isa/vanilla.c | ||
122 | +++ b/gcc/testsuite/gcc.target/microblaze/isa/vanilla.c | ||
123 | @@ -74,16 +74,16 @@ void float_cmp_func () | ||
124 | { | ||
125 | /* { dg-final { scan-assembler-not "fcmp" } } */ | ||
126 | if (f2 <= f3) | ||
127 | - print ("le"); | ||
128 | + f1 = f3; | ||
129 | else if (f2 == f3) | ||
130 | - print ("eq"); | ||
131 | + f1 = f3; | ||
132 | else if (f2 < f3) | ||
133 | - print ("lt"); | ||
134 | + f1 = f3; | ||
135 | else if (f2 > f3) | ||
136 | - print ("gt"); | ||
137 | + f1 = f3; | ||
138 | else if (f2 >= f3) | ||
139 | - print ("ge"); | ||
140 | + f1 = f3; | ||
141 | else if (f2 != f3) | ||
142 | - print ("ne"); | ||
143 | + f1 = f3; | ||
144 | |||
145 | } | ||
146 | -- | ||
147 | 2.17.1 | ||
148 | |||