1*4882a593SmuzhiyunFrom a54561be5588ac9b16d3c20760b9b554168bb8aa Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Peter Seiderer <pseiderer@users.noreply.github.com>
3*4882a593SmuzhiyunDate: Thu, 31 Oct 2019 21:26:27 +0100
4*4882a593SmuzhiyunSubject: [PATCH] Pseiderer/add nios2 and xtensa 001 (#119)
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun* double-conversion: enable for nios2
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunNios2 supports double conversion, tested using qemu:
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun./main || echo "correct"
11*4882a593Smuzhiyuncorrect
12*4882a593Smuzhiyununame -a
13*4882a593SmuzhiyunLinux buildroot 4.19.16 #4 Sat Aug 3 14:46:48 CEST 2019 nios2 GNU/Linux
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunSolves build error
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunIn file included from double-conversion.h:42:0,
18*4882a593Smuzhiyun                 from number_decimalquantity.cpp:19:
19*4882a593Smuzhiyundouble-conversion-utils.h:119:2: error: #error Target architecture was not detected as supported by Double-Conversion.
20*4882a593Smuzhiyun #error Target architecture was not detected as supported by Double-Conversion.
21*4882a593Smuzhiyun
22*4882a593Smuzhiyundetected by buildroot autobuilders:
23*4882a593Smuzhiyunhttp://autobuild.buildroot.net/results/91e/91eaec34708d91f8a05af189243be0b7cabce31b/
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunPatch sent upstream: https://github.com/unicode-org/icu/pull/725
26*4882a593SmuzhiyunBug report: https://unicode-org.atlassian.net/browse/ICU-20751
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun[Bernd: Fixed path]
29*4882a593SmuzhiyunSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
30*4882a593Smuzhiyun[Added Changelog entry]
31*4882a593SmuzhiyunSigned-off-by: Peter Seiderer <ps.report@gmx.net>
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun* double-conversion: enable for xtensa
34*4882a593Smuzhiyun
35*4882a593SmuzhiyunSigned-off-by: Peter Seiderer <ps.report@gmx.net>
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun[Retrieved (dand backported) from:
38*4882a593Smuzhiyunhttps://github.com/google/double-conversion/commit/a54561be5588ac9b16d3c20760b9b554168bb8aa]
39*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
40*4882a593Smuzhiyun---
41*4882a593SmuzhiyunNote:
42*4882a593Smuzhiyun
43*4882a593SmuzhiyunDouble-conversion tested with:
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun        $ cat div.c
46*4882a593Smuzhiyundouble Div_double(double x, double y) { return x / y; }
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun        $ cat main.c
49*4882a593Smuzhiyundouble Div_double(double x, double y);
50*4882a593Smuzhiyun
51*4882a593Smuzhiyunint main(int argc, char** argv) {
52*4882a593Smuzhiyun  double result = Div_double(89255.0, 1e22);
53*4882a593Smuzhiyun  if (result == 89255e-22) {
54*4882a593Smuzhiyun    printf("correct result %e\n", result);
55*4882a593Smuzhiyun    return 1;
56*4882a593Smuzhiyun  } else {
57*4882a593Smuzhiyun    printf("wrong result %e\n", result);
58*4882a593Smuzhiyun    return 0;
59*4882a593Smuzhiyun  }
60*4882a593Smuzhiyun}
61*4882a593Smuzhiyun
62*4882a593SmuzhiyunTested for xtensa (using qemu_xtensa_lx60_defconfig plus BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE):
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun        $ ./host/bin/xtensa-buildroot-linux-uclibc-gcc -c div.c
65*4882a593Smuzhiyun        $ ./host/bin/xtensa-buildroot-linux-uclibc-gcc -c main.c
66*4882a593Smuzhiyun        $ ./host/bin/xtensa-buildroot-linux-uclibc-gcc -o main main.o div.o
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun        $ ./host/bin/qemu-xtensa -L staging main
69*4882a593Smuzhiyuncorrect result 8.925500e-18
70*4882a593Smuzhiyun---
71*4882a593Smuzhiyun Changelog                 | 4 ++++
72*4882a593Smuzhiyun double-conversion/utils.h | 3 ++-
73*4882a593Smuzhiyun 2 files changed, 6 insertions(+), 1 deletion(-)
74*4882a593Smuzhiyun
75*4882a593Smuzhiyundiff --git a/deps/double-conversion/double-conversion/utils.h b/deps/double-conversion/double-conversion/utils.h
76*4882a593Smuzhiyunindex 221467f..98ec28b 100644
77*4882a593Smuzhiyun--- a/deps/double-conversion/double-conversion/utils.h
78*4882a593Smuzhiyun+++ b/deps/double-conversion/double-conversion/utils.h
79*4882a593Smuzhiyun@@ -94,6 +94,7 @@ int main(int argc, char** argv) {
80*4882a593Smuzhiyun     defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \
81*4882a593Smuzhiyun     defined(__hppa__) || defined(__ia64__) || \
82*4882a593Smuzhiyun     defined(__mips__) || \
83*4882a593Smuzhiyun+    defined(__nios2__) || \
84*4882a593Smuzhiyun     defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
85*4882a593Smuzhiyun     defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
86*4882a593Smuzhiyun     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
87*4882a593Smuzhiyun@@ -102,7 +103,7 @@ int main(int argc, char** argv) {
88*4882a593Smuzhiyun     defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \
89*4882a593Smuzhiyun     defined(__riscv) || defined(__e2k__) || \
90*4882a593Smuzhiyun     defined(__or1k__) || defined(__arc__) || \
91*4882a593Smuzhiyun-    defined(__microblaze__)
92*4882a593Smuzhiyun+    defined(__microblaze__) || defined(__XTENSA__)
93*4882a593Smuzhiyun #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
94*4882a593Smuzhiyun #elif defined(__mc68000__)
95*4882a593Smuzhiyun #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS
96