From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 15543 invoked from network); 16 Sep 2020 20:49:49 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 16 Sep 2020 20:49:49 -0000 Received: (qmail 28019 invoked by uid 550); 16 Sep 2020 20:49:46 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 28001 invoked from network); 16 Sep 2020 20:49:45 -0000 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1600289385; h=Content-Type: MIME-Version: Message-ID: Date: Subject: In-Reply-To: References: Cc: To: From: Sender; bh=/tzdJClCAi4F7o2NAgn1i6WlE18lVMvpaz5rBUgkBa8=; b=jt/1YxW5TmnzUTgLorayHiJWT4g5rUfj9p/EIKOrXsc+sTOE8blPy9+2ON/OZIAl20PxVJ6I Ii1oixaeUVVJTNVFtzzBu1lQ8Su81hRSQKY0rAYrsH4gj8v0AegwWMg4eHMO8D3VxPWgkdT0 tNjtSCduZPQuElljWisMcg7T/Ik= X-Mailgun-Sending-Ip: 104.130.122.29 X-Mailgun-Sid: WyI1MGQzMyIsICJtdXNsQGxpc3RzLm9wZW53YWxsLmNvbSIsICJiZTllNGEiXQ== Sender: sidneym=codeaurora.org@mg.codeaurora.org DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 18AA5C433F1 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=sidneym@codeaurora.org From: To: "'Szabolcs Nagy'" Cc: "'Rich Felker'" , References: <20200430235109.GJ21576@brightrain.aerifal.cx> <8c3611dcf8e2c59885fecd9ebdc70d79@codeaurora.org> <20200506005929.GG21576@brightrain.aerifal.cx> <1a0301d6458e$b4264d90$1c72e8b0$@codeaurora.org> <20200618214247.GD2048759@port70.net> <096001d64684$d322d0f0$796872d0$@codeaurora.org> <20200619224624.GO6430@brightrain.aerifal.cx> <0a7201d646aa$921b84f0$b6528ed0$@codeaurora.org> <20200620032032.GR6430@brightrain.aerifal.cx> <078f01d65edc$80e892f0$82b9b8d0$@codeaurora.org> <20200723215603.GA755469@port70.net> In-Reply-To: Date: Wed, 16 Sep 2020 15:49:28 -0500 Message-ID: <110801d68c6a$dfe3f950$9fabebf0$@codeaurora.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_1109_01D68C40.F70E6680" X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQITbC+6xE1Q7TE9kqvPqv9uwQJ0TQJmvdBAAVfRAeoCQt23wgIW6VRJAX1stKkBoLffngKKfuZmAh2x56MC/BF0FgHdLCtsAuz0mKeoNMbdQA== Content-Language: en-us Subject: RE: [musl] Hexagon DSP support This is a multipart message in MIME format. ------=_NextPart_000_1109_01D68C40.F70E6680 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > -----Original Message----- > From: sidneym@codeaurora.org > Sent: Friday, July 24, 2020 12:50 PM > To: 'Szabolcs Nagy' > Cc: 'Rich Felker' ; 'musl@lists.openwall.com' > > Subject: RE: [musl] Hexagon DSP support > > > > > -----Original Message----- > > From: Szabolcs Nagy > > Sent: Thursday, July 23, 2020 4:56 PM > > To: sidneym@codeaurora.org > > Cc: 'Rich Felker' ; musl@lists.openwall.com > > Subject: Re: [musl] Hexagon DSP support > > > > * sidneym@codeaurora.org [2020-07-20 > > 16:26:58 -0500]: > > > I removed fma/fmal/fmax/fmin/fabs from compiler-rt-builtins, > > > https://reviews.llvm.org/D82263 > > > The comparison with musl can be found here: > > > https://github.com/quic/musl/compare/hexagon but I've also attached > > > the patch. > > > > > > An assert in clang when building both musl and libc-test for hexagon > > > was fixed by, https://reviews.llvm.org/D80952 prior to this change > > > -frounding-math had to be used. > > > > > > The test-results are also attached. Everything is built with the > > > tip-of-tree llvm so sometimes results vary but these are the results > > > I got from this morning's clone. The only notable difference in the > > > results would be that both fma and fmal fail and this is because of > > > the compiler-rt change. I didn't add fma to musl because it require > > > more complex assembly, along the lines you saw in an earlier version > > > with > > sqrt. > > > > > > the fma and sqrt failures are still not fully explained, e.g. this looks wrong: > > > > src/math/special/fma.h:42: RN fma(0x1p+0,0x1p+0,-0x1p-1074) want > > 0x1p+0 got -0x1.fffffp-43 ulperr -4503599627370496.000 = -0x1p+52 + > > 0x0p+0 > > > > the only target specific bit in fma is a_clz_64 so i would check that. > > > > e.g. a_clz_64(1ULL << 42) should give 21 (this computation happens > > during the fma test case above). > > Hexagon didn't have a_clz_64 implemented however I added this morning it > and noticed no differences. I will update the patch with that routine > included. > > I did notice a compiler regression in how it compiled fma and have asked a > compiler person to take a look. An older version of our internally maintained > compiler does produce the expected results for the values I used but later > versions do not. Unfortunately changing optimization levels will produce > different results as well. I've attached updated test results and patch. The patch doesn't change much other than adding the above mentioned a_clz_64. The only other change was an update to pthread_arch.h for an api update so hexagon conforms with the rest of musl. Between updates to llvm and musl both fma and sqrt issues are resolved provided I compile the library without optimization enabled. No new tests fail. I guess I also need to know what the thoughts are about adding hexagon to the mainline base. There are no issues adding from this end. Thanks, ------=_NextPart_000_1109_01D68C40.F70E6680 Content-Type: application/octet-stream; name="add-hexagon.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="add-hexagon.diff" diff --git a/arch/hexagon/atomic_arch.h b/arch/hexagon/atomic_arch.h=0A= new file mode 100644=0A= index 00000000..ede55956=0A= --- /dev/null=0A= +++ b/arch/hexagon/atomic_arch.h=0A= @@ -0,0 +1,194 @@=0A= +#define a_ctz_32 a_ctz_32=0A= +static inline int a_ctz_32(unsigned long x)=0A= +{=0A= + __asm__(=0A= + "%0 =3D ct0(%0)\n\t"=0A= + : "+r"(x));=0A= + return x;=0A= +}=0A= +=0A= +#define a_ctz_64 a_ctz_64=0A= +static inline int a_ctz_64(uint64_t x)=0A= +{=0A= + int count;=0A= + __asm__(=0A= + "%0 =3D ct0(%1)\n\t"=0A= + : "=3Dr"(count) : "r"(x));=0A= + return count;=0A= +}=0A= +#define a_clz_64 a_clz_64=0A= +static inline int a_clz_64(uint64_t x)=0A= +{=0A= + int count;=0A= + __asm__(=0A= + "%1 =3D brev(%1)\n\t"=0A= + "%0 =3D ct0(%1)\n\t"=0A= + : "=3Dr"(count) : "r"(x));=0A= + return count;=0A= +}=0A= +=0A= +#define a_cas a_cas=0A= +static inline int a_cas(volatile int *p, int t, int s)=0A= +{=0A= + int dummy;=0A= + __asm__ __volatile__(=0A= + "1: %0 =3D memw_locked(%1)\n\t"=0A= + " { p0 =3D cmp.eq(%0, %2)\n\t"=0A= + " if (!p0.new) jump:nt 2f }\n\t"=0A= + " memw_locked(%1, p0) =3D %3\n\t"=0A= + " if (!p0) jump 1b\n\t"=0A= + "2: \n\t"=0A= + : "=3D&r"(dummy)=0A= + : "r"(p), "r"(t), "r"(s)=0A= + : "p0", "memory" );=0A= + return dummy;=0A= +}=0A= +=0A= +#define a_cas_p a_cas_p=0A= +static inline void *a_cas_p(volatile void *p, void *t, void *s)=0A= +{=0A= + return (void *)a_cas(p, (int)t, (int)s);=0A= +}=0A= +=0A= +#define a_swap a_swap=0A= +static inline int a_swap(volatile int *x, int v)=0A= +{=0A= + int old, dummy;=0A= + __asm__ __volatile__(=0A= + " %1 =3D %3\n\t"=0A= + "1: %0 =3D memw_locked(%2)\n\t"=0A= + " memw_locked(%2, p0) =3D %1\n\t"=0A= + " if (!p0) jump 1b\n\t"=0A= + : "=3D&r"(old), "=3D&r"(dummy)=0A= + : "r"(x), "r"(v)=0A= + : "p0", "memory" );=0A= + return old;=0A= +}=0A= +=0A= +#define a_fetch_add a_fetch_add=0A= +static inline int a_fetch_add(volatile int *x, int v)=0A= +{=0A= + int old, dummy;=0A= + __asm__ __volatile__(=0A= + "1: %0 =3D memw_locked(%2)\n\t"=0A= + " %1 =3D add(%0, %3)\n\t"=0A= + " memw_locked(%2, p0) =3D %1\n\t"=0A= + " if (!p0) jump 1b\n\t"=0A= + : "=3D&r"(old), "=3D&r"(dummy)=0A= + : "r"(x), "r"(v)=0A= + : "p0", "memory" );=0A= + return old;=0A= +}=0A= +=0A= +#define a_inc a_inc=0A= +static inline void a_inc(volatile int *x)=0A= +{=0A= + a_fetch_add(x, 1);=0A= +}=0A= +=0A= +#define a_dec a_dec=0A= +static inline void a_dec(volatile int *x)=0A= +{=0A= + int dummy;=0A= + __asm__ __volatile__(=0A= + "1: %0 =3D memw_locked(%1)\n\t"=0A= + " %0 =3D add(%0, #-1)\n\t"=0A= + " memw_locked(%1, p0) =3D %0\n\t"=0A= + " if (!p0) jump 1b\n\t"=0A= + : "=3D&r"(dummy)=0A= + : "r"(x)=0A= + : "p0", "memory" );=0A= +}=0A= +=0A= +#define a_store a_store=0A= +static inline void a_store(volatile int *p, int x)=0A= +{=0A= + int dummy;=0A= + __asm__ __volatile__(=0A= + "1: %0 =3D memw_locked(%1)\n\t"=0A= + " memw_locked(%1, p0) =3D %2\n\t"=0A= + " if (!p0) jump 1b\n\t"=0A= + : "=3D&r"(dummy)=0A= + : "r"(p), "r"(x)=0A= + : "p0", "memory" );=0A= +}=0A= +=0A= +#define a_barrier a_barrier=0A= +static inline void a_barrier()=0A= +{=0A= + __asm__ __volatile__ ("barrier" ::: "memory");=0A= +}=0A= +#define a_spin a_spin=0A= +static inline void a_spin()=0A= +{=0A= + __asm__ __volatile__ ("pause(#255)" :::);=0A= +}=0A= +=0A= +#define a_crash a_crash=0A= +static inline void a_crash()=0A= +{=0A= + *(volatile char *)0=3D0;=0A= +}=0A= +=0A= +#define a_and a_and=0A= +static inline void a_and(volatile int *p, int v)=0A= +{=0A= + int dummy;=0A= + __asm__ __volatile__(=0A= + "1: %0 =3D memw_locked(%1)\n\t"=0A= + " %0 =3D and(%0, %2)\n\t"=0A= + " memw_locked(%1, p0) =3D %0\n\t"=0A= + " if (!p0) jump 1b\n\t"=0A= + : "=3D&r"(dummy)=0A= + : "r"(p), "r"(v)=0A= + : "p0", "memory" );=0A= +}=0A= +=0A= +#define a_or a_or=0A= +static inline void a_or(volatile int *p, int v)=0A= +{=0A= + int dummy;=0A= + __asm__ __volatile__(=0A= + "1: %0 =3D memw_locked(%1)\n\t"=0A= + " %0 =3D or(%0, %2)\n\t"=0A= + " memw_locked(%1, p0) =3D %0\n\t"=0A= + " if (!p0) jump 1b\n\t"=0A= + : "=3D&r"(dummy)=0A= + : "r"(p), "r"(v)=0A= + : "p0", "memory" );=0A= +}=0A= +=0A= +#define a_or_l a_or_l=0A= +static inline void a_or_l(volatile void *p, long v)=0A= +{=0A= + a_or(p, v);=0A= +}=0A= +=0A= +#define a_and_64 a_and_64=0A= +static inline void a_and_64(volatile uint64_t *p, uint64_t v)=0A= +{=0A= + uint64_t dummy;=0A= + __asm__ __volatile__(=0A= + "1: %0 =3D memd_locked(%1)\n\t"=0A= + " %0 =3D and(%0, %2)\n\t"=0A= + " memd_locked(%1, p0) =3D %0\n\t"=0A= + " if (!p0) jump 1b\n\t"=0A= + : "=3D&r"(dummy)=0A= + : "r"(p), "r"(v)=0A= + : "p0", "memory" );=0A= +}=0A= +=0A= +#define a_or_64 a_or_64=0A= +static inline void a_or_64(volatile uint64_t *p, uint64_t v)=0A= +{=0A= + uint64_t dummy;=0A= + __asm__ __volatile__(=0A= + "1: %0 =3D memd_locked(%1)\n\t"=0A= + " %0 =3D or(%0, %2)\n\t"=0A= + " memd_locked(%1, p0) =3D %0\n\t"=0A= + " if (!p0) jump 1b\n\t"=0A= + : "=3D&r"(dummy)=0A= + : "r"(p), "r"(v)=0A= + : "p0", "memory" );=0A= +}=0A= +=0A= diff --git a/arch/hexagon/bits/alltypes.h.in = b/arch/hexagon/bits/alltypes.h.in=0A= new file mode 100644=0A= index 00000000..9d770c7e=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/alltypes.h.in=0A= @@ -0,0 +1,26 @@=0A= +#define _Addr int=0A= +#define _Int64 long long=0A= +#define _Reg int=0A= +=0A= +#define __BYTE_ORDER 1234=0A= +#define __LONG_MAX 0x7fffffffL=0A= +=0A= +#ifndef __cplusplus=0A= +#ifdef __WCHAR_TYPE__=0A= +TYPEDEF __WCHAR_TYPE__ wchar_t;=0A= +#else=0A= +TYPEDEF long wchar_t;=0A= +#endif=0A= +#endif=0A= +=0A= +TYPEDEF float float_t;=0A= +TYPEDEF double double_t;=0A= +=0A= +#if !defined(__cplusplus)=0A= +TYPEDEF struct { _Alignas(8) long long __ll; long double __ld; } = max_align_t;=0A= +#elif defined(__GNUC__)=0A= +TYPEDEF struct { __attribute__((__aligned__(8))) long long __ll; long = double __ld; } max_align_t;=0A= +#else=0A= +TYPEDEF struct { alignas(8) long long __ll; long double __ld; } = max_align_t;=0A= +#endif=0A= +=0A= diff --git a/arch/hexagon/bits/fenv.h b/arch/hexagon/bits/fenv.h=0A= new file mode 100644=0A= index 00000000..d3349306=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/fenv.h=0A= @@ -0,0 +1,20 @@=0A= +#define FE_INVALID (1 << 1)=0A= +#define FE_DIVBYZERO (1 << 2)=0A= +#define FE_OVERFLOW (1 << 3)=0A= +#define FE_UNDERFLOW (1 << 4)=0A= +#define FE_INEXACT (1 << 5)=0A= +#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \=0A= + FE_OVERFLOW | FE_UNDERFLOW)=0A= +=0A= +#define FE_TONEAREST 0x00=0A= +#define FE_TOWARDZERO 0x01=0A= +#define FE_DOWNWARD 0x02=0A= +#define FE_UPWARD 0x03=0A= +=0A= +typedef unsigned long fexcept_t;=0A= +=0A= +typedef struct {=0A= + unsigned long __cw;=0A= +} fenv_t;=0A= +=0A= +#define FE_DFL_ENV ((const fenv_t *) -1)=0A= diff --git a/arch/hexagon/bits/float.h b/arch/hexagon/bits/float.h=0A= new file mode 100644=0A= index 00000000..c4a655e7=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/float.h=0A= @@ -0,0 +1,16 @@=0A= +#define FLT_EVAL_METHOD 0=0A= +=0A= +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L=0A= +#define LDBL_MIN 2.22507385850720138309e-308L=0A= +#define LDBL_MAX 1.79769313486231570815e+308L=0A= +#define LDBL_EPSILON 2.22044604925031308085e-16L=0A= +=0A= +#define LDBL_MANT_DIG 53=0A= +#define LDBL_MIN_EXP (-1021)=0A= +#define LDBL_MAX_EXP 1024=0A= +=0A= +#define LDBL_DIG 15=0A= +#define LDBL_MIN_10_EXP (-307)=0A= +#define LDBL_MAX_10_EXP 308=0A= +=0A= +#define DECIMAL_DIG 17=0A= diff --git a/arch/hexagon/bits/ipcstat.h b/arch/hexagon/bits/ipcstat.h=0A= new file mode 100644=0A= index 00000000..4f4fcb0c=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/ipcstat.h=0A= @@ -0,0 +1 @@=0A= +#define IPC_STAT 0x102=0A= diff --git a/arch/hexagon/bits/msg.h b/arch/hexagon/bits/msg.h=0A= new file mode 100644=0A= index 00000000..7bbbb2bf=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/msg.h=0A= @@ -0,0 +1,18 @@=0A= +struct msqid_ds {=0A= + struct ipc_perm msg_perm;=0A= + unsigned long __msg_stime_lo;=0A= + unsigned long __msg_stime_hi;=0A= + unsigned long __msg_rtime_lo;=0A= + unsigned long __msg_rtime_hi;=0A= + unsigned long __msg_ctime_lo;=0A= + unsigned long __msg_ctime_hi;=0A= + unsigned long msg_cbytes;=0A= + msgqnum_t msg_qnum;=0A= + msglen_t msg_qbytes;=0A= + pid_t msg_lspid;=0A= + pid_t msg_lrpid;=0A= + unsigned long __unused[2];=0A= + time_t msg_stime;=0A= + time_t msg_rtime;=0A= + time_t msg_ctime;=0A= +};=0A= diff --git a/arch/hexagon/bits/posix.h b/arch/hexagon/bits/posix.h=0A= new file mode 100644=0A= index 00000000..30a38714=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/posix.h=0A= @@ -0,0 +1,2 @@=0A= +#define _POSIX_V6_ILP32_OFFBIG 1=0A= +#define _POSIX_V7_ILP32_OFFBIG 1=0A= diff --git a/arch/hexagon/bits/sem.h b/arch/hexagon/bits/sem.h=0A= new file mode 100644=0A= index 00000000..65661542=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/sem.h=0A= @@ -0,0 +1,13 @@=0A= +struct semid_ds {=0A= + struct ipc_perm sem_perm;=0A= + unsigned long __sem_otime_lo;=0A= + unsigned long __sem_otime_hi;=0A= + unsigned long __sem_ctime_lo;=0A= + unsigned long __sem_ctime_hi;=0A= + unsigned short sem_nsems;=0A= + char __sem_nsems_pad[sizeof(long)-sizeof(short)];=0A= + long __unused3;=0A= + long __unused4;=0A= + time_t sem_otime;=0A= + time_t sem_ctime;=0A= +};=0A= diff --git a/arch/hexagon/bits/setjmp.h b/arch/hexagon/bits/setjmp.h=0A= new file mode 100644=0A= index 00000000..5ee5e49f=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/setjmp.h=0A= @@ -0,0 +1,4 @@=0A= +=0A= +typedef struct {=0A= + long regs[16];=0A= +} __jmp_buf[1] __attribute__((aligned (8)));=0A= diff --git a/arch/hexagon/bits/shm.h b/arch/hexagon/bits/shm.h=0A= new file mode 100644=0A= index 00000000..725fb469=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/shm.h=0A= @@ -0,0 +1,31 @@=0A= +#define SHMLBA 4096=0A= +=0A= +struct shmid_ds {=0A= + struct ipc_perm shm_perm;=0A= + size_t shm_segsz;=0A= + unsigned long __shm_atime_lo;=0A= + unsigned long __shm_atime_hi;=0A= + unsigned long __shm_dtime_lo;=0A= + unsigned long __shm_dtime_hi;=0A= + unsigned long __shm_ctime_lo;=0A= + unsigned long __shm_ctime_hi;=0A= + pid_t shm_cpid;=0A= + pid_t shm_lpid;=0A= + unsigned long shm_nattch;=0A= + unsigned long __pad1;=0A= + unsigned long __pad2;=0A= + unsigned long __pad3;=0A= + time_t shm_atime;=0A= + time_t shm_dtime;=0A= + time_t shm_ctime;=0A= +};=0A= +=0A= +struct shminfo {=0A= + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];=0A= +};=0A= +=0A= +struct shm_info {=0A= + int __used_ids;=0A= + unsigned long shm_tot, shm_rss, shm_swp;=0A= + unsigned long __swap_attempts, __swap_successes;=0A= +};=0A= diff --git a/arch/hexagon/bits/signal.h b/arch/hexagon/bits/signal.h=0A= new file mode 100644=0A= index 00000000..7a3b36d0=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/signal.h=0A= @@ -0,0 +1,105 @@=0A= +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \=0A= + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || = defined(_BSD_SOURCE)=0A= +=0A= +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || = defined(_BSD_SOURCE)=0A= +#define MINSIGSTKSZ 2048=0A= +#define SIGSTKSZ 8192=0A= +#endif=0A= +=0A= +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)=0A= +typedef int greg_t, gregset_t[18];=0A= +typedef struct sigcontext=0A= +{=0A= + unsigned long r0, r1, r2, r3;=0A= + unsigned long r4, r5, r6, r7;=0A= + unsigned long r8, r9, r10, r11;=0A= + unsigned long r12, r13, r14, r15;=0A= + unsigned long r16, r17, r18, r19;=0A= + unsigned long r20, r21, r22, r23;=0A= + unsigned long r24, r25, r26, r27;=0A= + unsigned long r28, r29, r30, r31;=0A= + unsigned long sa0;=0A= + unsigned long lc0;=0A= + unsigned long sa1;=0A= + unsigned long lc1;=0A= + unsigned long m0;=0A= + unsigned long m1;=0A= + unsigned long usr;=0A= + unsigned long p3_0;=0A= + unsigned long gp;=0A= + unsigned long ugp;=0A= + unsigned long pc;=0A= + unsigned long cause;=0A= + unsigned long badva;=0A= + unsigned long pad1;=0A= + unsigned long pad2;=0A= + unsigned long pad3;=0A= +} __attribute__((__aligned__(8))) mcontext_t;=0A= +#else=0A= +typedef struct {=0A= + unsigned long __regs[48];=0A= +} __attribute__((__aligned__(8))) mcontext_t;=0A= +#endif=0A= +=0A= +struct sigaltstack {=0A= + void *ss_sp;=0A= + int ss_flags;=0A= + size_t ss_size;=0A= +};=0A= +=0A= +typedef struct __ucontext {=0A= + unsigned long uc_flags;=0A= + struct __ucontext *uc_link;=0A= + stack_t uc_stack;=0A= + mcontext_t uc_mcontext;=0A= + sigset_t uc_sigmask;=0A= +// unsigned long long uc_regspace[64];=0A= +} ucontext_t;=0A= +=0A= +#define SA_NOCLDSTOP 1=0A= +#define SA_NOCLDWAIT 2=0A= +#define SA_SIGINFO 4=0A= +#define SA_ONSTACK 0x08000000=0A= +#define SA_RESTART 0x10000000=0A= +#define SA_NODEFER 0x40000000=0A= +#define SA_RESETHAND 0x80000000=0A= +#define SA_RESTORER 0x04000000=0A= +=0A= +#endif=0A= +=0A= +#define SIGHUP 1=0A= +#define SIGINT 2=0A= +#define SIGQUIT 3=0A= +#define SIGILL 4=0A= +#define SIGTRAP 5=0A= +#define SIGABRT 6=0A= +#define SIGIOT SIGABRT=0A= +#define SIGBUS 7=0A= +#define SIGFPE 8=0A= +#define SIGKILL 9=0A= +#define SIGUSR1 10=0A= +#define SIGSEGV 11=0A= +#define SIGUSR2 12=0A= +#define SIGPIPE 13=0A= +#define SIGALRM 14=0A= +#define SIGTERM 15=0A= +#define SIGSTKFLT 16=0A= +#define SIGCHLD 17=0A= +#define SIGCONT 18=0A= +#define SIGSTOP 19=0A= +#define SIGTSTP 20=0A= +#define SIGTTIN 21=0A= +#define SIGTTOU 22=0A= +#define SIGURG 23=0A= +#define SIGXCPU 24=0A= +#define SIGXFSZ 25=0A= +#define SIGVTALRM 26=0A= +#define SIGPROF 27=0A= +#define SIGWINCH 28=0A= +#define SIGIO 29=0A= +#define SIGPOLL 29=0A= +#define SIGPWR 30=0A= +#define SIGSYS 31=0A= +#define SIGUNUSED SIGSYS=0A= +=0A= +#define _NSIG 65=0A= diff --git a/arch/hexagon/bits/stat.h b/arch/hexagon/bits/stat.h=0A= new file mode 100644=0A= index 00000000..55e81fd9=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/stat.h=0A= @@ -0,0 +1,20 @@=0A= +/* copied from kernel definition, but with padding replaced=0A= + * by the corresponding correctly-sized userspace types. */=0A= +struct stat {=0A= + dev_t st_dev;=0A= + ino_t st_ino;=0A= + mode_t st_mode;=0A= + nlink_t st_nlink;=0A= + uid_t st_uid;=0A= + gid_t st_gid;=0A= + dev_t st_rdev;=0A= + unsigned long __pad;=0A= + off_t st_size;=0A= + blksize_t st_blksize;=0A= + int __pad2;=0A= + blkcnt_t st_blocks;=0A= + struct timespec st_atim;=0A= + struct timespec st_mtim;=0A= + struct timespec st_ctim;=0A= + unsigned __unused[2];=0A= +};=0A= diff --git a/arch/hexagon/bits/stdint.h b/arch/hexagon/bits/stdint.h=0A= new file mode 100644=0A= index 00000000..d1b27121=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/stdint.h=0A= @@ -0,0 +1,20 @@=0A= +typedef int32_t int_fast16_t;=0A= +typedef int32_t int_fast32_t;=0A= +typedef uint32_t uint_fast16_t;=0A= +typedef uint32_t uint_fast32_t;=0A= +=0A= +#define INT_FAST16_MIN INT32_MIN=0A= +#define INT_FAST32_MIN INT32_MIN=0A= +=0A= +#define INT_FAST16_MAX INT32_MAX=0A= +#define INT_FAST32_MAX INT32_MAX=0A= +=0A= +#define UINT_FAST16_MAX UINT32_MAX=0A= +#define UINT_FAST32_MAX UINT32_MAX=0A= +=0A= +#define INTPTR_MIN INT32_MIN=0A= +#define INTPTR_MAX INT32_MAX=0A= +#define UINTPTR_MAX UINT32_MAX=0A= +#define PTRDIFF_MIN INT32_MIN=0A= +#define PTRDIFF_MAX INT32_MAX=0A= +#define SIZE_MAX UINT32_MAX=0A= diff --git a/arch/hexagon/bits/syscall.h.in = b/arch/hexagon/bits/syscall.h.in=0A= new file mode 100644=0A= index 00000000..77ca3fa0=0A= --- /dev/null=0A= +++ b/arch/hexagon/bits/syscall.h.in=0A= @@ -0,0 +1,317 @@=0A= +#define __NR_io_setup 0=0A= +#define __NR_io_destroy 1=0A= +#define __NR_io_submit 2=0A= +#define __NR_io_cancel 3=0A= +#define __NR_io_getevents 4=0A= +#define __NR_setxattr 5=0A= +#define __NR_lsetxattr 6=0A= +#define __NR_fsetxattr 7=0A= +#define __NR_getxattr 8=0A= +#define __NR_lgetxattr 9=0A= +#define __NR_fgetxattr 10=0A= +#define __NR_listxattr 11=0A= +#define __NR_llistxattr 12=0A= +#define __NR_flistxattr 13=0A= +#define __NR_removexattr 14=0A= +#define __NR_lremovexattr 15=0A= +#define __NR_fremovexattr 16=0A= +#define __NR_getcwd 17=0A= +#define __NR_lookup_dcookie 18=0A= +#define __NR_eventfd2 19=0A= +#define __NR_epoll_create1 20=0A= +#define __NR_epoll_ctl 21=0A= +#define __NR_epoll_pwait 22=0A= +#define __NR_dup 23=0A= +#define __NR_dup3 24=0A= +#define __NR3264_fcntl 25=0A= +#define __NR_inotify_init1 26=0A= +#define __NR_inotify_add_watch 27=0A= +#define __NR_inotify_rm_watch 28=0A= +#define __NR_ioctl 29=0A= +#define __NR_ioprio_set 30=0A= +#define __NR_ioprio_get 31=0A= +#define __NR_flock 32=0A= +#define __NR_mknodat 33=0A= +#define __NR_mkdirat 34=0A= +#define __NR_unlinkat 35=0A= +#define __NR_symlinkat 36=0A= +#define __NR_linkat 37=0A= +#define __NR_renameat 38=0A= +#define __NR_umount2 39=0A= +#define __NR_mount 40=0A= +#define __NR_pivot_root 41=0A= +#define __NR_nfsservctl 42=0A= +#define __NR3264_statfs 43=0A= +#define __NR3264_fstatfs 44=0A= +#define __NR3264_truncate 45=0A= +#define __NR3264_ftruncate 46=0A= +#define __NR_fallocate 47=0A= +#define __NR_faccessat 48=0A= +#define __NR_chdir 49=0A= +#define __NR_fchdir 50=0A= +#define __NR_chroot 51=0A= +#define __NR_fchmod 52=0A= +#define __NR_fchmodat 53=0A= +#define __NR_fchownat 54=0A= +#define __NR_fchown 55=0A= +#define __NR_openat 56=0A= +#define __NR_close 57=0A= +#define __NR_vhangup 58=0A= +#define __NR_pipe2 59=0A= +#define __NR_quotactl 60=0A= +#define __NR_getdents64 61=0A= +#define __NR3264_lseek 62=0A= +#define __NR_read 63=0A= +#define __NR_write 64=0A= +#define __NR_readv 65=0A= +#define __NR_writev 66=0A= +#define __NR_pread64 67=0A= +#define __NR_pwrite64 68=0A= +#define __NR_preadv 69=0A= +#define __NR_pwritev 70=0A= +#define __NR3264_sendfile 71=0A= +#define __NR_pselect6 72=0A= +#define __NR_ppoll 73=0A= +#define __NR_signalfd4 74=0A= +#define __NR_vmsplice 75=0A= +#define __NR_splice 76=0A= +#define __NR_tee 77=0A= +#define __NR_readlinkat 78=0A= +#define __NR3264_fstatat 79=0A= +#define __NR3264_fstat 80=0A= +#define __NR_sync 81=0A= +#define __NR_fsync 82=0A= +#define __NR_fdatasync 83=0A= +#define __NR_sync_file_range2 84=0A= +#define __NR_sync_file_range 84=0A= +#define __NR_timerfd_create 85=0A= +#define __NR_timerfd_settime 86=0A= +#define __NR_timerfd_gettime 87=0A= +#define __NR_utimensat 88=0A= +#define __NR_acct 89=0A= +#define __NR_capget 90=0A= +#define __NR_capset 91=0A= +#define __NR_personality 92=0A= +#define __NR_exit 93=0A= +#define __NR_exit_group 94=0A= +#define __NR_waitid 95=0A= +#define __NR_set_tid_address 96=0A= +#define __NR_unshare 97=0A= +#define __NR_futex 98=0A= +#define __NR_set_robust_list 99=0A= +#define __NR_get_robust_list 100=0A= +#define __NR_nanosleep 101=0A= +#define __NR_getitimer 102=0A= +#define __NR_setitimer 103=0A= +#define __NR_kexec_load 104=0A= +#define __NR_init_module 105=0A= +#define __NR_delete_module 106=0A= +#define __NR_timer_create 107=0A= +#define __NR_timer_gettime 108=0A= +#define __NR_timer_getoverrun 109=0A= +#define __NR_timer_settime 110=0A= +#define __NR_timer_delete 111=0A= +#define __NR_clock_settime 112=0A= +#define __NR_clock_gettime 113=0A= +#define __NR_clock_getres 114=0A= +#define __NR_clock_nanosleep 115=0A= +#define __NR_syslog 116=0A= +#define __NR_ptrace 117=0A= +#define __NR_sched_setparam 118=0A= +#define __NR_sched_setscheduler 119=0A= +#define __NR_sched_getscheduler 120=0A= +#define __NR_sched_getparam 121=0A= +#define __NR_sched_setaffinity 122=0A= +#define __NR_sched_getaffinity 123=0A= +#define __NR_sched_yield 124=0A= +#define __NR_sched_get_priority_max 125=0A= +#define __NR_sched_get_priority_min 126=0A= +#define __NR_sched_rr_get_interval 127=0A= +#define __NR_restart_syscall 128=0A= +#define __NR_kill 129=0A= +#define __NR_tkill 130=0A= +#define __NR_tgkill 131=0A= +#define __NR_sigaltstack 132=0A= +#define __NR_rt_sigsuspend 133=0A= +#define __NR_rt_sigaction 134=0A= +#define __NR_rt_sigprocmask 135=0A= +#define __NR_rt_sigpending 136=0A= +#define __NR_rt_sigtimedwait 137=0A= +#define __NR_rt_sigqueueinfo 138=0A= +#define __NR_rt_sigreturn 139=0A= +#define __NR_setpriority 140=0A= +#define __NR_getpriority 141=0A= +#define __NR_reboot 142=0A= +#define __NR_setregid 143=0A= +#define __NR_setgid 144=0A= +#define __NR_setreuid 145=0A= +#define __NR_setuid 146=0A= +#define __NR_setresuid 147=0A= +#define __NR_getresuid 148=0A= +#define __NR_setresgid 149=0A= +#define __NR_getresgid 150=0A= +#define __NR_setfsuid 151=0A= +#define __NR_setfsgid 152=0A= +#define __NR_times 153=0A= +#define __NR_setpgid 154=0A= +#define __NR_getpgid 155=0A= +#define __NR_getsid 156=0A= +#define __NR_setsid 157=0A= +#define __NR_getgroups 158=0A= +#define __NR_setgroups 159=0A= +#define __NR_uname 160=0A= +#define __NR_sethostname 161=0A= +#define __NR_setdomainname 162=0A= +#define __NR_getrlimit 163=0A= +#define __NR_setrlimit 164=0A= +#define __NR_getrusage 165=0A= +#define __NR_umask 166=0A= +#define __NR_prctl 167=0A= +#define __NR_getcpu 168=0A= +#define __NR_gettimeofday 169=0A= +#define __NR_settimeofday 170=0A= +#define __NR_adjtimex 171=0A= +#define __NR_getpid 172=0A= +#define __NR_getppid 173=0A= +#define __NR_getuid 174=0A= +#define __NR_geteuid 175=0A= +#define __NR_getgid 176=0A= +#define __NR_getegid 177=0A= +#define __NR_gettid 178=0A= +#define __NR_sysinfo 179=0A= +#define __NR_mq_open 180=0A= +#define __NR_mq_unlink 181=0A= +#define __NR_mq_timedsend 182=0A= +#define __NR_mq_timedreceive 183=0A= +#define __NR_mq_notify 184=0A= +#define __NR_mq_getsetattr 185=0A= +#define __NR_msgget 186=0A= +#define __NR_msgctl 187=0A= +#define __NR_msgrcv 188=0A= +#define __NR_msgsnd 189=0A= +#define __NR_semget 190=0A= +#define __NR_semctl 191=0A= +#define __NR_semtimedop 192=0A= +#define __NR_semop 193=0A= +#define __NR_shmget 194=0A= +#define __NR_shmctl 195=0A= +#define __NR_shmat 196=0A= +#define __NR_shmdt 197=0A= +#define __NR_socket 198=0A= +#define __NR_socketpair 199=0A= +#define __NR_bind 200=0A= +#define __NR_listen 201=0A= +#define __NR_accept 202=0A= +#define __NR_connect 203=0A= +#define __NR_getsockname 204=0A= +#define __NR_getpeername 205=0A= +#define __NR_sendto 206=0A= +#define __NR_recvfrom 207=0A= +#define __NR_setsockopt 208=0A= +#define __NR_getsockopt 209=0A= +#define __NR_shutdown 210=0A= +#define __NR_sendmsg 211=0A= +#define __NR_recvmsg 212=0A= +#define __NR_readahead 213=0A= +#define __NR_brk 214=0A= +#define __NR_munmap 215=0A= +#define __NR_mremap 216=0A= +#define __NR_add_key 217=0A= +#define __NR_request_key 218=0A= +#define __NR_keyctl 219=0A= +#define __NR_clone 220=0A= +#define __NR_execve 221=0A= +#define __NR3264_mmap 222=0A= +#define __NR3264_fadvise64 223=0A= +#define __NR_swapon 224=0A= +#define __NR_swapoff 225=0A= +#define __NR_mprotect 226=0A= +#define __NR_msync 227=0A= +#define __NR_mlock 228=0A= +#define __NR_munlock 229=0A= +#define __NR_mlockall 230=0A= +#define __NR_munlockall 231=0A= +#define __NR_mincore 232=0A= +#define __NR_madvise 233=0A= +#define __NR_remap_file_pages 234=0A= +#define __NR_mbind 235=0A= +#define __NR_get_mempolicy 236=0A= +#define __NR_set_mempolicy 237=0A= +#define __NR_migrate_pages 238=0A= +#define __NR_move_pages 239=0A= +#define __NR_rt_tgsigqueueinfo 240=0A= +#define __NR_perf_event_open 241=0A= +#define __NR_accept4 242=0A= +#define __NR_recvmmsg 243=0A= +#define __NR_arch_specific_syscall 244=0A= +#define __NR_wait4 260=0A= +#define __NR_prlimit64 261=0A= +#define __NR_fanotify_init 262=0A= +#define __NR_fanotify_mark 263=0A= +#define __NR_name_to_handle_at 264=0A= +#define __NR_open_by_handle_at 265=0A= +#define __NR_clock_adjtime 266=0A= +#define __NR_syncfs 267=0A= +#define __NR_setns 268=0A= +#define __NR_sendmmsg 269=0A= +#define __NR_process_vm_readv 270=0A= +#define __NR_process_vm_writev 271=0A= +#define __NR_kcmp 272=0A= +#define __NR_finit_module 273=0A= +#define __NR_sched_setattr 274=0A= +#define __NR_sched_getattr 275=0A= +#define __NR_renameat2 276=0A= +#define __NR_seccomp 277=0A= +#define __NR_getrandom 278=0A= +#define __NR_memfd_create 279=0A= +#define __NR_bpf 280=0A= +#define __NR_execveat 281=0A= +#define __NR_userfaultfd 282=0A= +#define __NR_membarrier 283=0A= +#define __NR_mlock2 284=0A= +#define __NR_copy_file_range 285=0A= +#define __NR_preadv2 286=0A= +#define __NR_pwritev2 287=0A= +#define __NR_pkey_mprotect 288=0A= +#define __NR_pkey_alloc 289=0A= +#define __NR_pkey_free 290=0A= +#define __NR_statx 291=0A= +#define __NR_clock_gettime64 403=0A= +#define __NR_clock_settime64 404=0A= +#define __NR_clock_adjtime64 405=0A= +#define __NR_clock_getres_time64 406=0A= +#define __NR_clock_nanosleep_time64 407=0A= +#define __NR_timer_gettime64 408=0A= +#define __NR_timer_settime64 409=0A= +#define __NR_timerfd_gettime64 410=0A= +#define __NR_timerfd_settime64 411=0A= +#define __NR_utimensat_time64 412=0A= +#define __NR_pselect6_time64 413=0A= +#define __NR_ppoll_time64 414=0A= +#define __NR_io_pgetevents_time64 416=0A= +#define __NR_recvmmsg_time64 417=0A= +#define __NR_mq_timedsend_time64 418=0A= +#define __NR_mq_timedreceive_time64 419=0A= +#define __NR_semtimedop_time64 420=0A= +#define __NR_rt_sigtimedwait_time64 421=0A= +#define __NR_futex_time64 422=0A= +#define __NR_sched_rr_get_interval_time64 423=0A= +#define __NR_syscalls (__NR_sched_rr_get_interval_time64+1)=0A= +#define __NR_fcntl __NR3264_fcntl=0A= +#define __NR_fstatfs __NR3264_fstatfs=0A= +#define __NR_truncate __NR3264_truncate=0A= +#define __NR_ftruncate __NR3264_ftruncate=0A= +#define __NR_lseek __NR3264_lseek=0A= +#define __NR_sendfile __NR3264_sendfile=0A= +#define __NR_newfstatat __NR3264_fstatat=0A= +#define __NR_fcntl64 __NR3264_fcntl=0A= +#define __NR_statfs64 __NR3264_statfs=0A= +#define __NR_fstatfs64 __NR3264_fstatfs=0A= +#define __NR_truncate64 __NR3264_truncate=0A= +#define __NR_ftruncate64 __NR3264_ftruncate=0A= +#define __NR__llseek __NR3264_lseek=0A= +#define __NR_sendfile64 __NR3264_sendfile=0A= +#define __NR_fstatat64 __NR3264_fstatat=0A= +#define __NR_fstat64 __NR3264_fstat=0A= +#define __NR_mmap2 __NR3264_mmap=0A= +#define __NR_fadvise64_64 __NR3264_fadvise64=0A= diff --git a/arch/hexagon/crt_arch.h b/arch/hexagon/crt_arch.h=0A= new file mode 100644=0A= index 00000000..331a797e=0A= --- /dev/null=0A= +++ b/arch/hexagon/crt_arch.h=0A= @@ -0,0 +1,35 @@=0A= +__asm__(=0A= +".weak _DYNAMIC \n"=0A= +".hidden _DYNAMIC \n"=0A= +".text \n"=0A= +".global " START " \n"=0A= +".type " START ", %function \n"=0A= +START ": \n"=0A= +" // Find _DYNAMIC\n"=0A= +" jump 1f\n"=0A= +".word _DYNAMIC - .\n"=0A= +"1: r2 =3D pc\n"=0A= +" r2 =3D add(r2, #-4)\n"=0A= +" r1 =3D memw(r2)\n"=0A= +" r1 =3D add(r2, r1)\n"=0A= +" r30 =3D #0 // Signals the end of backtrace\n"=0A= +" r0 =3D r29 // Pointer to argc/argv\n"=0A= +" r29 =3D and(r29, #-16) // Align\n"=0A= +" memw(r29+#-8) =3D r29\n"=0A= +" r29 =3D add(r29, #-8)\n"=0A= +" call " START "_c \n"=0A= +".size " START ", .-" START "\n"=0A= +);=0A= +=0A= +__asm__(=0A= +".section \".note.ABI-tag\", \"a\" \n"=0A= +".align 4 \n"=0A= +".long 1f - 0f /* name length */ \n"=0A= +".long 3f - 2f /* data length */ \n"=0A= +".long 1 /* note type */ \n"=0A= +"0: .asciz \"GNU\" /* vendor name seems like this should be MUSL but = lldb doesn't agree.*/ \n"=0A= +"1: .align 4 \n"=0A= +"2: .long 0 /* linux */ \n"=0A= +" .long 3,0,0 \n"=0A= +"3: .align 4 \n"=0A= +);=0A= diff --git a/arch/hexagon/kstat.h b/arch/hexagon/kstat.h=0A= new file mode 100644=0A= index 00000000..92625f36=0A= --- /dev/null=0A= +++ b/arch/hexagon/kstat.h=0A= @@ -0,0 +1,21 @@=0A= +struct kstat {=0A= + dev_t st_dev;=0A= + ino_t st_ino;=0A= + mode_t st_mode;=0A= + nlink_t st_nlink;=0A= + uid_t st_uid;=0A= + gid_t st_gid;=0A= + dev_t st_rdev;=0A= + unsigned long __pad;=0A= + off_t st_size;=0A= + blksize_t st_blksize;=0A= + int __pad2;=0A= + blkcnt_t st_blocks;=0A= + long st_atime_sec;=0A= + long st_atime_nsec;=0A= + long st_mtime_sec;=0A= + long st_mtime_nsec;=0A= + long st_ctime_sec;=0A= + long st_ctime_nsec;=0A= + unsigned __unused[2];=0A= +};=0A= diff --git a/arch/hexagon/pthread_arch.h b/arch/hexagon/pthread_arch.h=0A= new file mode 100644=0A= index 00000000..b614fdd1=0A= --- /dev/null=0A= +++ b/arch/hexagon/pthread_arch.h=0A= @@ -0,0 +1,13 @@=0A= +// Hexagon supports variant 2 TLS.=0A= +static inline uintptr_t __get_tp()=0A= +{=0A= + uintptr_t tp;=0A= + __asm__ ( "%0 =3D ugp" : "=3Dr"(tp));=0A= + return tp;=0A= +}=0A= +=0A= +#define TP_ADJ(p) (p)=0A= +=0A= +#define CANCEL_REG_IP 43=0A= +=0A= +#define MC_PC pc=0A= diff --git a/arch/hexagon/reloc.h b/arch/hexagon/reloc.h=0A= new file mode 100644=0A= index 00000000..14085872=0A= --- /dev/null=0A= +++ b/arch/hexagon/reloc.h=0A= @@ -0,0 +1,25 @@=0A= +#include =0A= +=0A= +#if __BYTE_ORDER =3D=3D __LITTLE_ENDIAN=0A= +#define ENDIAN_SUFFIX "el"=0A= +#else=0A= +#define ENDIAN_SUFFIX ""=0A= +#endif=0A= +=0A= +#define FP_SUFFIX ""=0A= +=0A= +#define LDSO_ARCH "hexagon" ENDIAN_SUFFIX FP_SUFFIX=0A= +=0A= +#define TPOFF_K 0=0A= +=0A= +#define REL_SYMBOLIC R_HEX_32=0A= +#define REL_GOT R_HEX_GLOB_DAT=0A= +#define REL_PLT R_HEX_JMP_SLOT=0A= +#define REL_RELATIVE R_HEX_RELATIVE=0A= +#define REL_COPY R_HEX_COPY=0A= +#define REL_DTPMOD R_HEX_DTPMOD_32=0A= +#define REL_TPOFF R_HEX_TPREL_32=0A= +#define REL_DTPOFF R_HEX_DTPREL_32=0A= +=0A= +#define CRTJMP(pc,sp) __asm__ __volatile__( \=0A= + "r29 =3D %1 ; jumpr %0" : : "r"(pc), "r"(sp) : "memory" )=0A= diff --git a/arch/hexagon/syscall_arch.h b/arch/hexagon/syscall_arch.h=0A= new file mode 100644=0A= index 00000000..e6defe41=0A= --- /dev/null=0A= +++ b/arch/hexagon/syscall_arch.h=0A= @@ -0,0 +1,77 @@=0A= +=0A= +#define __SYSCALL_LL_E(x) \=0A= +((union { long long ll; long l[2]; }){ .ll =3D x }).l[0], \=0A= +((union { long long ll; long l[2]; }){ .ll =3D x }).l[1]=0A= +#define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x))=0A= +=0A= +#define __asm_syscall(...) do { \=0A= + __asm__ __volatile__ ( "trap0(#1)" \=0A= + : "=3Dr"(r0) : __VA_ARGS__ : "memory"); \=0A= + return r0; \=0A= + } while (0)=0A= +=0A= +static inline long __syscall0(long n)=0A= +{=0A= + register long r6 __asm__("r6") =3D n;=0A= + register long r0 __asm__("r0");=0A= + __asm_syscall("r"(r6));=0A= +}=0A= +=0A= +static inline long __syscall1(long n, long a)=0A= +{=0A= + register long r6 __asm__("r6") =3D n;=0A= + register long r0 __asm__("r0") =3D a;=0A= + __asm_syscall("r"(r6), "0"(r0));=0A= +}=0A= +=0A= +static inline long __syscall2(long n, long a, long b)=0A= +{=0A= + register long r6 __asm__("r6") =3D n;=0A= + register long r0 __asm__("r0") =3D a;=0A= + register long r1 __asm__("r1") =3D b;=0A= + __asm_syscall("r"(r6), "0"(r0), "r"(r1));=0A= +}=0A= +=0A= +static inline long __syscall3(long n, long a, long b, long c)=0A= +{=0A= + register long r6 __asm__("r6") =3D n;=0A= + register long r0 __asm__("r0") =3D a;=0A= + register long r1 __asm__("r1") =3D b;=0A= + register long r2 __asm__("r2") =3D c;=0A= + __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2));=0A= +}=0A= +=0A= +static inline long __syscall4(long n, long a, long b, long c, long d)=0A= +{=0A= + register long r6 __asm__("r6") =3D n;=0A= + register long r0 __asm__("r0") =3D a;=0A= + register long r1 __asm__("r1") =3D b;=0A= + register long r2 __asm__("r2") =3D c;=0A= + register long r3 __asm__("r3") =3D d;=0A= + __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3));=0A= +}=0A= +=0A= +static inline long __syscall5(long n, long a, long b, long c, long d, = long e)=0A= +{=0A= + register long r6 __asm__("r6") =3D n;=0A= + register long r0 __asm__("r0") =3D a;=0A= + register long r1 __asm__("r1") =3D b;=0A= + register long r2 __asm__("r2") =3D c;=0A= + register long r3 __asm__("r3") =3D d;=0A= + register long r4 __asm__("r4") =3D e;=0A= + __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));=0A= +}=0A= +=0A= +static inline long __syscall6(long n, long a, long b, long c, long d, = long e, long f)=0A= +{=0A= + register long r6 __asm__("r6") =3D n;=0A= + register long r0 __asm__("r0") =3D a;=0A= + register long r1 __asm__("r1") =3D b;=0A= + register long r2 __asm__("r2") =3D c;=0A= + register long r3 __asm__("r3") =3D d;=0A= + register long r4 __asm__("r4") =3D e;=0A= + register long r5 __asm__("r5") =3D f;=0A= + __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), = "r"(r5));=0A= +}=0A= +=0A= +#define SYSCALL_FADVISE_6_ARG=0A= diff --git a/configure b/configure=0A= index 947adf41..edbee0b5 100755=0A= --- a/configure=0A= +++ b/configure=0A= @@ -323,6 +323,7 @@ case "$target" in=0A= # Catch these early to simplify matching for 32-bit archs=0A= arm*) ARCH=3Darm ;;=0A= aarch64*) ARCH=3Daarch64 ;;=0A= +hexagon*) ARCH=3Dhexagon ;;=0A= i?86-nt32*) ARCH=3Dnt32 ;;=0A= i?86*) ARCH=3Di386 ;;=0A= x86_64-x32*|x32*|x86_64*x32) ARCH=3Dx32 ;;=0A= diff --git a/include/elf.h b/include/elf.h=0A= index 549f92c1..54251c24 100644=0A= --- a/include/elf.h=0A= +++ b/include/elf.h=0A= @@ -3284,6 +3284,107 @@ enum=0A= #define R_RISCV_SET32 56=0A= #define R_RISCV_32_PCREL 57=0A= =0A= +#define R_HEX_NONE 0=0A= +#define R_HEX_B22_PCREL 1=0A= +#define R_HEX_B15_PCREL 2=0A= +#define R_HEX_B7_PCREL 3=0A= +#define R_HEX_LO16 4=0A= +#define R_HEX_HI16 5=0A= +#define R_HEX_32 6=0A= +#define R_HEX_16 7=0A= +#define R_HEX_8 8=0A= +#define R_HEX_GPREL16_0 9=0A= +#define R_HEX_GPREL16_1 10=0A= +#define R_HEX_GPREL16_2 11=0A= +#define R_HEX_GPREL16_3 12=0A= +#define R_HEX_HL16 13=0A= +#define R_HEX_B13_PCREL 14=0A= +#define R_HEX_B9_PCREL 15=0A= +#define R_HEX_B32_PCREL_X 16=0A= +#define R_HEX_32_6_X 17=0A= +#define R_HEX_B22_PCREL_X 18=0A= +#define R_HEX_B15_PCREL_X 19=0A= +#define R_HEX_B13_PCREL_X 20=0A= +#define R_HEX_B9_PCREL_X 21=0A= +#define R_HEX_B7_PCREL_X 22=0A= +#define R_HEX_16_X 23=0A= +#define R_HEX_12_X 24=0A= +#define R_HEX_11_X 25=0A= +#define R_HEX_10_X 26=0A= +#define R_HEX_9_X 27=0A= +#define R_HEX_8_X 28=0A= +#define R_HEX_7_X 29=0A= +#define R_HEX_6_X 30=0A= +#define R_HEX_32_PCREL 31=0A= +#define R_HEX_COPY 32=0A= +#define R_HEX_GLOB_DAT 33=0A= +#define R_HEX_JMP_SLOT 34=0A= +#define R_HEX_RELATIVE 35=0A= +#define R_HEX_PLT_B22_PCREL 36=0A= +#define R_HEX_GOTOFF_LO16 37=0A= +#define R_HEX_GOTOFF_HI16 38=0A= +#define R_HEX_GOTOFF_32 39=0A= +#define R_HEX_GOT_LO16 40=0A= +#define R_HEX_GOT_HI16 41=0A= +#define R_HEX_GOT_32 42=0A= +#define R_HEX_GOT_16 43=0A= +#define R_HEX_DTPMOD_32 44=0A= +#define R_HEX_DTPREL_LO16 45=0A= +#define R_HEX_DTPREL_HI16 46=0A= +#define R_HEX_DTPREL_32 47=0A= +#define R_HEX_DTPREL_16 48=0A= +#define R_HEX_GD_PLT_B22_PCREL 49=0A= +#define R_HEX_GD_GOT_LO16 50=0A= +#define R_HEX_GD_GOT_HI16 51=0A= +#define R_HEX_GD_GOT_32 52=0A= +#define R_HEX_GD_GOT_16 53=0A= +#define R_HEX_IE_LO16 54=0A= +#define R_HEX_IE_HI16 55=0A= +#define R_HEX_IE_32 56=0A= +#define R_HEX_IE_GOT_LO16 57=0A= +#define R_HEX_IE_GOT_HI16 58=0A= +#define R_HEX_IE_GOT_32 59=0A= +#define R_HEX_IE_GOT_16 60=0A= +#define R_HEX_TPREL_LO16 61=0A= +#define R_HEX_TPREL_HI16 62=0A= +#define R_HEX_TPREL_32 63=0A= +#define R_HEX_TPREL_16 64=0A= +#define R_HEX_6_PCREL_X 65=0A= +#define R_HEX_GOTREL_32_6_X 66=0A= +#define R_HEX_GOTREL_16_X 67=0A= +#define R_HEX_GOTREL_11_X 68=0A= +#define R_HEX_GOT_32_6_X 69=0A= +#define R_HEX_GOT_16_X 70=0A= +#define R_HEX_GOT_11_X 71=0A= +#define R_HEX_DTPREL_32_6_X 72=0A= +#define R_HEX_DTPREL_16_X 73=0A= +#define R_HEX_DTPREL_11_X 74=0A= +#define R_HEX_GD_GOT_32_6_X 75=0A= +#define R_HEX_GD_GOT_16_X 76=0A= +#define R_HEX_GD_GOT_11_X 77=0A= +#define R_HEX_IE_32_6_X 78=0A= +#define R_HEX_IE_16_X 79=0A= +#define R_HEX_IE_GOT_32_6_X 80=0A= +#define R_HEX_IE_GOT_16_X 81=0A= +#define R_HEX_IE_GOT_11_X 82=0A= +#define R_HEX_TPREL_32_6_X 83=0A= +#define R_HEX_TPREL_16_X 84=0A= +#define R_HEX_TPREL_11_X 85=0A= +#define R_HEX_LD_PLT_B22_PCREL 86=0A= +#define R_HEX_LD_GOT_LO16 87=0A= +#define R_HEX_LD_GOT_HI16 88=0A= +#define R_HEX_LD_GOT_32 89=0A= +#define R_HEX_LD_GOT_16 90=0A= +#define R_HEX_LD_GOT_32_6_X 91=0A= +#define R_HEX_LD_GOT_16_X 92=0A= +#define R_HEX_LD_GOT_11_X 93=0A= +#define R_HEX_23_REG 94=0A= +#define R_HEX_GD_PLT_B22_PCREL_X 95=0A= +#define R_HEX_GD_PLT_B32_PCREL_X 96=0A= +#define R_HEX_LD_PLT_B22_PCREL_X 97=0A= +#define R_HEX_LD_PLT_B32_PCREL_X 98=0A= +=0A= +=0A= #ifdef __cplusplus=0A= }=0A= #endif=0A= diff --git a/src/fenv/hexagon/fenv.S b/src/fenv/hexagon/fenv.S=0A= new file mode 100644=0A= index 00000000..07b89764=0A= --- /dev/null=0A= +++ b/src/fenv/hexagon/fenv.S=0A= @@ -0,0 +1,143 @@=0A= +/*=0A= +The Hexagon user status register includes five status fields which work = as=0A= +sticky flags for the five IEEE-defined exception conditions: inexact, = overflow, underflow,=0A= +divide by zero, and invalid. A sticky flag is set when the = corresponding exception occurs,=0A= +and remains set until explicitly cleared.=0A= +=0A= + usr:23:22 - Rounding Mode=0A= + 00: Round toward nearest=0A= + 01: Round toward zero=0A= + 10: Downward Round toward negative infinity=0A= + 11: Upward Round toward positive infinity=0A= +=0A= + usr:5 - Floating-point IEEE Inexact Sticky Flag.=0A= + usr:4 - Floating-point IEEE Underflow Sticky Flag.=0A= + usr:3 - Floating-point IEEE Overflow Sticky Flag.=0A= + usr:2 - Floating-point IEEE Divide-By-Zero Sticky Flag.=0A= + usr:1 - Floating-point IEEE Invalid Sticky Flag.=0A= + usr:0 - Sticky Saturation Overflow, when 1 saturation occurred.=0A= +*/=0A= +=0A= +#define FE_ALL_EXCEPT 0x3f=0A= +=0A= +#define USR_FE_MASK 0x3fc0003f=0A= +#define RND_MASK (0x3 << 22)=0A= +#define RND_NEAR (0x0 << 22)=0A= +#define RND_ZERO (0x1 << 22)=0A= +#define RND_DOWN (0x2 << 22)=0A= +#define RND_UP (0x3 << 22)=0A= +=0A= +/*=0A= +int feclearexcept(int mask)=0A= +*/=0A= +.global feclearexcept=0A= +.type feclearexcept,@function=0A= +feclearexcept:=0A= + {=0A= + r0 =3D and(r0, #FE_ALL_EXCEPT) // Only touch the IEEE flag bits.=0A= + r1 =3D usr=0A= + }=0A= + r1 =3D and(r1, ~r0)=0A= + {=0A= + usr =3D r1=0A= + r0 =3D #0=0A= + jumpr r31=0A= + }=0A= +=0A= +/*=0A= +int feraiseexcept(int mask)=0A= +*/=0A= +.global feraiseexcept=0A= +.type feraiseexcept,@function=0A= +feraiseexcept:=0A= + {=0A= + r0 =3D and(r0, #FE_ALL_EXCEPT) // Only touch the IEEE flag bits.=0A= + r1 =3D usr=0A= + }=0A= + r1 =3D or(r1, r0)=0A= + {=0A= + usr =3D r1=0A= + r0 =3D #0=0A= + jumpr r31=0A= + }=0A= +=0A= +=0A= +/*=0A= +int fetestexcept(int mask)=0A= +*/=0A= +.global fetestexcept=0A= +.type fetestexcept,@function=0A= +fetestexcept:=0A= + {=0A= + r0 =3D and(r0, #FE_ALL_EXCEPT) // Only touch the IEEE flag bits.=0A= + r1 =3D usr=0A= + }=0A= + {=0A= + r0 =3D and(r1, r0)=0A= + jumpr r31=0A= + }=0A= +=0A= +/*=0A= +int fegetround(void)=0A= +*/=0A= +.global fegetround=0A= +.type fegetround,@function=0A= +fegetround:=0A= + r0 =3D usr=0A= + r0 =3D and(r0, ##RND_MASK)=0A= + r0 =3D lsr(r0, #22);=0A= + jumpr r31=0A= +=0A= +/*=0A= +int __fesetround(int r)=0A= +*/=0A= +.global __fesetround=0A= +.type __fesetround,@function=0A= +__fesetround:=0A= + {=0A= + r0 =3D and(r0, #0x3) // Can only be 0,1,2, or 3=0A= + r1 =3D usr=0A= + r2 =3D ##RND_MASK=0A= + }=0A= + {=0A= + r1 =3D and (r1, ~r2) // Clear the current rounding bits.=0A= + r0 =3D asl (r0, #22)=0A= + }=0A= + r1 =3D or(r1, r0)=0A= + usr =3D r1=0A= + {=0A= + r0 =3D #0; jumpr r31=0A= + }=0A= +=0A= +/*=0A= +int fegetenv(fenv_t *envp)=0A= +*/=0A= +.global fegetenv=0A= +.type fegetenv,@function=0A= +fegetenv:=0A= + r1 =3D usr=0A= + memw(r0) =3D r1=0A= + {=0A= + r0 =3D #0=0A= + jumpr r31=0A= + }=0A= +=0A= +/*=0A= +int fesetenv(const fenv_t *envp)=0A= +*/=0A= +.global fesetenv=0A= +.type fesetenv,@function=0A= +fesetenv:=0A= + { p0 =3D cmp.eq(r0, #-1); if (p0.new) r1 =3D #0 } /* The default = mode */=0A= + if (!p0) r1 =3D memw(r0) /* stored in fenv_t = */=0A= +=0A= + r2 =3D ##USR_FE_MASK // USR:FE bit mask=0A= + r1 =3D and(r1, r2) // MASK the input bits with the FE bits=0A= + r3 =3D usr=0A= + r3 =3D and(r3, ~r2) // Clear any currently set FE bits=0A= + r3 =3D or(r3, r1) // Set the newbits=0A= + usr =3D r3=0A= + {=0A= + r0 =3D #0=0A= + jumpr r31=0A= + }=0A= diff --git a/src/math/hexagon/fmaf.c b/src/math/hexagon/fmaf.c=0A= new file mode 100644=0A= index 00000000..7ce1996c=0A= --- /dev/null=0A= +++ b/src/math/hexagon/fmaf.c=0A= @@ -0,0 +1,8 @@=0A= +#include =0A= +=0A= +float fmaf(float x, float y, float z)=0A= +{=0A= + __asm__ ("%[z]+=3Dsfmpy(%[x], %[y])"=0A= + : [z]"+r"(z) : [x]"r"(x), [y]"r"(y));=0A= + return z;=0A= +}=0A= diff --git a/src/math/hexagon/fmaxf.c b/src/math/hexagon/fmaxf.c=0A= new file mode 100644=0A= index 00000000..0dc52b25=0A= --- /dev/null=0A= +++ b/src/math/hexagon/fmaxf.c=0A= @@ -0,0 +1,8 @@=0A= +#include =0A= +=0A= +float fmaxf(float x, float y)=0A= +{=0A= + __asm__ ("%[x]=3Dsfmax(%[x], %[y])"=0A= + : [x]"+r"(x) : [y]"r"(y));=0A= + return x;=0A= +}=0A= diff --git a/src/math/hexagon/fminf.c b/src/math/hexagon/fminf.c=0A= new file mode 100644=0A= index 00000000..aeb20ae0=0A= --- /dev/null=0A= +++ b/src/math/hexagon/fminf.c=0A= @@ -0,0 +1,8 @@=0A= +#include =0A= +=0A= +float fminf(float x, float y)=0A= +{=0A= + __asm__ ("%[x]=3Dsfmin(%[x], %[y])"=0A= + : [x]"+r"(x) : [y]"r"(y));=0A= + return x;=0A= +}=0A= diff --git a/src/setjmp/hexagon/longjmp.s b/src/setjmp/hexagon/longjmp.s=0A= new file mode 100644=0A= index 00000000..691b67dd=0A= --- /dev/null=0A= +++ b/src/setjmp/hexagon/longjmp.s=0A= @@ -0,0 +1,25 @@=0A= +.text=0A= +.global _longjmp=0A= +.global longjmp=0A= +.type _longjmp,%function=0A= +.type longjmp,%function=0A= +_longjmp:=0A= +longjmp:=0A= + { r17:16=3Dmemd(r0+#0)=0A= + r19:18=3Dmemd(r0+#8) }=0A= + { r21:20=3Dmemd(r0+#16)=0A= + r23:22=3Dmemd(r0+#24) }=0A= + { r25:24=3Dmemd(r0+#32)=0A= + r27:26=3Dmemd(r0+#40) }=0A= + { r29:28=3Dmemd(r0+#48)=0A= + r31:30=3Dmemd(r0+#56) }=0A= +=0A= + r0 =3D r1=0A= + r1 =3D #0=0A= + p0 =3D cmp.eq(r0,r1)=0A= + if (!p0) jumpr r31=0A= + r0 =3D #1=0A= +=0A= + jumpr r31=0A= +.size _longjmp, .-_longjmp=0A= +.size longjmp, .-longjmp=0A= diff --git a/src/setjmp/hexagon/setjmp.s b/src/setjmp/hexagon/setjmp.s=0A= new file mode 100644=0A= index 00000000..d29f036e=0A= --- /dev/null=0A= +++ b/src/setjmp/hexagon/setjmp.s=0A= @@ -0,0 +1,24 @@=0A= +.text=0A= +.global __setjmp=0A= +.global _setjmp=0A= +.global setjmp=0A= +.type __setjmp,@function=0A= +.type _setjmp,@function=0A= +.type setjmp,@function=0A= +__setjmp:=0A= +_setjmp:=0A= +setjmp:=0A= + { memd(r0+#0)=3Dr17:16=0A= + memd(r0+#8)=3Dr19:18 }=0A= + { memd(r0+#16)=3Dr21:20=0A= + memd(r0+#24)=3Dr23:22 }=0A= + { memd(r0+#32)=3Dr25:24=0A= + memd(r0+#40)=3Dr27:26 }=0A= + { memd(r0+#48)=3Dr29:28=0A= + memd(r0+#56)=3Dr31:30 }=0A= +=0A= + r0 =3D #0=0A= + jumpr r31=0A= +.size __setjmp, .-__setjmp=0A= +.size _setjmp, .-_setjmp=0A= +.size setjmp, .-setjmp=0A= diff --git a/src/signal/hexagon/restore.s b/src/signal/hexagon/restore.s=0A= new file mode 100644=0A= index 00000000..f43f5e02=0A= --- /dev/null=0A= +++ b/src/signal/hexagon/restore.s=0A= @@ -0,0 +1,11 @@=0A= +// TODO - Test this if sa_restorer is ever supported in our kernel=0A= +.global __restore=0A= +.type __restore,%function=0A= +.global __restore_rt=0A= +.type __restore_rt,%function=0A= +__restore:=0A= +__restore_rt:=0A= + r6 =3D #139 // SYS_rt_sigreturn=0A= + trap0(#0)=0A= +.size __restore, .-__restore=0A= +.size __restore_rt, .-__restore_rt=0A= diff --git a/src/signal/hexagon/sigsetjmp.s = b/src/signal/hexagon/sigsetjmp.s=0A= new file mode 100644=0A= index 00000000..f1aaf165=0A= --- /dev/null=0A= +++ b/src/signal/hexagon/sigsetjmp.s=0A= @@ -0,0 +1,28 @@=0A= +.global sigsetjmp=0A= +.global __sigsetjmp=0A= +.type sigsetjmp,@function=0A= +.type __sigsetjmp,@function=0A= +.balign 4=0A= +sigsetjmp:=0A= +__sigsetjmp:=0A= + // if savemask is 0 sigsetjmp behaves like setjmp=0A= + {=0A= + p0 =3D cmp.eq(r1, #0)=0A= + if (p0.new) jump:t ##setjmp=0A= + }=0A= + {=0A= + memw(r0+#64+4+8) =3D r16 // save r16 in __ss[2]=0A= + memw(r0+#64) =3D r31 // save linkregister in __fl=0A= + r16 =3D r0=0A= + }=0A= + call ##setjmp=0A= + {=0A= + r1 =3D r0;=0A= + r0 =3D r16 // restore r0=0A= + r31 =3D memw(r16+#64) // restore linkregister=0A= + r16 =3D memw(r16+#64+4+8) // restore r16 from __ss[2]=0A= + }=0A= +.hidden __sigsetjmp_tail=0A= + jump ##__sigsetjmp_tail=0A= +=0A= +.size sigsetjmp, .-sigsetjmp=0A= diff --git a/src/thread/hexagon/__set_thread_area.s = b/src/thread/hexagon/__set_thread_area.s=0A= new file mode 100644=0A= index 00000000..87a991b7=0A= --- /dev/null=0A= +++ b/src/thread/hexagon/__set_thread_area.s=0A= @@ -0,0 +1,7 @@=0A= +.global __set_thread_area=0A= +.type __set_thread_area,@function=0A= +__set_thread_area:=0A= + { ugp =3D r0=0A= + r0 =3D #0=0A= + jumpr r31 }=0A= +.size __set_thread_area, .-__set_thread_area=0A= diff --git a/src/thread/hexagon/__unmapself.s = b/src/thread/hexagon/__unmapself.s=0A= new file mode 100644=0A= index 00000000..c47dce21=0A= --- /dev/null=0A= +++ b/src/thread/hexagon/__unmapself.s=0A= @@ -0,0 +1,11 @@=0A= +#include =0A= +=0A= +.global __unmapself=0A= +.type __unmapself,%function=0A= +__unmapself:=0A= + r6 =3D #215 // SYS_munmap=0A= + trap0(#1)=0A= + r6 =3D #93 // SYS_exit=0A= + trap0(#1)=0A= + jumpr r31=0A= +.size __unmapself, .-__unmapself=0A= diff --git a/src/thread/hexagon/clone.s b/src/thread/hexagon/clone.s=0A= new file mode 100644=0A= index 00000000..42aab67a=0A= --- /dev/null=0A= +++ b/src/thread/hexagon/clone.s=0A= @@ -0,0 +1,37 @@=0A= +// __clone(func, stack, flags, arg, ptid, tls, ctid)=0A= +// r0, r1, r2, r3, r4, r5, stack=0A= +=0A= +// tid =3D syscall(SYS_clone, flags, stack, ptid, ctid, tls)=0A= +// r6, r0, r1, r2, r3, r4=0A= +// if (tid !=3D 0) return=0A= +// func(arg)=0A= +// syscall(SYS_exit)=0A= +=0A= +.text=0A= +.global __clone=0A= +.type __clone,%function=0A= +__clone:=0A= + allocframe(#8)=0A= + // Save pointers for later=0A= + { r11 =3D r0=0A= + r10 =3D r3 }=0A= +=0A= + // Set up syscall args - The stack must be 8 byte aligned.=0A= + { r0 =3D r2=0A= + r1 =3D and(r1, ##0xfffffff8)=0A= + r2 =3D r4 }=0A= + {=0A= + r3 =3D memw(r30+#8)=0A= + r4 =3D r5 }=0A= + r6 =3D #220 // SYS_clone=0A= + trap0(#1)=0A= +=0A= + p0 =3D cmp.eq(r0, #0)=0A= + if (!p0) dealloc_return=0A= +=0A= + { r0 =3D r10=0A= + callr r11 }=0A= +=0A= + r6 =3D #93 // SYS_exit=0A= + trap0(#1)=0A= +.size __clone, .-__clone=0A= diff --git a/src/thread/hexagon/syscall_cp.s = b/src/thread/hexagon/syscall_cp.s=0A= new file mode 100644=0A= index 00000000..50383cad=0A= --- /dev/null=0A= +++ b/src/thread/hexagon/syscall_cp.s=0A= @@ -0,0 +1,35 @@=0A= +// __syscall_cp_asm(&self->cancel, nr, u, v, w, x, y, z)=0A= +// r0 r1 r2 r3 r4 r5 stack stack=0A= +=0A= +// syscall(nr, u, v, w, x, y, z)=0A= +// r6 r0 r1 r2 r3 r4 r5=0A= +=0A= +.text=0A= +.global __cp_begin=0A= +.hidden __cp_begin=0A= +.global __cp_end=0A= +.hidden __cp_end=0A= +.global __cp_cancel=0A= +.hidden __cp_cancel=0A= +.hidden __cancel=0A= +.global __syscall_cp_asm=0A= +.hidden __syscall_cp_asm=0A= +.type __syscall_cp_asm,%function=0A= +__syscall_cp_asm:=0A= +__cp_begin:=0A= + r0 =3D memw(r0+#0)=0A= + {=0A= + p0 =3D cmp.eq(r0, #0); if (!p0.new) jump:nt __cancel=0A= + }=0A= + { r6 =3D r1=0A= + r1:0 =3D combine(r3, r2)=0A= + r3:2 =3D combine(r5, r4) }=0A= + { r4 =3D memw(r29+#0)=0A= + r5 =3D memw(r29+#4) }=0A= + trap0(#1)=0A= +__cp_end:=0A= + jumpr r31=0A= +.size __syscall_cp_asm, .-__syscall_cp_asm=0A= +__cp_cancel:=0A= + jump __cancel=0A= +.size __cp_cancel, .-__cp_cancel=0A= ------=_NextPart_000_1109_01D68C40.F70E6680 Content-Type: application/octet-stream; name="libc_test_REPORT" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="libc_test_REPORT" FAIL src/api/main.exe [status 1]=0A= clang-12: error: no such file or directory: 'src/api/unistd.o'=0A= src/api/unistd.c:87:3: error: use of undeclared identifier = '_CS_POSIX_V7_THREADS_CFLAGS'=0A= C(_CS_POSIX_V7_THREADS_CFLAGS)=0A= ^=0A= src/api/unistd.c:88:3: error: use of undeclared identifier = '_CS_POSIX_V7_THREADS_LDFLAGS'=0A= C(_CS_POSIX_V7_THREADS_LDFLAGS)=0A= ^=0A= src/api/unistd.c:117:3: error: use of undeclared identifier = '_PC_TIMESTAMP_RESOLUTION'=0A= C(_PC_TIMESTAMP_RESOLUTION)=0A= ^=0A= src/api/unistd.c:238:3: error: use of undeclared identifier = '_SC_XOPEN_UUCP'=0A= C(_SC_XOPEN_UUCP)=0A= ^=0A= src/api/unistd.c:87:3: error: use of undeclared identifier = '_CS_POSIX_V7_THREADS_CFLAGS'=0A= C(_CS_POSIX_V7_THREADS_CFLAGS)=0A= ^=0A= src/api/unistd.c:88:3: error: use of undeclared identifier = '_CS_POSIX_V7_THREADS_LDFLAGS'=0A= C(_CS_POSIX_V7_THREADS_LDFLAGS)=0A= ^=0A= src/api/unistd.c:117:3: error: use of undeclared identifier = '_PC_TIMESTAMP_RESOLUTION'=0A= C(_PC_TIMESTAMP_RESOLUTION)=0A= ^=0A= src/api/unistd.c:238:3: error: use of undeclared identifier = '_SC_XOPEN_UUCP'=0A= C(_SC_XOPEN_UUCP)=0A= ^=0A= 8 errors generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= warning: overriding currently unsupported rounding mode on this target = [-Wunsupported-floating-point-opt]=0A= 1 warning generated.=0A= src/functional/dlopen.c:39: dlsym main failed: Symbol not found: main=0A= FAIL src/functional/dlopen.exe [status 1]=0A= clang-12: warning: argument unused during compilation: '-rdynamic' = [-Wunused-command-line-argument]=0A= src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:87: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:87: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:108: = pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: = Function not implemented=0A= src/functional/pthread_mutex_pi.c:108: = pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: = Function not implemented=0A= FAIL src/functional/pthread_mutex_pi-static.exe [status 1]=0A= src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:42: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:87: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:87: pthread_mutexattr_setprotocol(&ma, = PTHREAD_PRIO_INHERIT) failed: Function not implemented=0A= src/functional/pthread_mutex_pi.c:108: = pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: = Function not implemented=0A= src/functional/pthread_mutex_pi.c:108: = pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT) failed: = Function not implemented=0A= FAIL src/functional/pthread_mutex_pi.exe [status 1]=0A= src/functional/pthread_robust.c:39: pthread_mutexattr_setrobust(&mtx_a, = PTHREAD_MUTEX_ROBUST) failed: (pshared=3D=3D0, pi=3D=3D0) Function not = implemented (setting robust attribute)=0A= FAIL src/functional/pthread_robust-static.exe [timed out]=0A= src/functional/pthread_robust.c:39: pthread_mutexattr_setrobust(&mtx_a, = PTHREAD_MUTEX_ROBUST) failed: (pshared=3D=3D0, pi=3D=3D0) Function not = implemented (setting robust attribute)=0A= FAIL src/functional/pthread_robust.exe [timed out]=0A= src/functional/strptime.c:23: "%F": failed to parse "1856-07-10"=0A= src/functional/strptime.c:23: "%s": failed to parse "683078400"=0A= src/functional/strptime.c:47: "%z": failed to parse "+0200"=0A= src/functional/strptime.c:47: "%z": failed to parse "-0530"=0A= src/functional/strptime.c:47: "%z": failed to parse "-06"=0A= FAIL src/functional/strptime-static.exe [status 1]=0A= src/functional/strptime.c:23: "%F": failed to parse "1856-07-10"=0A= src/functional/strptime.c:23: "%s": failed to parse "683078400"=0A= src/functional/strptime.c:47: "%z": failed to parse "+0200"=0A= src/functional/strptime.c:47: "%z": failed to parse "-0530"=0A= src/functional/strptime.c:47: "%z": failed to parse "-06"=0A= FAIL src/functional/strptime.exe [status 1]=0A= src/functional/utime.c:63: futimens(fd, ((struct = timespec[2]){{.tv_sec=3D1LL<<32},{.tv_sec=3D1LL<<32}})) =3D=3D 0 failed: = Not supported=0A= FAIL src/functional/utime-static.exe [status 1]=0A= src/functional/utime.c:63: futimens(fd, ((struct = timespec[2]){{.tv_sec=3D1LL<<32},{.tv_sec=3D1LL<<32}})) =3D=3D 0 failed: = Not supported=0A= FAIL src/functional/utime.exe [status 1]=0A= X src/math/special/acosh.h:9: RN acosh(0x1.001f1c62cf304p+0) want = 0x1.f8d125ff71ccp-6 got 0x1.f8d125ff71cc2p-6 ulperr 1.853 =3D 0x1p+1 + = -0x1.2d785ap-3=0A= X src/math/special/acosh.h:10: RN acosh(0x1.00788c223616fp+0) want = 0x1.f0cb8ee812621p-5 got 0x1.f0cb8ee812623p-5 ulperr 1.724 =3D 0x1p+1 + = -0x1.1b0c1ap-2=0A= X src/math/special/acosh.h:11: RN acosh(0x1.007b7a37c7606p+0) want = 0x1.f6cb68859ae3p-5 got 0x1.f6cb68859ae2ep-5 ulperr -1.855 =3D -0x1p+1 + = 0x1.280488p-3=0A= X src/math/special/acosh.h:12: RN acosh(0x1.01d173033243cp+0) want = 0x1.e7e1b18d99376p-4 got 0x1.e7e1b18d99378p-4 ulperr 1.930 =3D 0x1p+1 + = -0x1.1f3d3ep-4=0A= X src/math/special/acosh.h:13: RN acosh(0x1.01d8f20e90409p+0) want = 0x1.ebca3eea5cda5p-4 got 0x1.ebca3eea5cda3p-4 ulperr -1.652 =3D -0x1p+1 = + 0x1.648602p-2=0A= X src/math/special/acosh.h:14: RN acosh(0x1.01ef6122e68bep+0) want = 0x1.f74df150afc94p-4 got 0x1.f74df150afc92p-4 ulperr -1.762 =3D -0x1p+1 = + 0x1.e79556p-3=0A= X src/math/special/acosh.h:15: RN acosh(0x1.06822faf07879p+0) want = 0x1.ccd73cbc4af78p-3 got 0x1.ccd73cbc4af7ap-3 ulperr 1.674 =3D 0x1p+1 + = -0x1.4df79ep-2=0A= X src/math/special/acosh.h:17: RN acosh(0x1.069d65411ec51p+0) want = 0x1.d0928b08facbap-3 got 0x1.d0928b08facbcp-3 ulperr 1.785 =3D 0x1p+1 + = -0x1.b83338p-3=0A= X src/math/special/acosh.h:18: RN acosh(0x1.071d6b2713d08p+0) want = 0x1.e1bc6a6c345fdp-3 got 0x1.e1bc6a6c345ffp-3 ulperr 1.818 =3D 0x1p+1 + = -0x1.74a04ep-3=0A= X src/math/special/acosh.h:19: RN acosh(0x1.0728405f5140cp+0) want = 0x1.e328ebe92b32cp-3 got 0x1.e328ebe92b32ep-3 ulperr 1.790 =3D 0x1p+1 + = -0x1.ae89ap-3=0A= X src/math/special/acosh.h:20: RN acosh(0x1.07bd2c5c01bcbp+0) want = 0x1.f6513c44c131p-3 got 0x1.f6513c44c1312p-3 ulperr 1.719 =3D 0x1p+1 + = -0x1.203932p-2=0A= X src/math/special/acosh.h:21: RN acosh(0x1.1aae7c452c859p+0) want = 0x1.cf8d69288e386p-2 got 0x1.cf8d69288e384p-2 ulperr -1.723 =3D -0x1p+1 = + 0x1.1b325ap-2=0A= X src/math/special/acosh.h:23: RN acosh(0x1.1b50764626f1ep+0) want = 0x1.d4ec67c71794p-2 got 0x1.d4ec67c717942p-2 ulperr 1.738 =3D 0x1p+1 + = -0x1.0c09dap-2=0A= src/math/special/acosh.h:9: RN acoshl(0x1.001f1c62cf304p+0) want = 0x1.f8d125ff71ccp-6 got 0x1.f8d125ff71cc2p-6 ulperr 1.853 =3D 0x1p+1 + = -0x1.2d785ap-3=0A= src/math/special/acosh.h:10: RN acoshl(0x1.00788c223616fp+0) want = 0x1.f0cb8ee812621p-5 got 0x1.f0cb8ee812623p-5 ulperr 1.724 =3D 0x1p+1 + = -0x1.1b0c1ap-2=0A= src/math/special/acosh.h:11: RN acoshl(0x1.007b7a37c7606p+0) want = 0x1.f6cb68859ae3p-5 got 0x1.f6cb68859ae2ep-5 ulperr -1.855 =3D -0x1p+1 + = 0x1.280488p-3=0A= src/math/special/acosh.h:12: RN acoshl(0x1.01d173033243cp+0) want = 0x1.e7e1b18d99376p-4 got 0x1.e7e1b18d99378p-4 ulperr 1.930 =3D 0x1p+1 + = -0x1.1f3d3ep-4=0A= src/math/special/acosh.h:13: RN acoshl(0x1.01d8f20e90409p+0) want = 0x1.ebca3eea5cda5p-4 got 0x1.ebca3eea5cda3p-4 ulperr -1.652 =3D -0x1p+1 = + 0x1.648602p-2=0A= src/math/special/acosh.h:14: RN acoshl(0x1.01ef6122e68bep+0) want = 0x1.f74df150afc94p-4 got 0x1.f74df150afc92p-4 ulperr -1.762 =3D -0x1p+1 = + 0x1.e79556p-3=0A= src/math/special/acosh.h:15: RN acoshl(0x1.06822faf07879p+0) want = 0x1.ccd73cbc4af78p-3 got 0x1.ccd73cbc4af7ap-3 ulperr 1.674 =3D 0x1p+1 + = -0x1.4df79ep-2=0A= src/math/special/acosh.h:17: RN acoshl(0x1.069d65411ec51p+0) want = 0x1.d0928b08facbap-3 got 0x1.d0928b08facbcp-3 ulperr 1.785 =3D 0x1p+1 + = -0x1.b83338p-3=0A= src/math/special/acosh.h:18: RN acoshl(0x1.071d6b2713d08p+0) want = 0x1.e1bc6a6c345fdp-3 got 0x1.e1bc6a6c345ffp-3 ulperr 1.818 =3D 0x1p+1 + = -0x1.74a04ep-3=0A= src/math/special/acosh.h:19: RN acoshl(0x1.0728405f5140cp+0) want = 0x1.e328ebe92b32cp-3 got 0x1.e328ebe92b32ep-3 ulperr 1.790 =3D 0x1p+1 + = -0x1.ae89ap-3=0A= src/math/special/acosh.h:20: RN acoshl(0x1.07bd2c5c01bcbp+0) want = 0x1.f6513c44c131p-3 got 0x1.f6513c44c1312p-3 ulperr 1.719 =3D 0x1p+1 + = -0x1.203932p-2=0A= src/math/special/acosh.h:21: RN acoshl(0x1.1aae7c452c859p+0) want = 0x1.cf8d69288e386p-2 got 0x1.cf8d69288e384p-2 ulperr -1.723 =3D -0x1p+1 = + 0x1.1b325ap-2=0A= src/math/special/acosh.h:23: RN acoshl(0x1.1b50764626f1ep+0) want = 0x1.d4ec67c71794p-2 got 0x1.d4ec67c717942p-2 ulperr 1.738 =3D 0x1p+1 + = -0x1.0c09dap-2=0A= FAIL src/math/acoshl.exe [status 1]=0A= X src/math/special/asinh.h:7: RN asinh(0x1.fbdd0eedf8143p-3) want = 0x1.f6cc20d7a594ap-3 got 0x1.f6cc20d7a594cp-3 ulperr 1.513 =3D 0x1p+1 + = -0x1.f327a8p-2=0A= X src/math/special/asinh.h:8: RN asinh(0x1.df2723491f88fp-3) want = 0x1.dae2c8444900cp-3 got 0x1.dae2c8444900ap-3 ulperr -1.551 =3D -0x1p+1 = + 0x1.cb8b86p-2=0A= X src/math/special/asinh.h:9: RN asinh(0x1.ef675c6541305p-3) want = 0x1.eab20432c9598p-3 got 0x1.eab20432c959ap-3 ulperr 1.568 =3D 0x1p+1 + = -0x1.ba9e34p-2=0A= X src/math/special/asinh.h:10: RN asinh(0x1.f19df3a1722a9p-3) want = 0x1.ecd8a7f621554p-3 got 0x1.ecd8a7f621552p-3 ulperr -1.535 =3D -0x1p+1 = + 0x1.dbc1a8p-2=0A= X src/math/special/asinh.h:11: RN asinh(0x1.f1af09dcfa7d6p-3) want = 0x1.ece942815ceccp-3 got 0x1.ece942815cecap-3 ulperr -1.526 =3D -0x1p+1 = + 0x1.e5bb5p-2=0A= X src/math/special/asinh.h:12: RN asinh(0x1.f339ebbeac5bap-3) want = 0x1.ee68f10a49c42p-3 got 0x1.ee68f10a49c44p-3 ulperr 1.529 =3D 0x1p+1 + = -0x1.e28cbp-2=0A= X src/math/special/asinh.h:13: RN asinh(0x1.f424275dc8787p-3) want = 0x1.ef4c7fcb51c56p-3 got 0x1.ef4c7fcb51c54p-3 ulperr -1.642 =3D -0x1p+1 = + 0x1.6e4e9p-2=0A= X src/math/special/asinh.h:14: RN asinh(0x1.f60d54a133665p-3) want = 0x1.f127a8dec0c2p-3 got 0x1.f127a8dec0c1ep-3 ulperr -1.512 =3D -0x1p+1 + = 0x1.f3c9eap-2=0A= X src/math/special/asinh.h:15: RN asinh(0x1.fdccdaf285ffdp-3) want = 0x1.f8ad4bed7af4cp-3 got 0x1.f8ad4bed7af4ap-3 ulperr -1.576 =3D -0x1p+1 = + 0x1.b1f1f8p-2=0A= X src/math/special/asinh.h:16: RN asinh(0x1.ff5bec94924c7p-3) want = 0x1.fa30836c3949ap-3 got 0x1.fa30836c39498p-3 ulperr -1.533 =3D -0x1p+1 = + 0x1.de989p-2=0A= X src/math/special/asinh.h:17: RN asinh(0x1.028e8fd61c8a5p-2) want = 0x1.ffc55bd02e9dep-3 got 0x1.ffc55bd02e9ep-3 ulperr 1.670 =3D 0x1p+1 + = -0x1.523c08p-2=0A= X src/math/special/asinh.h:18: RN asinh(0x1.dc71794e1f137p-2) want = 0x1.ccbd41a7d058ap-2 got 0x1.ccbd41a7d0588p-2 ulperr -1.585 =3D -0x1p+1 = + 0x1.a944b8p-2=0A= X src/math/special/asinh.h:19: RN asinh(0x1.df308e177c3cbp-2) want = 0x1.cf3a638145d7ap-2 got 0x1.cf3a638145d78p-2 ulperr -1.505 =3D -0x1p+1 = + 0x1.fb3684p-2=0A= X src/math/special/asinh.h:20: RN asinh(0x1.ea94e1e267746p-2) want = 0x1.d9862533f65f6p-2 got 0x1.d9862533f65f4p-2 ulperr -1.579 =3D -0x1p+1 = + 0x1.af51ecp-2=0A= X src/math/special/asinh.h:21: RN asinh(0x1.ecd4f07608dc7p-2) want = 0x1.db8d6fdcc6d74p-2 got 0x1.db8d6fdcc6d76p-2 ulperr 1.517 =3D 0x1p+1 + = -0x1.eeb48p-2=0A= X src/math/special/asinh.h:22: RN asinh(0x1.f30656c78ee7ep-2) want = 0x1.e1204e364a186p-2 got 0x1.e1204e364a188p-2 ulperr 1.576 =3D 0x1p+1 + = -0x1.b23ffp-2=0A= X src/math/special/asinh.h:23: RN asinh(0x1.f5c0c6e41b969p-2) want = 0x1.e393d3dc3b70ap-2 got 0x1.e393d3dc3b70cp-2 ulperr 1.562 =3D 0x1p+1 + = -0x1.c06dbep-2=0A= X src/math/special/asinh.h:24: RN asinh(0x1.09c58725300e7p-1) want = 0x1.fe2c7f25fb172p-2 got 0x1.fe2c7f25fb174p-2 ulperr 1.579 =3D 0x1p+1 + = -0x1.ae9df6p-2=0A= src/math/special/asinh.h:7: RN asinhl(0x1.fbdd0eedf8143p-3) want = 0x1.f6cc20d7a594ap-3 got 0x1.f6cc20d7a594cp-3 ulperr 1.513 =3D 0x1p+1 + = -0x1.f327a8p-2=0A= src/math/special/asinh.h:8: RN asinhl(0x1.df2723491f88fp-3) want = 0x1.dae2c8444900cp-3 got 0x1.dae2c8444900ap-3 ulperr -1.551 =3D -0x1p+1 = + 0x1.cb8b86p-2=0A= src/math/special/asinh.h:9: RN asinhl(0x1.ef675c6541305p-3) want = 0x1.eab20432c9598p-3 got 0x1.eab20432c959ap-3 ulperr 1.568 =3D 0x1p+1 + = -0x1.ba9e34p-2=0A= src/math/special/asinh.h:10: RN asinhl(0x1.f19df3a1722a9p-3) want = 0x1.ecd8a7f621554p-3 got 0x1.ecd8a7f621552p-3 ulperr -1.535 =3D -0x1p+1 = + 0x1.dbc1a8p-2=0A= src/math/special/asinh.h:11: RN asinhl(0x1.f1af09dcfa7d6p-3) want = 0x1.ece942815ceccp-3 got 0x1.ece942815cecap-3 ulperr -1.526 =3D -0x1p+1 = + 0x1.e5bb5p-2=0A= src/math/special/asinh.h:12: RN asinhl(0x1.f339ebbeac5bap-3) want = 0x1.ee68f10a49c42p-3 got 0x1.ee68f10a49c44p-3 ulperr 1.529 =3D 0x1p+1 + = -0x1.e28cbp-2=0A= src/math/special/asinh.h:13: RN asinhl(0x1.f424275dc8787p-3) want = 0x1.ef4c7fcb51c56p-3 got 0x1.ef4c7fcb51c54p-3 ulperr -1.642 =3D -0x1p+1 = + 0x1.6e4e9p-2=0A= src/math/special/asinh.h:14: RN asinhl(0x1.f60d54a133665p-3) want = 0x1.f127a8dec0c2p-3 got 0x1.f127a8dec0c1ep-3 ulperr -1.512 =3D -0x1p+1 + = 0x1.f3c9eap-2=0A= src/math/special/asinh.h:15: RN asinhl(0x1.fdccdaf285ffdp-3) want = 0x1.f8ad4bed7af4cp-3 got 0x1.f8ad4bed7af4ap-3 ulperr -1.576 =3D -0x1p+1 = + 0x1.b1f1f8p-2=0A= src/math/special/asinh.h:16: RN asinhl(0x1.ff5bec94924c7p-3) want = 0x1.fa30836c3949ap-3 got 0x1.fa30836c39498p-3 ulperr -1.533 =3D -0x1p+1 = + 0x1.de989p-2=0A= src/math/special/asinh.h:17: RN asinhl(0x1.028e8fd61c8a5p-2) want = 0x1.ffc55bd02e9dep-3 got 0x1.ffc55bd02e9ep-3 ulperr 1.670 =3D 0x1p+1 + = -0x1.523c08p-2=0A= src/math/special/asinh.h:18: RN asinhl(0x1.dc71794e1f137p-2) want = 0x1.ccbd41a7d058ap-2 got 0x1.ccbd41a7d0588p-2 ulperr -1.585 =3D -0x1p+1 = + 0x1.a944b8p-2=0A= src/math/special/asinh.h:19: RN asinhl(0x1.df308e177c3cbp-2) want = 0x1.cf3a638145d7ap-2 got 0x1.cf3a638145d78p-2 ulperr -1.505 =3D -0x1p+1 = + 0x1.fb3684p-2=0A= src/math/special/asinh.h:20: RN asinhl(0x1.ea94e1e267746p-2) want = 0x1.d9862533f65f6p-2 got 0x1.d9862533f65f4p-2 ulperr -1.579 =3D -0x1p+1 = + 0x1.af51ecp-2=0A= src/math/special/asinh.h:21: RN asinhl(0x1.ecd4f07608dc7p-2) want = 0x1.db8d6fdcc6d74p-2 got 0x1.db8d6fdcc6d76p-2 ulperr 1.517 =3D 0x1p+1 + = -0x1.eeb48p-2=0A= src/math/special/asinh.h:22: RN asinhl(0x1.f30656c78ee7ep-2) want = 0x1.e1204e364a186p-2 got 0x1.e1204e364a188p-2 ulperr 1.576 =3D 0x1p+1 + = -0x1.b23ffp-2=0A= src/math/special/asinh.h:23: RN asinhl(0x1.f5c0c6e41b969p-2) want = 0x1.e393d3dc3b70ap-2 got 0x1.e393d3dc3b70cp-2 ulperr 1.562 =3D 0x1p+1 + = -0x1.c06dbep-2=0A= src/math/special/asinh.h:24: RN asinhl(0x1.09c58725300e7p-1) want = 0x1.fe2c7f25fb172p-2 got 0x1.fe2c7f25fb174p-2 ulperr 1.579 =3D 0x1p+1 + = -0x1.ae9df6p-2=0A= FAIL src/math/asinhl.exe [status 1]=0A= X src/math/special/erfc.h:6: RN erfc(0x1.5db559fe5c0bap+0) want = 0x1.b53cf571d328fp-5 got 0x1.b53cf571d328cp-5 ulperr -2.609 =3D = -0x1.8p+1 + 0x1.900982p-2=0A= src/math/special/erfc.h:6: RN erfcl(0x1.5db559fe5c0bap+0) want = 0x1.b53cf571d328fp-5 got 0x1.b53cf571d328cp-5 ulperr -2.609 =3D = -0x1.8p+1 + 0x1.900982p-2=0A= FAIL src/math/erfcl.exe [status 1]=0A= X src/math/special/exp2.h:12: bad fp exception: RN = exp2(-0x1.ff8p+9)=3D0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= X src/math/special/exp2.h:18: bad fp exception: RN = exp2(-0x1.ff8p+9)=3D0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= X src/math/special/exp2.h:20: bad fp exception: RN = exp2(-0x1p+10)=3D0x1p-1024, want 0 got INEXACT|UNDERFLOW=0A= X src/math/special/exp2.h:21: bad fp exception: RN = exp2(-0x1.004p+10)=3D0x1p-1025, want 0 got INEXACT|UNDERFLOW=0A= X src/math/special/exp2.h:22: bad fp exception: RN = exp2(-0x1.0c8p+10)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= src/math/special/exp2.h:12: bad fp exception: RN = exp2l(-0x1.ff8p+9)=3D0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= src/math/special/exp2.h:18: bad fp exception: RN = exp2l(-0x1.ff8p+9)=3D0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= src/math/special/exp2.h:20: bad fp exception: RN = exp2l(-0x1p+10)=3D0x1p-1024, want 0 got INEXACT|UNDERFLOW=0A= src/math/special/exp2.h:21: bad fp exception: RN = exp2l(-0x1.004p+10)=3D0x1p-1025, want 0 got INEXACT|UNDERFLOW=0A= src/math/special/exp2.h:22: bad fp exception: RN = exp2l(-0x1.0c8p+10)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= FAIL src/math/exp2l.exe [status 1]=0A= src/math/special/ilogb.h:1: bad fp exception: RN = ilogb(0x0p+0)=3D-2147483648, want INVALID got 0=0A= src/math/special/ilogb.h:2: bad fp exception: RN = ilogb(-0x0p+0)=3D-2147483648, want INVALID got 0=0A= src/math/special/ilogb.h:6: bad fp exception: RN = ilogb(inf)=3D2147483647, want INVALID got 0=0A= src/math/special/ilogb.h:7: bad fp exception: RN = ilogb(-inf)=3D2147483647, want INVALID got 0=0A= src/math/special/ilogb.h:8: bad fp exception: RN = ilogb(nan)=3D-2147483648, want INVALID got 0=0A= FAIL src/math/ilogb.exe [status 1]=0A= src/math/special/ilogbf.h:1: bad fp exception: RN = ilogbf(0x0p+0)=3D-2147483648, want INVALID got 0=0A= src/math/special/ilogbf.h:2: bad fp exception: RN = ilogbf(-0x0p+0)=3D-2147483648, want INVALID got 0=0A= src/math/special/ilogbf.h:6: bad fp exception: RN = ilogbf(inf)=3D2147483647, want INVALID got 0=0A= src/math/special/ilogbf.h:7: bad fp exception: RN = ilogbf(-inf)=3D2147483647, want INVALID got 0=0A= src/math/special/ilogbf.h:8: bad fp exception: RN = ilogbf(-nan)=3D-2147483648, want INVALID got 0=0A= FAIL src/math/ilogbf.exe [status 1]=0A= src/math/special/ilogb.h:1: bad fp exception: RN = ilogbl(0x0p+0)=3D-2147483648, want INVALID got 0=0A= src/math/special/ilogb.h:2: bad fp exception: RN = ilogbl(-0x0p+0)=3D-2147483648, want INVALID got 0=0A= src/math/special/ilogb.h:6: bad fp exception: RN = ilogbl(inf)=3D2147483647, want INVALID got 0=0A= src/math/special/ilogb.h:7: bad fp exception: RN = ilogbl(-inf)=3D2147483647, want INVALID got 0=0A= src/math/special/ilogb.h:8: bad fp exception: RN = ilogbl(nan)=3D-2147483648, want INVALID got 0=0A= FAIL src/math/ilogbl.exe [status 1]=0A= X src/math/special/j0.h:7: RN j0(-0x1.33d132fd04a92p+1) want = 0x1.092b2a541a68ep-19 got 0x1.092b2a541b1ap-19 ulperr 2833.704 =3D = 0x1.624p+11 + -0x1.2ebdbp-2=0A= X src/math/special/j0.h:8: RN j0(-0x1.33d15297be06fp+1) want = 0x1.5352913be3275p-26 got 0x1.5352913ddb41bp-26 ulperr 2064806.000 =3D = 0x1.f81a6p+20 + 0x1.c281e2p-7=0A= X src/math/special/j0.h:9: RN j0(0x1.33d152e971b4p+1) want = -0x1.19b7921f03c8ep-54 got -0x1.00209921727cbp-54 ulperr = 450179413049344.000 =3D 0x1.996f9p+48 + 0x1.ece5dp-5=0A= X src/math/special/j0.h:10: RN j0(0x1.6148f5b2c2e45p+2) want = -0x1.fbb40985f6e34p-56 got -0x1.ebcb069d486ccp-56 ulperr = 279895217274880.000 =3D 0x1.fd205ep+47 + -0x1.1ac8a8p-2=0A= X src/math/special/j0.h:11: RN j0(0x1.14eb56cccdecap+3) want = -0x1.6e8eeb22e5818p-54 got -0x1.6d2a820627412p-54 ulperr = 24492348801024.000 =3D 0x1.64691cp+44 + -0x1.63ab44p-2=0A= X src/math/special/j0.h:12: RN j0(0x1.c071b22fbbafap+1023) want = -0x1.a348b1f34dd1ap-526 got -0x1.a348b1f34d33dp-526 ulperr 2525.019 =3D = 0x1.3bap+11 + 0x1.3153c2p-6=0A= X src/math/special/j0.h:13: RN j0(0x1.f7350b1701ef7p+0) want = 0x1.f32b3a3640292p-3 got 0x1.f32b3a3640296p-3 ulperr 3.947 =3D 0x1p+2 + = -0x1.b3bad8p-5=0A= X src/math/sanity/jn.h:8: RN jn(5, 0x1.1f9ef934745cbp-1) want = 0x1.e274364abf2d5p-17 got 0x1.e274364abf2d2p-17, ulperr -2.504 =3D = -0x1.8p+1 + 0x1.fbe5c8p-2=0A= X src/math/sanity/jnf.h:1: RN jnf(-2, -0x1.0223ap+3) want -0x1.863726p-4 = got -0x1.86372ap-4, ulperr -2.009 =3D -0x1p+1 + -0x1.28885p-7=0A= X src/math/sanity/jnf.h:8: RN jnf(5, 0x1.1f9efap-1) want 0x1.e2743cp-17 = got 0x1.e27442p-17, ulperr 2.537 =3D 0x1.8p+1 + -0x1.d9c372p-2=0A= X src/math/sanity/jnf.h:10: RN jnf(7, -0x1.5b86eap-1) want = -0x1.b39a9cp-24 got -0x1.b39a98p-24, ulperr 1.621 =3D 0x1p+1 + = -0x1.83c12p-2=0A= X src/math/special/lgamma.h:145: RN lgamma(-0x1.4p+1) want = -0x1.ccbf9f5ed0f16p-5,-1 got -0x1.ccbf9f5ed0f2p-5,-1 ulperr -10.465 =3D = -0x1.4p+3 + -0x1.dc4f24p-2=0A= X src/math/sanity/lgammaf.h:3: RN lgammaf(-0x1.0c34b4p+3) want = -0x1.46d732p+3,-1 got -0x1.46d736p+3,-1 ulperr -1.621 =3D -0x1p+1 + = 0x1.83dafep-2=0A= X src/math/sanity/lgammaf_r.h:3: RN lgammaf_r(-0x1.0c34b4p+3) want = -0x1.46d732p+3,-1 got -0x1.46d736p+3,-1 ulperr -1.621 =3D -0x1p+1 + = 0x1.83dafep-2=0A= src/math/special/lgamma.h:145: RN lgammal(-0x1.4p+1) want = -0x1.ccbf9f5ed0f16p-5,-1 got -0x1.ccbf9f5ed0f2p-5,-1 ulperr -10.465 =3D = -0x1.4p+3 + -0x1.dc4f24p-2=0A= FAIL src/math/lgammal.exe [status 1]=0A= X src/math/crlibm/pow.h:13: bad fp exception: RN = pow(0x1p+1,-0x1.0c8p+10)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:72: bad fp exception: RN = pow(0x1p-1074,0x1p+0)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:73: bad fp exception: RN = pow(0x1p-1042,0x1p+0)=3D0x1p-1042, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:75: bad fp exception: RN = pow(-0x1p-1074,0x1p+0)=3D-0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:76: bad fp exception: RN = pow(-0x1p-1042,0x1p+0)=3D-0x1p-1042, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:284: bad fp exception: RN = pow(0x1p-1073,0x1p+0)=3D0x1p-1073, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:300: bad fp exception: RN = pow(0x1p-1024,0x1p+0)=3D0x1p-1024, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:304: bad fp exception: RN = pow(0x1p-1023,0x1p+0)=3D0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:310: bad fp exception: RN = pow(0x1.ffffffffffffcp-1023,0x1p+0)=3D0x1.ffffffffffffcp-1023, want 0 = got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:313: bad fp exception: RN = pow(0x1.ffffffffffffep-1023,0x1p+0)=3D0x1.ffffffffffffep-1023, want 0 = got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:338: bad fp exception: RN = pow(0x1p-537,0x1p+1)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:437: bad fp exception: RN = pow(0x1p+1,-0x1.0c8p+10)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:498: bad fp exception: RN = pow(0x1p+350,-0x1.8p+1)=3D0x1p-1050, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:499: bad fp exception: RN = pow(0x1p+700,-0x1.8p+0)=3D0x1p-1050, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:516: bad fp exception: RN = pow(0x1p+1023,-0x1p+0)=3D0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:544: bad fp exception: RN = pow(-0x1p-1073,0x1p+0)=3D-0x1p-1073, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:548: bad fp exception: RN = pow(-0x1p-1024,0x1p+0)=3D-0x1p-1024, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:551: bad fp exception: RN = pow(-0x1p-1023,0x1p+0)=3D-0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:557: bad fp exception: RN = pow(-0x1.ffffffffffffcp-1023,0x1p+0)=3D-0x1.ffffffffffffcp-1023, want 0 = got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:560: bad fp exception: RN = pow(-0x1.ffffffffffffep-1023,0x1p+0)=3D-0x1.ffffffffffffep-1023, want 0 = got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:581: bad fp exception: RN = pow(-0x1p-537,0x1p+1)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:655: bad fp exception: RN = pow(-0x1p+1,-0x1.0c8p+10)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:695: bad fp exception: RN = pow(-0x1p+350,-0x1.8p+1)=3D-0x1p-1050, want 0 got INEXACT|UNDERFLOW=0A= X src/math/ucb/pow.h:708: bad fp exception: RN = pow(-0x1p+1023,-0x1p+0)=3D-0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/powf.h:103: bad fp exception: RU = powf(0x1.fffffep+127,0x1p+0)=3D0x1.fffffep+127, want 0 got = INEXACT|OVERFLOW=0A= X src/math/ucb/powf.h:530: bad fp exception: RN = powf(0x1.fffff8p-127,0x1p+0)=3D0x1.fffff8p-127, want 0 got = INEXACT|UNDERFLOW=0A= X src/math/ucb/powf.h:533: bad fp exception: RN = powf(0x1.fffffcp-127,0x1p+0)=3D0x1.fffffcp-127, want 0 got = INEXACT|UNDERFLOW=0A= X src/math/ucb/powf.h:719: bad fp exception: RN = powf(-0x1.fffff8p-127,0x1p+0)=3D-0x1.fffff8p-127, want 0 got = INEXACT|UNDERFLOW=0A= X src/math/ucb/powf.h:722: bad fp exception: RN = powf(-0x1.fffffcp-127,0x1p+0)=3D-0x1.fffffcp-127, want 0 got = INEXACT|UNDERFLOW=0A= FAIL src/math/powf.exe [status 1]=0A= src/math/crlibm/pow.h:13: bad fp exception: RN = powl(0x1p+1,-0x1.0c8p+10)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:72: bad fp exception: RN = powl(0x1p-1074,0x1p+0)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:73: bad fp exception: RN = powl(0x1p-1042,0x1p+0)=3D0x1p-1042, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:75: bad fp exception: RN = powl(-0x1p-1074,0x1p+0)=3D-0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:76: bad fp exception: RN = powl(-0x1p-1042,0x1p+0)=3D-0x1p-1042, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:284: bad fp exception: RN = powl(0x1p-1073,0x1p+0)=3D0x1p-1073, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:300: bad fp exception: RN = powl(0x1p-1024,0x1p+0)=3D0x1p-1024, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:304: bad fp exception: RN = powl(0x1p-1023,0x1p+0)=3D0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:310: bad fp exception: RN = powl(0x1.ffffffffffffcp-1023,0x1p+0)=3D0x1.ffffffffffffcp-1023, want 0 = got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:313: bad fp exception: RN = powl(0x1.ffffffffffffep-1023,0x1p+0)=3D0x1.ffffffffffffep-1023, want 0 = got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:338: bad fp exception: RN = powl(0x1p-537,0x1p+1)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:437: bad fp exception: RN = powl(0x1p+1,-0x1.0c8p+10)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:498: bad fp exception: RN = powl(0x1p+350,-0x1.8p+1)=3D0x1p-1050, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:499: bad fp exception: RN = powl(0x1p+700,-0x1.8p+0)=3D0x1p-1050, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:516: bad fp exception: RN = powl(0x1p+1023,-0x1p+0)=3D0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:544: bad fp exception: RN = powl(-0x1p-1073,0x1p+0)=3D-0x1p-1073, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:548: bad fp exception: RN = powl(-0x1p-1024,0x1p+0)=3D-0x1p-1024, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:551: bad fp exception: RN = powl(-0x1p-1023,0x1p+0)=3D-0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:557: bad fp exception: RN = powl(-0x1.ffffffffffffcp-1023,0x1p+0)=3D-0x1.ffffffffffffcp-1023, want 0 = got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:560: bad fp exception: RN = powl(-0x1.ffffffffffffep-1023,0x1p+0)=3D-0x1.ffffffffffffep-1023, want 0 = got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:581: bad fp exception: RN = powl(-0x1p-537,0x1p+1)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:655: bad fp exception: RN = powl(-0x1p+1,-0x1.0c8p+10)=3D0x1p-1074, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:695: bad fp exception: RN = powl(-0x1p+350,-0x1.8p+1)=3D-0x1p-1050, want 0 got INEXACT|UNDERFLOW=0A= src/math/ucb/pow.h:708: bad fp exception: RN = powl(-0x1p+1023,-0x1p+0)=3D-0x1p-1023, want 0 got INEXACT|UNDERFLOW=0A= FAIL src/math/powl.exe [status 1]=0A= X src/math/crlibm/sinh.h:84: RN sinh(0x1.d3e0d2f5d98d6p-2) want = 0x1.e45428082fb8cp-2 got 0x1.e45428082fb8ap-2 ulperr -1.500 =3D -0x1p+1 = + 0x1p-1=0A= X src/math/crlibm/sinh.h:84: RN sinhl(0x1.d3e0d2f5d98d6p-2) want = 0x1.e45428082fb8cp-2 got 0x1.e45428082fb8ap-2 ulperr -1.500 =3D -0x1p+1 = + 0x1p-1=0A= X src/math/sanity/tgamma.h:4: RN tgamma(-0x1.a206f0a19dcc4p+2) want = -0x1.9fd0c1ce12f14p-10 got -0x1.9fd0c1ce12f12p-10 ulperr 1.597 =3D = 0x1p+1 + -0x1.9c637p-2=0A= X src/math/sanity/tgamma.h:7: RN tgamma(-0x1.a05cc754481d1p-2) want = -0x1.d9a22b2f3f253p+1 got -0x1.d9a22b2f3f251p+1 ulperr 1.674 =3D 0x1p+1 = + -0x1.4d79f4p-2=0A= src/math/special/tgamma.h:5: bad fp exception: RN tgamma(-0x1p+0)=3Dnan, = want INVALID got 0=0A= src/math/special/tgamma.h:7: bad fp exception: RN tgamma(-0x1p+1)=3Dnan, = want INVALID got 0=0A= X src/math/special/tgamma.h:47: RN tgamma(0x1p-53) want = 0x1.fffffffffffffp+52 got 0x1.ffffffffffffdp+52 ulperr -2.423 =3D = -0x1p+1 + -0x1.b0ee6p-2=0A= X src/math/special/tgamma.h:60: RN tgamma(-0x1.0000000000001p+0) want = 0x1.fffffffffffffp+51 got 0x1.ffffffffffffdp+51 ulperr -2.154 =3D = -0x1p+1 + -0x1.3c467ep-3=0A= X src/math/special/tgamma.h:62: RN tgamma(-0x1.0000000000003p+0) want = 0x1.5555555555554p+50 got 0x1.5555555555552p+50 ulperr -1.642 =3D = -0x1p+1 + 0x1.6e642cp-2=0A= X src/math/special/tgamma.h:66: RN tgamma(-0x1.ffffffffffffep+0) want = 0x1.0000000000002p+50 got 0x1.0000000000004p+50 ulperr 2.154 =3D 0x1p+1 = + 0x1.3c467ep-3=0A= X src/math/special/tgamma.h:68: RN tgamma(-0x1.0000000000001p+1) want = -0x1.ffffffffffffcp+49 got -0x1.ffffffffffff7p+49 ulperr 5.309 =3D = 0x1.4p+2 + 0x1.3c467ep-2=0A= X src/math/special/tgamma.h:72: RN tgamma(-0x1.7fffffffffffdp+1) want = -0x1.c71c71c71c72ap+46 got -0x1.c71c71c71c72cp+46 ulperr -2.157 =3D = -0x1p+1 + -0x1.4177f6p-3=0A= X src/math/special/tgamma.h:82: RN tgamma(-0x1.59fffffffffffp+7) want = -0x1.46b1fa841aaa6p-997 got -0x1.46b1fa841aaa8p-997 ulperr -1.801 =3D = -0x1p+1 + 0x1.979e28p-3=0A= X src/math/special/tgamma.h:83: RN tgamma(-0x1.5a00000000001p+7) want = 0x1.46b1fa841a412p-997 got 0x1.46b1fa841a41p-997 ulperr -1.700 =3D = -0x1p+1 + 0x1.333de2p-2=0A= X src/math/special/tgamma.h:84: RN tgamma(-0x1.5bfffffffffffp+7) want = 0x1.e0a7b14f99fdbp-1005 got 0x1.e0a7b14f99fddp-1005 ulperr 1.579 =3D = 0x1p+1 + -0x1.af416ap-2=0A= X src/math/special/tgamma.h:85: RN tgamma(-0x1.5c00000000001p+7) want = -0x1.e0a7b14f9962ap-1005 got -0x1.e0a7b14f9962cp-1005 ulperr -1.685 =3D = -0x1p+1 + 0x1.42ddc4p-2=0A= X src/math/special/tgamma.h:88: RN tgamma(-0x1.5ffffffffffffp+7) want = 0x1.ff5df5f533fd3p-1020 got 0x1.ff5df5f533fd6p-1020 ulperr 2.513 =3D = 0x1.8p+1 + -0x1.f234a4p-2=0A= X src/math/special/tgamma.h:119: RN tgamma(-0x1.8p+0) want = 0x1.2e7fb0bcdf4f2p+1 got 0x1.2e7fb0bcdf4fp+1 ulperr -1.770 =3D -0x1p+1 + = 0x1.d7697p-3=0A= X src/math/special/tgamma.h:136: RN tgamma(-0x1.02p+6) want = -0x1.912276590832ep-298 got -0x1.912276590833p-298 ulperr -1.662 =3D = -0x1p+1 + 0x1.59f79ap-2=0A= X src/math/special/tgamma.h:141: RN tgamma(-0x1.55p+7) want = -0x1.7d2374dfcda7ap-1022 got -0x1.7d2374dfcda78p-1022 ulperr 1.778 =3D = 0x1p+1 + -0x1.c68fa4p-3=0A= FAIL src/math/tgamma.exe [status 1]=0A= src/math/special/tgammaf.h:4: bad fp exception: RN = tgammaf(-0x1p+0)=3D-nan, want INVALID got 0=0A= src/math/special/tgammaf.h:6: bad fp exception: RN = tgammaf(-0x1p+1)=3D-nan, want INVALID got 0=0A= FAIL src/math/tgammaf.exe [status 1]=0A= src/math/special/tgamma.h:5: bad fp exception: RN = tgammal(-0x1p+0)=3Dnan, want INVALID got 0=0A= src/math/special/tgamma.h:7: bad fp exception: RN = tgammal(-0x1p+1)=3Dnan, want INVALID got 0=0A= src/math/special/tgamma.h:47: RN tgammal(0x1p-53) want = 0x1.fffffffffffffp+52 got 0x1.ffffffffffffdp+52 ulperr -2.423 =3D = -0x1p+1 + -0x1.b0ee6p-2=0A= src/math/special/tgamma.h:60: RN tgammal(-0x1.0000000000001p+0) want = 0x1.fffffffffffffp+51 got 0x1.ffffffffffffdp+51 ulperr -2.154 =3D = -0x1p+1 + -0x1.3c467ep-3=0A= src/math/special/tgamma.h:66: RN tgammal(-0x1.ffffffffffffep+0) want = 0x1.0000000000002p+50 got 0x1.0000000000004p+50 ulperr 2.154 =3D 0x1p+1 = + 0x1.3c467ep-3=0A= src/math/special/tgamma.h:68: RN tgammal(-0x1.0000000000001p+1) want = -0x1.ffffffffffffcp+49 got -0x1.ffffffffffff7p+49 ulperr 5.309 =3D = 0x1.4p+2 + 0x1.3c467ep-2=0A= src/math/special/tgamma.h:72: RN tgammal(-0x1.7fffffffffffdp+1) want = -0x1.c71c71c71c72ap+46 got -0x1.c71c71c71c72cp+46 ulperr -2.157 =3D = -0x1p+1 + -0x1.4177f6p-3=0A= src/math/special/tgamma.h:88: RN tgammal(-0x1.5ffffffffffffp+7) want = 0x1.ff5df5f533fd3p-1020 got 0x1.ff5df5f533fd6p-1020 ulperr 2.513 =3D = 0x1.8p+1 + -0x1.f234a4p-2=0A= FAIL src/math/tgammal.exe [status 1]=0A= src/math/sanity/y0.h:1: bad fp exception: RN = y0(-0x1.02239f3c6a8f1p+3)=3Dnan, want INVALID got 0=0A= src/math/sanity/y0.h:3: bad fp exception: RN = y0(-0x1.0c34b3e01e6e7p+3)=3Dnan, want INVALID got 0=0A= src/math/sanity/y0.h:4: bad fp exception: RN = y0(-0x1.a206f0a19dcc4p+2)=3Dnan, want INVALID got 0=0A= src/math/sanity/y0.h:7: bad fp exception: RN = y0(-0x1.a05cc754481d1p-2)=3Dnan, want INVALID got 0=0A= src/math/sanity/y0.h:10: bad fp exception: RN = y0(-0x1.5b86ea8118a0ep-1)=3Dnan, want INVALID got 0=0A= src/math/special/y0.h:1: bad fp exception: RN y0(0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/y0.h:2: bad fp exception: RN y0(-0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/y0.h:3: bad fp exception: RN y0(-0x1p+0)=3Dnan, want = INVALID got 0=0A= src/math/special/y0.h:5: bad fp exception: RN y0(-inf)=3Dnan, want = INVALID got 0=0A= X src/math/special/y0.h:8: RN y0(0x1.c982eb8d417eap-1) want = -0x1.af74bfa0f1304p-56 got -0x1p-55 ulperr -1416944204906496.000 =3D = -0x1.422d02p+50 + 0x1.11721cp-2=0A= X src/math/special/y0.h:9: RN y0(0x1.c982eb8d417ebp-1) want = 0x1.5666419c0f3c9p-54 got 0x1.2p-54 ulperr -957005015547904.000 =3D = -0x1.b3320cp+49 + 0x1.dc02a8p-2=0A= X src/math/special/y0.h:10: RN y0(0x1.fa9534d98569bp+1) want = 0x1.384a000f3fcecp-53 got 0x1.3004a968fceadp-53 ulperr = -145502385471488.000 =3D -0x1.08aad4p+47 + 0x1.58e17p-6=0A= X src/math/special/y0.h:11: RN y0(0x1.fa9534d98569cp+1) want = -0x1.8fa8956b4b481p-55 got -0x1.8f4eb84cc2a33p-55 ulperr = 6175389646848.000 =3D 0x1.67747ap+42 + 0x1.54cfbep-2=0A= X src/math/special/y0.h:12: RN y0(0x1.c581dc4e72102p+2) want = -0x1.14bb186dc408dp-52 got -0x1.16eb61aad4cacp-52 ulperr = -38502565675008.000 =3D -0x1.18249ep+45 + -0x1.163cfp-2=0A= X src/math/special/y0.h:13: RN y0(0x1.c581dc4e72103p+2) want = 0x1.e91b198d39ce2p-56 got 0x1.dac1abb064c09p-56 ulperr = -252436132397056.000 =3D -0x1.cb2dbcp+47 + -0x1.ee1b6ep-2=0A= FAIL src/math/y0.exe [status 1]=0A= src/math/sanity/y0f.h:1: bad fp exception: RN y0f(-0x1.0223ap+3)=3D-nan, = want INVALID got 0=0A= X src/math/sanity/y0f.h:2: RN y0f(0x1.161868p+2) want -0x1.293dbep-3 got = -0x1.293dc2p-3 ulperr -1.910 =3D -0x1p+1 + 0x1.6ffc42p-4=0A= src/math/sanity/y0f.h:3: bad fp exception: RN = y0f(-0x1.0c34b4p+3)=3D-nan, want INVALID got 0=0A= src/math/sanity/y0f.h:4: bad fp exception: RN y0f(-0x1.a206fp+2)=3D-nan, = want INVALID got 0=0A= src/math/sanity/y0f.h:7: bad fp exception: RN = y0f(-0x1.a05cc8p-2)=3D-nan, want INVALID got 0=0A= src/math/sanity/y0f.h:10: bad fp exception: RN = y0f(-0x1.5b86eap-1)=3D-nan, want INVALID got 0=0A= src/math/special/y0f.h:1: bad fp exception: RN y0f(0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/y0f.h:2: bad fp exception: RN y0f(-0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/y0f.h:3: bad fp exception: RN y0f(-0x1p+0)=3D-nan, want = INVALID got 0=0A= src/math/special/y0f.h:5: bad fp exception: RN y0f(-inf)=3D-nan, want = INVALID got 0=0A= X src/math/special/y0f.h:7: RN y0f(0x1.0c4a3ap+0) want 0x1.ff138ep-4 got = 0x1.ff1386p-4 ulperr -4.180 =3D -0x1.fffffep+1 + -0x1.71585ap-3=0A= X src/math/special/y0f.h:8: RN y0f(0x1.8ae5d4p-1) want -0x1.d88a5ap-4 = got -0x1.d88a5p-4 ulperr 4.919 =3D 0x1.4p+2 + -0x1.4d601ap-4=0A= X src/math/special/y0f.h:9: RN y0f(0x1.fa9536p+1) want -0x1.da2946p-25 = got -0x1.c5c23p-25 ulperr 668554.625 =3D 0x1.46716p+19 + -0x1.88a2bcp-2=0A= FAIL src/math/y0f.exe [status 1]=0A= src/math/sanity/y1.h:1: bad fp exception: RN = y1(-0x1.02239f3c6a8f1p+3)=3Dnan, want INVALID got 0=0A= src/math/sanity/y1.h:3: bad fp exception: RN = y1(-0x1.0c34b3e01e6e7p+3)=3Dnan, want INVALID got 0=0A= src/math/sanity/y1.h:4: bad fp exception: RN = y1(-0x1.a206f0a19dcc4p+2)=3Dnan, want INVALID got 0=0A= src/math/sanity/y1.h:7: bad fp exception: RN = y1(-0x1.a05cc754481d1p-2)=3Dnan, want INVALID got 0=0A= src/math/sanity/y1.h:10: bad fp exception: RN = y1(-0x1.5b86ea8118a0ep-1)=3Dnan, want INVALID got 0=0A= src/math/special/y1.h:1: bad fp exception: RN y1(0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/y1.h:2: bad fp exception: RN y1(-0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/y1.h:3: bad fp exception: RN y1(-0x1p+0)=3Dnan, want = INVALID got 0=0A= src/math/special/y1.h:5: bad fp exception: RN y1(-inf)=3Dnan, want = INVALID got 0=0A= FAIL src/math/y1.exe [status 1]=0A= src/math/sanity/y1f.h:1: bad fp exception: RN y1f(-0x1.0223ap+3)=3D-nan, = want INVALID got 0=0A= src/math/sanity/y1f.h:3: bad fp exception: RN = y1f(-0x1.0c34b4p+3)=3D-nan, want INVALID got 0=0A= src/math/sanity/y1f.h:4: bad fp exception: RN y1f(-0x1.a206fp+2)=3D-nan, = want INVALID got 0=0A= src/math/sanity/y1f.h:7: bad fp exception: RN = y1f(-0x1.a05cc8p-2)=3D-nan, want INVALID got 0=0A= src/math/sanity/y1f.h:10: bad fp exception: RN = y1f(-0x1.5b86eap-1)=3D-nan, want INVALID got 0=0A= src/math/special/y1f.h:1: bad fp exception: RN y1f(0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/y1f.h:2: bad fp exception: RN y1f(-0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/y1f.h:3: bad fp exception: RN y1f(-0x1p+0)=3D-nan, want = INVALID got 0=0A= src/math/special/y1f.h:5: bad fp exception: RN y1f(-inf)=3D-nan, want = INVALID got 0=0A= FAIL src/math/y1f.exe [status 1]=0A= src/math/sanity/yn.h:1: bad fp exception: RN yn(-2, = -0x1.02239f3c6a8f1p+3)=3Dnan, want INVALID got 0=0A= src/math/sanity/yn.h:3: bad fp exception: RN yn(0, = -0x1.0c34b3e01e6e7p+3)=3Dnan, want INVALID got 0=0A= src/math/sanity/yn.h:4: bad fp exception: RN yn(1, = -0x1.a206f0a19dcc4p+2)=3Dnan, want INVALID got 0=0A= src/math/sanity/yn.h:7: bad fp exception: RN yn(4, = -0x1.a05cc754481d1p-2)=3Dnan, want INVALID got 0=0A= src/math/sanity/yn.h:10: bad fp exception: RN yn(7, = -0x1.5b86ea8118a0ep-1)=3Dnan, want INVALID got 0=0A= src/math/special/yn.h:1: bad fp exception: RN yn(0, 0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/yn.h:2: bad fp exception: RN yn(0, -0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/yn.h:3: bad fp exception: RN yn(0, -0x1p+0)=3Dnan, want = INVALID got 0=0A= src/math/special/yn.h:5: bad fp exception: RN yn(0, -inf)=3Dnan, want = INVALID got 0=0A= src/math/special/yn.h:7: bad fp exception: RN yn(1, 0x0p+0)=3D-inf, want = DIVBYZERO got 0=0A= src/math/special/yn.h:8: bad fp exception: RN yn(1, -0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/yn.h:9: bad fp exception: RN yn(1, -0x1p+0)=3Dnan, want = INVALID got 0=0A= src/math/special/yn.h:11: bad fp exception: RN yn(1, -inf)=3Dnan, want = INVALID got 0=0A= src/math/special/yn.h:13: bad fp exception: RN yn(-1, 0x0p+0)=3Dinf, = want DIVBYZERO got 0=0A= src/math/special/yn.h:14: bad fp exception: RN yn(-1, -0x0p+0)=3Dinf, = want DIVBYZERO got 0=0A= src/math/special/yn.h:15: bad fp exception: RN yn(-1, -0x1p+0)=3Dnan, = want INVALID got 0=0A= src/math/special/yn.h:17: bad fp exception: RN yn(-1, -inf)=3Dnan, want = INVALID got 0=0A= src/math/special/yn.h:19: bad fp exception: RN yn(2, 0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/yn.h:20: bad fp exception: RN yn(2, -0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/yn.h:21: bad fp exception: RN yn(2, -0x1p+0)=3Dnan, = want INVALID got 0=0A= src/math/special/yn.h:23: bad fp exception: RN yn(2, -inf)=3Dnan, want = INVALID got 0=0A= FAIL src/math/yn.exe [status 1]=0A= src/math/sanity/ynf.h:1: bad fp exception: RN ynf(-2, = -0x1.0223ap+3)=3D-nan, want INVALID got 0=0A= src/math/sanity/ynf.h:3: bad fp exception: RN ynf(0, = -0x1.0c34b4p+3)=3D-nan, want INVALID got 0=0A= src/math/sanity/ynf.h:4: bad fp exception: RN ynf(1, = -0x1.a206fp+2)=3D-nan, want INVALID got 0=0A= X src/math/sanity/ynf.h:6: RN ynf(3, 0x1.52efdp-1) want -0x1.2935d2p+4 = got -0x1.2935d6p+4, ulperr -1.920 =3D -0x1p+1 + 0x1.47d13p-4=0A= src/math/sanity/ynf.h:7: bad fp exception: RN ynf(4, = -0x1.a05cc8p-2)=3D-nan, want INVALID got 0=0A= X src/math/sanity/ynf.h:9: RN ynf(6, 0x1.8c5dbp-1) want -0x1.6dbc1cp+13 = got -0x1.6dbc18p+13, ulperr 2.115 =3D 0x1p+1 + 0x1.d597eep-4=0A= src/math/sanity/ynf.h:10: bad fp exception: RN ynf(7, = -0x1.5b86eap-1)=3D-nan, want INVALID got 0=0A= src/math/special/ynf.h:1: bad fp exception: RN ynf(0, 0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/ynf.h:2: bad fp exception: RN ynf(0, -0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/ynf.h:3: bad fp exception: RN ynf(0, -0x1p+0)=3D-nan, = want INVALID got 0=0A= src/math/special/ynf.h:5: bad fp exception: RN ynf(0, -inf)=3D-nan, want = INVALID got 0=0A= src/math/special/ynf.h:7: bad fp exception: RN ynf(1, 0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/ynf.h:8: bad fp exception: RN ynf(1, -0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/ynf.h:9: bad fp exception: RN ynf(1, -0x1p+0)=3D-nan, = want INVALID got 0=0A= src/math/special/ynf.h:11: bad fp exception: RN ynf(1, -inf)=3D-nan, = want INVALID got 0=0A= src/math/special/ynf.h:13: bad fp exception: RN ynf(-1, 0x0p+0)=3Dinf, = want DIVBYZERO got 0=0A= src/math/special/ynf.h:14: bad fp exception: RN ynf(-1, -0x0p+0)=3Dinf, = want DIVBYZERO got 0=0A= src/math/special/ynf.h:15: bad fp exception: RN ynf(-1, -0x1p+0)=3D-nan, = want INVALID got 0=0A= src/math/special/ynf.h:17: bad fp exception: RN ynf(-1, -inf)=3D-nan, = want INVALID got 0=0A= src/math/special/ynf.h:19: bad fp exception: RN ynf(2, 0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/ynf.h:20: bad fp exception: RN ynf(2, -0x0p+0)=3D-inf, = want DIVBYZERO got 0=0A= src/math/special/ynf.h:21: bad fp exception: RN ynf(2, -0x1p+0)=3D-nan, = want INVALID got 0=0A= src/math/special/ynf.h:23: bad fp exception: RN ynf(2, -inf)=3D-nan, = want INVALID got 0=0A= FAIL src/math/ynf.exe [status 1]=0A= src/regression/malloc-brk-fail.c:31: malloc(10000) succeeded after = memory is filled=0A= FAIL src/regression/malloc-brk-fail.exe [status 1]=0A= src/regression/pthread-robust-detach.c:33: = pthread_mutexattr_setrobust(&mtx_a, 1) failed: (pshared=3D=3D0) got 38 = "Function not implemented" want 0 "No error information"=0A= src/regression/pthread-robust-detach.c:50: pthread_mutex_timedlock(&mtx, = &ts) failed: (pshared=3D=3D0) got 110 "Operation timed out" want 130 = "Previous owner died"=0A= src/regression/pthread-robust-detach.c:33: = pthread_mutexattr_setrobust(&mtx_a, 1) failed: (pshared=3D=3D1) got 38 = "Function not implemented" want 0 "No error information"=0A= src/regression/pthread-robust-detach.c:50: pthread_mutex_timedlock(&mtx, = &ts) failed: (pshared=3D=3D1) got 110 "Operation timed out" want 130 = "Previous owner died"=0A= FAIL src/regression/pthread-robust-detach-static.exe [status 1]=0A= src/regression/pthread-robust-detach.c:33: = pthread_mutexattr_setrobust(&mtx_a, 1) failed: (pshared=3D=3D0) got 38 = "Function not implemented" want 0 "No error information"=0A= src/regression/pthread-robust-detach.c:50: pthread_mutex_timedlock(&mtx, = &ts) failed: (pshared=3D=3D0) got 110 "Operation timed out" want 130 = "Previous owner died"=0A= src/regression/pthread-robust-detach.c:33: = pthread_mutexattr_setrobust(&mtx_a, 1) failed: (pshared=3D=3D1) got 38 = "Function not implemented" want 0 "No error information"=0A= src/regression/pthread-robust-detach.c:50: pthread_mutex_timedlock(&mtx, = &ts) failed: (pshared=3D=3D1) got 110 "Operation timed out" want 130 = "Previous owner died"=0A= FAIL src/regression/pthread-robust-detach.exe [status 1]=0A= ------=_NextPart_000_1109_01D68C40.F70E6680--