Skip to content

Commit 4166cff

Browse files
committed
Move definition of DoubleWord into DoubleWord.swift
1 parent b1b74cb commit 4166cff

File tree

3 files changed

+56
-99
lines changed

3 files changed

+56
-99
lines changed

Sources/Atomics/Primitives/Primitives.native.swift.gyb

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -18,57 +18,9 @@ ${autogenerated_warning()}
1818
#if ATOMICS_NATIVE_BUILTINS
1919
import Builtin
2020

21-
#if ${ptrBitWidth32}
22-
@frozen
23-
@_alignment(8)
24-
public struct DoubleWord {
25-
@usableFromInline
26-
internal typealias _Builtin = Builtin.Int64
27-
28-
public var first: UInt
29-
public var second: UInt
30-
31-
@inlinable @inline(__always)
32-
public init(first: UInt, second: UInt) {
33-
self.first = first
34-
self.second = second
35-
}
36-
}
37-
#else
38-
@frozen
39-
@_alignment(16)
40-
public struct DoubleWord {
41-
@usableFromInline
42-
internal typealias _Builtin = Builtin.Int128
43-
44-
public var first: UInt
45-
public var second: UInt
46-
47-
@inlinable @inline(__always)
48-
public init(first: UInt, second: UInt) {
49-
self.first = first
50-
self.second = second
51-
}
52-
}
53-
#endif
54-
55-
extension DoubleWord {
56-
@_alwaysEmitIntoClient
57-
@inline(__always)
58-
internal init(_ builtin: _Builtin) {
59-
self = unsafeBitCast(builtin, to: DoubleWord.self)
60-
}
61-
62-
@_alwaysEmitIntoClient
63-
@inline(__always)
64-
internal var _value: _Builtin {
65-
unsafeBitCast(self, to: _Builtin.self)
66-
}
67-
}
68-
6921
extension Bool {
7022
@_alwaysEmitIntoClient
71-
@inline(__always)
23+
@_transparent
7224
internal init(_ builtin: Builtin.Int1) {
7325
self = unsafeBitCast(builtin, to: Bool.self)
7426
}

Sources/Atomics/Primitives/autogenerated/Primitives.native.swift

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -21,57 +21,9 @@
2121
#if ATOMICS_NATIVE_BUILTINS
2222
import Builtin
2323

24-
#if (compiler(>=5.9) && _pointerBitWidth(_32)) || (compiler(<5.9) && (arch(i386) || arch(arm) || arch(arm64_32) || arch(wasm32)))
25-
@frozen
26-
@_alignment(8)
27-
public struct DoubleWord {
28-
@usableFromInline
29-
internal typealias _Builtin = Builtin.Int64
30-
31-
public var first: UInt
32-
public var second: UInt
33-
34-
@inlinable @inline(__always)
35-
public init(first: UInt, second: UInt) {
36-
self.first = first
37-
self.second = second
38-
}
39-
}
40-
#else
41-
@frozen
42-
@_alignment(16)
43-
public struct DoubleWord {
44-
@usableFromInline
45-
internal typealias _Builtin = Builtin.Int128
46-
47-
public var first: UInt
48-
public var second: UInt
49-
50-
@inlinable @inline(__always)
51-
public init(first: UInt, second: UInt) {
52-
self.first = first
53-
self.second = second
54-
}
55-
}
56-
#endif
57-
58-
extension DoubleWord {
59-
@_alwaysEmitIntoClient
60-
@inline(__always)
61-
internal init(_ builtin: _Builtin) {
62-
self = unsafeBitCast(builtin, to: DoubleWord.self)
63-
}
64-
65-
@_alwaysEmitIntoClient
66-
@inline(__always)
67-
internal var _value: _Builtin {
68-
unsafeBitCast(self, to: _Builtin.self)
69-
}
70-
}
71-
7224
extension Bool {
7325
@_alwaysEmitIntoClient
74-
@inline(__always)
26+
@_transparent
7527
internal init(_ builtin: Builtin.Int1) {
7628
self = unsafeBitCast(builtin, to: Bool.self)
7729
}

Sources/Atomics/Types/DoubleWord.swift

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,60 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#if !ATOMICS_NATIVE_BUILTINS
13+
#if ATOMICS_NATIVE_BUILTINS
14+
import Builtin
15+
16+
#if _pointerBitWidth(_32)
17+
@frozen
18+
@_alignment(8)
19+
public struct DoubleWord {
20+
@usableFromInline
21+
internal typealias _Builtin = Builtin.Int64
22+
23+
public var first: UInt
24+
public var second: UInt
25+
26+
@inlinable @inline(__always)
27+
public init(first: UInt, second: UInt) {
28+
self.first = first
29+
self.second = second
30+
}
31+
}
32+
#elseif _pointerBitWidth(_64)
33+
@frozen
34+
@_alignment(16)
35+
public struct DoubleWord {
36+
@usableFromInline
37+
internal typealias _Builtin = Builtin.Int128
38+
39+
public var first: UInt
40+
public var second: UInt
41+
42+
@inlinable @inline(__always)
43+
public init(first: UInt, second: UInt) {
44+
self.first = first
45+
self.second = second
46+
}
47+
}
48+
#else
49+
#error("Unexpected pointer bit width")
50+
#endif
51+
52+
extension DoubleWord {
53+
@_alwaysEmitIntoClient
54+
@_transparent
55+
internal init(_ builtin: _Builtin) {
56+
self = unsafeBitCast(builtin, to: DoubleWord.self)
57+
}
58+
59+
@_alwaysEmitIntoClient
60+
@_transparent
61+
internal var _value: _Builtin {
62+
unsafeBitCast(self, to: _Builtin.self)
63+
}
64+
}
65+
66+
#else // !ATOMICS_NATIVE_BUILTINS
1467
import _AtomicsShims
1568
public typealias DoubleWord = _AtomicsShims.DoubleWord
1669
#endif

0 commit comments

Comments
 (0)