Slide 23
Slide 23 text
public func ${lowerFirst(name)}(
_ operand: ${intType},
ordering: AtomicUpdateOrdering
) -> (oldValue: ${intType}, newValue: ${intType}) {
Builtin.atomicrmw_${atomicOperationName(intType, builtinName)}_${llvmOrder}_Int64(
_rawAddress,
operand._value
)
}
AtomicIntegers.swift.gyb
Ұ෦ൈਮ͓ͯ͠ૹΓ͓ͯ͠Γ·͢
• LLVMͷΞτϛοΫ໋ྩΛ͏·͘ϥοϓͯ͠Δ͚ͩ
23
integerOperations = [
# Swift name, llvm name, operator, doc name
("WrappingAdd", "add", "&+", "wrapping add"),
("WrappingSubtract", "sub", "&-", "wrapping subtract"),
…
https://github.com/swiftlang/swift/blob/.../stdlib/public/Synchronization/Atomics/AtomicIntegers.swift.gyb#L95-L157
https://github.com/swiftlang/swift/blob/.../utils/SwiftAtomics.py#L71-L82
https://llvm.org/docs/LangRef.html#atomicrmw-instruction