From: Alastair B. <lis...@us...> - 2010-08-04 18:01:38
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86-64 In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv26427/src/compiler/x86-64 Modified Files: system.lisp Log Message: 1.0.41.4: x86-64: Implement memory-barrier-vops. * Add the VOPs for the various memory-barriers. * Add the memory-barrier-vops feature to local-target-features on x86-64 in make-config.sh. Index: system.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86-64/system.lisp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- system.lisp 17 Dec 2009 21:01:48 -0000 1.11 +++ system.lisp 4 Aug 2010 18:01:29 -0000 1.12 @@ -361,3 +361,38 @@ (inst inc (make-ea :qword :base count-vector :disp (- (* (+ vector-data-offset index) n-word-bytes) other-pointer-lowtag))))) + +;;;; Memory barrier support + +#!+memory-barrier-vops +(define-vop (%compiler-barrier) + (:policy :fast-safe) + (:translate %compiler-barrier) + (:generator 3)) + +#!+memory-barrier-vops +(define-vop (%memory-barrier) + (:policy :fast-safe) + (:translate %memory-barrier) + (:generator 3 + (inst mfence))) + +#!+memory-barrier-vops +(define-vop (%read-barrier) + (:policy :fast-safe) + (:translate %read-barrier) + (:generator 3 + (inst lfence))) + +#!+memory-barrier-vops +(define-vop (%write-barrier) + (:policy :fast-safe) + (:translate %write-barrier) + (:generator 3 + (inst sfence))) + +#!+memory-barrier-vops +(define-vop (%data-dependency-barrier) + (:policy :fast-safe) + (:translate %data-dependency-barrier) + (:generator 3)) |