diff options
author | 2010-05-05 12:01:14 +0000 | |
---|---|---|
committer | 2010-05-05 12:01:14 +0000 | |
commit | 0eb761ddf8014aba46c4edb3968babf6e74958d7 (patch) | |
tree | a1170617c89151354aa5d2e0ca69dce4b756bfe8 | |
parent | Unconditionally set HAVE_ISINF and HAVE_ISNAN in the generated (diff) | |
download | wireguard-openbsd-0eb761ddf8014aba46c4edb3968babf6e74958d7.tar.xz wireguard-openbsd-0eb761ddf8014aba46c4edb3968babf6e74958d7.zip |
Tweak inline asm to prevent gcc4 from optimizing away crucial bits of it.
ok miod@
-rw-r--r-- | lib/libm/arch/hppa/s_ceil.c | 6 | ||||
-rw-r--r-- | lib/libm/arch/hppa/s_ceilf.c | 6 | ||||
-rw-r--r-- | lib/libm/arch/hppa/s_floor.c | 6 | ||||
-rw-r--r-- | lib/libm/arch/hppa/s_floorf.c | 6 | ||||
-rw-r--r-- | lib/libm/arch/hppa/s_round.c | 6 | ||||
-rw-r--r-- | lib/libm/arch/hppa/s_roundf.c | 6 | ||||
-rw-r--r-- | lib/libm/arch/hppa/s_trunc.c | 6 | ||||
-rw-r--r-- | lib/libm/arch/hppa/s_truncf.c | 6 |
8 files changed, 24 insertions, 24 deletions
diff --git a/lib/libm/arch/hppa/s_ceil.c b/lib/libm/arch/hppa/s_ceil.c index 692300f40f8..e3dc53ff180 100644 --- a/lib/libm/arch/hppa/s_ceil.c +++ b/lib/libm/arch/hppa/s_ceil.c @@ -11,13 +11,13 @@ ceil(double x) { u_int64_t ofpsr, fpsr; - __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr)); + __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory"); fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) | ((u_int64_t)FP_RP << (9 + 32)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory"); __asm__ __volatile__("frnd,dbl %0,%0" : "+f" (x)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory"); return (x); } diff --git a/lib/libm/arch/hppa/s_ceilf.c b/lib/libm/arch/hppa/s_ceilf.c index dcb1e1e0b5d..f72a14f4ec1 100644 --- a/lib/libm/arch/hppa/s_ceilf.c +++ b/lib/libm/arch/hppa/s_ceilf.c @@ -11,13 +11,13 @@ ceilf(float x) { u_int64_t ofpsr, fpsr; - __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr)); + __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory"); fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) | ((u_int64_t)FP_RP << (9 + 32)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory"); __asm__ __volatile__("frnd,sgl %0,%0" : "+f" (x)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory"); return (x); } diff --git a/lib/libm/arch/hppa/s_floor.c b/lib/libm/arch/hppa/s_floor.c index cea213d8fcb..6a84aad4b2a 100644 --- a/lib/libm/arch/hppa/s_floor.c +++ b/lib/libm/arch/hppa/s_floor.c @@ -11,12 +11,12 @@ floor(double x) { u_int64_t ofpsr, fpsr; - __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr)); + __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory"); fpsr = ofpsr | ((u_int64_t)FP_RM << (9 + 32)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory"); __asm__ __volatile__("frnd,dbl %0,%0" : "+f" (x)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory"); return (x); } diff --git a/lib/libm/arch/hppa/s_floorf.c b/lib/libm/arch/hppa/s_floorf.c index e503ea32210..d3e19684960 100644 --- a/lib/libm/arch/hppa/s_floorf.c +++ b/lib/libm/arch/hppa/s_floorf.c @@ -11,12 +11,12 @@ floorf(float x) { u_int64_t ofpsr, fpsr; - __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr)); + __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory"); fpsr = ofpsr | ((u_int64_t)FP_RM << (9 + 32)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory"); __asm__ __volatile__("frnd,sgl %0,%0" : "+f" (x)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory"); return (x); } diff --git a/lib/libm/arch/hppa/s_round.c b/lib/libm/arch/hppa/s_round.c index 80421933c17..a9cda68c22a 100644 --- a/lib/libm/arch/hppa/s_round.c +++ b/lib/libm/arch/hppa/s_round.c @@ -11,13 +11,13 @@ round(double x) { u_int64_t ofpsr, fpsr; - __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr)); + __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory"); fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) | ((u_int64_t)FP_RN << (9 + 32)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory"); __asm__ __volatile__("frnd,dbl %0,%0" : "+f" (x)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory"); return (x); } diff --git a/lib/libm/arch/hppa/s_roundf.c b/lib/libm/arch/hppa/s_roundf.c index 91e993d7e44..c7ed8e4c5b6 100644 --- a/lib/libm/arch/hppa/s_roundf.c +++ b/lib/libm/arch/hppa/s_roundf.c @@ -11,13 +11,13 @@ roundf(float x) { u_int64_t ofpsr, fpsr; - __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr)); + __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory"); fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) | ((u_int64_t)FP_RN << (9 + 32)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory"); __asm__ __volatile__("frnd,sgl %0,%0" : "+f" (x)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory"); return (x); } diff --git a/lib/libm/arch/hppa/s_trunc.c b/lib/libm/arch/hppa/s_trunc.c index 9d54ec23845..22e2b76349e 100644 --- a/lib/libm/arch/hppa/s_trunc.c +++ b/lib/libm/arch/hppa/s_trunc.c @@ -11,13 +11,13 @@ trunc(double x) { u_int64_t ofpsr, fpsr; - __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr)); + __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory"); fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) | ((u_int64_t)FP_RZ << (9 + 32)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory"); __asm__ __volatile__("frnd,dbl %0,%0" : "+f" (x)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory"); return (x); } diff --git a/lib/libm/arch/hppa/s_truncf.c b/lib/libm/arch/hppa/s_truncf.c index 5bc42b7255d..bc034b4ca79 100644 --- a/lib/libm/arch/hppa/s_truncf.c +++ b/lib/libm/arch/hppa/s_truncf.c @@ -11,13 +11,13 @@ truncf(float x) { u_int64_t ofpsr, fpsr; - __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr)); + __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory"); fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) | ((u_int64_t)FP_RZ << (9 + 32)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory"); __asm__ __volatile__("frnd,sgl %0,%0" : "+f" (x)); - __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr)); + __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory"); return (x); } |