summaryrefslogtreecommitdiffstats
path: root/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0022-Inline-Expansion-of-fsqrt-builtin.patch
diff options
context:
space:
mode:
authorNathan Rossi <nathan@nathanrossi.com>2017-12-13 16:58:34 -0800
committerManjukumar Matha <manjukumar.harthikote-matha@xilinx.com>2018-01-12 15:47:59 -0800
commit7935ef724cd7359ed97e6ae3d90ebc8f07dd7e1f (patch)
tree7c6faff836ccec34825a97fa7b7c49936e2bc4e2 /meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0022-Inline-Expansion-of-fsqrt-builtin.patch
parentfb15f2e401ed07f774ea89e0c91ecd927bf09235 (diff)
downloadmeta-xilinx-rocko.tar.gz
gcc-source: Add all Xilinx MicroBlaze GCC 7.2 patchesrocko
Add all the Xilinx patches for MicroBlaze, this includes a number of bug fixes, testsuite fixes, feature improvements and additional feature support. Important changes: * v10.0 - CPU support * v10.0 - Bit-field instruction support * v10.0 - 8-stage pipeline aka 'frequency' optimized * Size optimized implementations for shift instructions Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
Diffstat (limited to 'meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0022-Inline-Expansion-of-fsqrt-builtin.patch')
-rw-r--r--meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0022-Inline-Expansion-of-fsqrt-builtin.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0022-Inline-Expansion-of-fsqrt-builtin.patch b/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0022-Inline-Expansion-of-fsqrt-builtin.patch
new file mode 100644
index 00000000..6de17024
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0022-Inline-Expansion-of-fsqrt-builtin.patch
@@ -0,0 +1,64 @@
1From cf85f09a0fade1e7827828a3dc9a526c212f3be7 Mon Sep 17 00:00:00 2001
2From: Mahesh Bodapati <mbodapat@xilinx.com>
3Date: Sat, 26 Aug 2017 19:21:39 -0700
4Subject: [PATCH] Inline Expansion of fsqrt builtin
5
6Inline Expansion of fsqrt builtin. The changes are made in the patch for
7the inline expansion of the fsqrt builtin with fqrt instruction. The
8sqrt math function takes double as argument and return double as
9argument. The pattern is selected while expanding the unary op through
10expand_unop which passes DFmode and the DFmode pattern was not there
11returning zero. Thus the sqrt math function is not inlined and expanded.
12The pattern with DFmode argument is added. Also the source and
13destination argument is not same the DF through two different
14consecutive registers with lower 32 bit is the argument passed to sqrt
15and the higher 32 bit is zero. If the source and destinations are
16different the DFmode 64 bits registers is not set properly giving the
17problem in runtime. Such changes are taken care in the implementation of
18the pattern for DFmode for inline expansion of the sqrt.
19
20ChangeLog:
21
222015-06-16 Ajit Agarwal <ajitkum@xilinx.com>
23 Nagaraju Mekala <nagaraju.mekala@xilinx.com>
24
25 * config/microblaze/microblaze.md (sqrtdf2): New
26 pattern.
27
28Signed-off-by: Nagaraju Mekala <nagaraju.mekala@xilinx.com>
29Signed-off-by: Ajit Agarwal <ajitkum@xilinx.com>
30Signed-off-by: Mahesh Bodapati <mbodapat@xilinx.com>
31Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
32Upstream-Status: Pending
33---
34 gcc/config/microblaze/microblaze.md | 14 ++++++++++++++
35 1 file changed, 14 insertions(+)
36
37diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md
38index a3954a24b6..13f8803428 100644
39--- a/gcc/config/microblaze/microblaze.md
40+++ b/gcc/config/microblaze/microblaze.md
41@@ -449,6 +449,20 @@
42 (set_attr "mode" "SF")
43 (set_attr "length" "4")])
44
45+(define_insn "sqrtdf2"
46+ [(set (match_operand:DF 0 "register_operand" "=d")
47+ (sqrt:DF (match_operand:DF 1 "register_operand" "dG")))]
48+ "TARGET_HARD_FLOAT && TARGET_FLOAT_SQRT"
49+ {
50+ if (REGNO (operands[0]) == REGNO (operands[1]))
51+ return "fsqrt\t%0,%1";
52+ else
53+ return "fsqrt\t%0,%1\n\taddk\t%D0,%D1,r0";
54+ }
55+ [(set_attr "type" "fsqrt")
56+ (set_attr "mode" "SF")
57+ (set_attr "length" "4")])
58+
59 (define_insn "fix_truncsfsi2"
60 [(set (match_operand:SI 0 "register_operand" "=d")
61 (fix:SI (match_operand:SF 1 "register_operand" "d")))]
62--
632.14.2
64