diff options
author | Marat Dukhan <marat@fb.com> | 2017-07-05 23:22:43 -0700 |
---|---|---|
committer | Marat Dukhan <marat@fb.com> | 2017-07-05 23:22:43 -0700 |
commit | f7960924cb1f67e06f6529dba09eeda9baa4cacb (patch) | |
tree | 7c9ae2822fc7ba86c4838712e9dea54338ca3308 | |
parent | 1b244039601e7ab2d78c2c162ba5be6e0e89ba45 (diff) | |
download | FXdiv-f7960924cb1f67e06f6529dba09eeda9baa4cacb.tar.gz |
Inline asm: fix specification (potential bug)
-rw-r--r-- | include/fxdiv.h | 10 |
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 */ |