diff options
author | Alexey Neyman <stilor@att.net> | 2019-05-04 14:38:18 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-04 14:38:18 -0700 |
commit | 933b6bde3d41f98830e39cc92026d3459881084f (patch) | |
tree | 5f5889674b538d24def64fdf5440f60fb09c9b55 /packages/gcc | |
parent | b2151f1dba2b20c310adfe7198e461ec4469172b (diff) | |
parent | 32e945e764136a1b1d12fc6e606171b619f1b7a3 (diff) | |
download | crosstool-ng-933b6bde3d41f98830e39cc92026d3459881084f.tar.gz crosstool-ng-933b6bde3d41f98830e39cc92026d3459881084f.tar.bz2 crosstool-ng-933b6bde3d41f98830e39cc92026d3459881084f.zip |
Merge pull request #1185 from abrodkin/topic-glibc-for-arc
glibc: Add ARC support
Diffstat (limited to 'packages/gcc')
-rw-r--r-- | packages/gcc/8.3.0/0022-ARC-Update-fma-expansions.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/packages/gcc/8.3.0/0022-ARC-Update-fma-expansions.patch b/packages/gcc/8.3.0/0022-ARC-Update-fma-expansions.patch new file mode 100644 index 00000000..c2680d59 --- /dev/null +++ b/packages/gcc/8.3.0/0022-ARC-Update-fma-expansions.patch @@ -0,0 +1,71 @@ +From 5664ecf49828edb20f53937ab2e417ba173fc903 Mon Sep 17 00:00:00 2001 +From: claziss <claziss@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 13 Jun 2018 08:54:09 +0000 +Subject: [PATCH] [ARC] Update fma expansions. + +Accept at most a single constant for fma patterns. + +gcc/ +2018-03-21 Claudiu Zissulescu <claziss@synopsys.com> + + * config/arc/fpu.md (fmasf4): Force operand to register. + (fnmasf4): Likewise. + +gcc/testsuite +2018-03-21 Claudiu Zissulescu <claziss@synopsys.com> + + * gcc.target/arc/fma-1.c: New test. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@261543 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/config/arc/fpu.md | 6 ++++++ + gcc/testsuite/gcc.target/arc/fma-1.c | 13 +++++++++++++ + 2 files changed, 19 insertions(+) + create mode 100644 gcc/testsuite/gcc.target/arc/fma-1.c + +diff --git a/gcc/config/arc/fpu.md b/gcc/config/arc/fpu.md +index 5c56f76c679..66a4d91616f 100644 +--- a/gcc/config/arc/fpu.md ++++ b/gcc/config/arc/fpu.md +@@ -64,6 +64,9 @@ + tmp = gen_rtx_REG (SFmode, ACCL_REGNO); + emit_move_insn (tmp, operands[3]); + operands[3] = tmp; ++ if (!register_operand (operands[1], SFmode) ++ && !register_operand (operands[2], SFmode)) ++ operands[2] = force_reg (SFmode, operands[2]); + }") + + (define_expand "fnmasf4" +@@ -77,6 +80,9 @@ + tmp = gen_rtx_REG (SFmode, ACCL_REGNO); + emit_move_insn (tmp, operands[3]); + operands[3] = tmp; ++ if (!register_operand (operands[1], SFmode) ++ && !register_operand (operands[2], SFmode)) ++ operands[2] = force_reg (SFmode, operands[2]); + }") + + (define_insn "fmasf4_fpu" +diff --git a/gcc/testsuite/gcc.target/arc/fma-1.c b/gcc/testsuite/gcc.target/arc/fma-1.c +new file mode 100644 +index 00000000000..c195ad98127 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/arc/fma-1.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "FPU not available" { arc700 || arc6xx } } */ ++/* { dg-options "-s -std=gnu11 -O2 -frounding-math -mfpu=fpus_all" } */ ++ ++const float a, b = 7.8539818525e01; ++ ++/* Check if the fma operation is generated correctly. */ ++ ++int foo (void) ++{ ++ return (float)3.0 * b + a; ++} ++/* { dg-final { scan-assembler "fsmadd" } } */ +-- +2.16.2 + |