aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarat Dukhan <marat@fb.com>2017-07-05 23:22:43 -0700
committerMarat Dukhan <marat@fb.com>2017-07-05 23:22:43 -0700
commitf7960924cb1f67e06f6529dba09eeda9baa4cacb (patch)
tree7c9ae2822fc7ba86c4838712e9dea54338ca3308
parent1b244039601e7ab2d78c2c162ba5be6e0e89ba45 (diff)
downloadFXdiv-f7960924cb1f67e06f6529dba09eeda9baa4cacb.tar.gz
Inline asm: fix specification (potential bug)
-rw-r--r--include/fxdiv.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/include/fxdiv.h b/include/fxdiv.h
index 01505fb..5647db3 100644
--- a/include/fxdiv.h
+++ b/include/fxdiv.h
@@ -156,14 +156,14 @@ static inline struct fxdiv_divisor_uint32_t fxdiv_init_uint32_t(uint32_t d) {
l_minus_1 += 1;
}
#endif
- const uint32_t u_hi = (UINT32_C(2) << (uint32_t) l_minus_1) - d;
+ uint32_t u_hi = (UINT32_C(2) << (uint32_t) l_minus_1) - d;
/* Division of 64-bit number u_hi:UINT32_C(0) by 32-bit number d, 32-bit quotient output q */
#if defined(__GNUC__) && defined(__i386__)
uint32_t q;
__asm__("DIVL %[d]"
- : "=a" (q)
- : [d] "r" (d), "a" (0), "d" (u_hi));
+ : "=a" (q), "+d" (u_hi)
+ : [d] "r" (d), "a" (0));
#else
const uint32_t q = ((uint64_t) u_hi << 32) / d;
#endif
@@ -255,8 +255,8 @@ static inline struct fxdiv_divisor_uint64_t fxdiv_init_uint64_t(uint64_t d) {
#if defined(__GNUC__) && defined(__x86_64__)
uint64_t q;
__asm__("DIVQ %[d]"
- : "=a" (q)
- : [d] "r" (d), "a" (UINT64_C(0)), "d" (u_hi));
+ : "=a" (q), "+d" (u_hi)
+ : [d] "r" (d), "a" (UINT64_C(0)));
#else
/* Implementation based on code from Hacker's delight */