svn commit: r253892 - in projects/atomic64/sys: amd64/include i386/include
Jung-uk Kim
jkim at FreeBSD.org
Fri Aug 2 19:10:47 UTC 2013
Author: jkim
Date: Fri Aug 2 19:10:46 2013
New Revision: 253892
URL: http://svnweb.freebsd.org/changeset/base/253892
Log:
Refine r253891. Compiler does not know the BTS instruction implicitly does
modulo operation and generates poor code when the function is not inlined.
Modified:
projects/atomic64/sys/amd64/include/atomic.h
projects/atomic64/sys/i386/include/atomic.h
Modified: projects/atomic64/sys/amd64/include/atomic.h
==============================================================================
--- projects/atomic64/sys/amd64/include/atomic.h Fri Aug 2 18:32:01 2013 (r253891)
+++ projects/atomic64/sys/amd64/include/atomic.h Fri Aug 2 19:10:46 2013 (r253892)
@@ -225,7 +225,7 @@ atomic_testandset_int(volatile u_int *p,
"# atomic_testandset_int"
: "=r" (res), /* 0 */
"=m" (*p) /* 1 */
- : "Ir" (v % 32), /* 2 */
+ : "ir" (v), /* 2 */
"m" (*p) /* 3 */
: "cc");
return (res);
@@ -243,7 +243,7 @@ atomic_testandset_long(volatile u_long *
"# atomic_testandset_long"
: "=r" (res), /* 0 */
"=m" (*p) /* 1 */
- : "Jr" ((u_long)v % 64), /* 2 */
+ : "ir" ((u_long)v), /* 2 */
"m" (*p) /* 3 */
: "cc");
return (res);
Modified: projects/atomic64/sys/i386/include/atomic.h
==============================================================================
--- projects/atomic64/sys/i386/include/atomic.h Fri Aug 2 18:32:01 2013 (r253891)
+++ projects/atomic64/sys/i386/include/atomic.h Fri Aug 2 19:10:46 2013 (r253892)
@@ -366,7 +366,7 @@ atomic_testandset_int(volatile u_int *p,
"# atomic_testandset_int"
: "=r" (res), /* 0 */
"=m" (*p) /* 1 */
- : "Ir" (v % 32), /* 2 */
+ : "ir" (v), /* 2 */
"m" (*p) /* 3 */
: "cc");
return (res);
More information about the svn-src-projects
mailing list