ATOMIC_ASM
ATOMIC_ASM(clear, char, "andb %b1,%0", "iq", ~v)
ATOMIC_ASM(add, char, "addb %b1,%0", "iq", v)
ATOMIC_ASM(subtract, char, "subb %b1,%0", "iq", v)
ATOMIC_ASM(set, short, "orw %w1,%0", "iq", v)
ATOMIC_ASM(clear, short, "andw %w1,%0", "iq", ~v)
ATOMIC_ASM(add, short, "addw %w1,%0", "iq", v)
ATOMIC_ASM(subtract, short, "subw %w1,%0", "iq", v)
ATOMIC_ASM(set, int, "orl %1,%0", "iq", v)
ATOMIC_ASM(clear, int, "andl %1,%0", "iq", ~v)
ATOMIC_ASM(add, int, "addl %1,%0", "iq", v)
ATOMIC_ASM(subtract, int, "subl %1,%0", "iq", v)
ATOMIC_ASM(set, long, "orq %1,%0", "r", v)
ATOMIC_ASM(clear, long, "andq %1,%0", "r", ~v)
ATOMIC_ASM(add, long, "addq %1,%0", "r", v)
ATOMIC_ASM(subtract, long, "subq %1,%0", "r", v)