__membar
#define membar_enter() __membar("mfence")
#define membar_exit() __membar("")
#define membar_producer() __membar("")
#define membar_consumer() __membar("")
#define membar_sync() __membar("mfence")
#define membar_enter() __membar("")
#define membar_exit() __membar("")
#define membar_producer() __membar("")
#define membar_consumer() __membar("")
#define membar_sync() __membar("")
#define membar_enter_after_atomic() __membar("")
#define membar_exit_before_atomic() __membar("")
#define virtio_membar_producer() __membar("")
#define virtio_membar_consumer() __membar("")
#define virtio_membar_sync() __membar("mfence")
#define membar_enter() __membar("dmb sy")
#define membar_exit() __membar("dmb sy")
#define membar_producer() __membar("dmb st")
#define membar_consumer() __membar("dmb sy")
#define membar_sync() __membar("dmb sy")
#define virtio_membar_producer() __membar("dmb st")
#define virtio_membar_consumer() __membar("dmb sy")
#define virtio_membar_sync() __membar("dmb sy")
#define membar_enter() __membar("dmb sy")
#define membar_exit() __membar("dmb sy")
#define membar_producer() __membar("dmb st")
#define membar_consumer() __membar("dmb ld")
#define membar_sync() __membar("dmb sy")
#define virtio_membar_producer() __membar("dmb st")
#define virtio_membar_consumer() __membar("dmb ld")
#define virtio_membar_sync() __membar("dmb sy")
#define membar_enter() __membar("lock; addl $0,0(%%esp)")
#define membar_exit() __membar("")
#define membar_producer() __membar("")
#define membar_consumer() __membar("")
#define membar_sync() __membar("lock; addl $0,0(%%esp)")
#define membar_enter() __membar("")
#define membar_exit() __membar("")
#define membar_producer() __membar("")
#define membar_consumer() __membar("")
#define membar_sync() __membar("")
#define membar_enter_after_atomic() __membar("")
#define membar_exit_before_atomic() __membar("")
#define virtio_membar_producer() __membar("")
#define virtio_membar_consumer() __membar("")
#define virtio_membar_sync() __membar("lock; addl $0,0(%%esp)")
#define membar_enter() __membar()
#define membar_exit() __membar()
#define membar_producer() __membar()
#define membar_consumer() __membar()
#define membar_sync() __membar()
#define membar_enter() __membar("isync")
#define membar_exit() __membar("sync")
#define membar_producer() __membar("sync")
#define membar_consumer() __membar("isync")
#define membar_sync() __membar("sync")
#define membar_enter() __membar("")
#define membar_exit() __membar("")
#define membar_producer() __membar("")
#define membar_consumer() __membar("")
#define membar_sync() __membar("")
#define membar_enter() __membar("sync")
#define membar_exit() __membar("sync")
#define membar_producer() __membar("sync")
#define membar_consumer() __membar("sync")
#define membar_sync() __membar("sync")
#define membar_enter() __membar("")
#define membar_exit() __membar("")
#define membar_producer() __membar("")
#define membar_consumer() __membar("")
#define membar_sync() __membar("")
#define membar_enter() __membar("fence w,rw")
#define membar_exit() __membar("fence rw,w")
#define membar_producer() __membar("fence w,w")
#define membar_consumer() __membar("fence r,r")
#define membar_sync() __membar("fence rw,rw")
#define virtio_membar_producer() __membar("fence w,w")
#define virtio_membar_consumer() __membar("fence r,r")
#define virtio_membar_sync() __membar("fence rw,rw")
__membar("#MemIssue");
__membar("#MemIssue");
__membar("#MemIssue");
__membar("#Lookaside");
__membar("#StoreStore");
__membar("#StoreStore");
__membar("#StoreLoad | #Lookaside");
__membar("#LoadLoad");
__membar("#Sync");
__membar("#Sync");
__membar("#MemIssue");
__membar("#Sync");
__membar("#Sync");
__membar("#Sync");
__membar("#Sync");
__membar("#MemIssue");
__membar("#MemIssue");
#define membar_enter() __membar("#StoreLoad|#StoreStore")
#define membar_exit() __membar("#LoadStore|#StoreStore")
#define membar_producer() __membar("#StoreStore")
#define membar_consumer() __membar("#LoadLoad")
#define membar_sync() __membar("#Sync")
__membar("#LoadLoad|#StoreStore");
__membar("#Sync");
__membar("#MemIssue");
#define smp_rmb() __membar("")
#define smp_wmb() __membar("")
#define rmb() __membar("lfence")
#define wmb() __membar("sfence")
#define mb() __membar("mfence")
#define smp_rmb() __membar("")
#define smp_wmb() __membar("")
#define rmb() __membar("dsb ld")
#define wmb() __membar("dsb st")
#define mb() __membar("dsb sy")
#define dma_rmb() __membar("dmb oshld")
#define dma_wmb() __membar("dmb oshst")
#define dma_mb() __membar("dmb osh")
#define smp_rmb() __membar("dmb ishld")
#define smp_wmb() __membar("dmb ishst")
#define smp_mb() __membar("dmb ish")
#define rmb() __membar("dsb sy")
#define wmb() __membar("dsb sy")
#define mb() __membar("dsb sy")
#define rmb() __membar("sync")
#define wmb() __membar("sync")
#define mb() __membar("sync")
#define smp_rmb() __membar("lwsync")
#define smp_wmb() __membar("lwsync")
#define smp_mb() __membar("sync")
#define rmb() __membar("sync")
#define wmb() __membar("sync")
#define mb() __membar("sync")
#define smp_wmb() __membar("eieio")
#define rmb() __membar("fence ir,ir")
#define wmb() __membar("fence ow,ow")
#define mb() __membar("fence iorw,iorw")
#define smp_rmb() __membar("fence r,r")
#define smp_wmb() __membar("fence w,w")
#define smp_mb() __membar("fence rw,rw")