Skip to content

Commit 920aa2f

Browse files
authored
Merge pull request #19877 from compnerd/sse-no-more
SSE no more
2 parents ad755cd + 2935c09 commit 920aa2f

File tree

2 files changed

+23
-22
lines changed

2 files changed

+23
-22
lines changed

stdlib/public/core/VarArgs.swift

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@ internal let _countGPRegisters = 6
8080
// from 8 to 16 based on reading the spec, probably the bug you're looking for
8181
// is elsewhere.
8282
@usableFromInline
83-
internal let _countSSERegisters = 8
83+
internal let _countFPRegisters = 8
8484
@usableFromInline
85-
internal let _sseRegisterWords = 2
85+
internal let _fpRegisterWords = 2
8686
@usableFromInline
87-
internal let _registerSaveWords = _countGPRegisters + _countSSERegisters * _sseRegisterWords
87+
internal let _registerSaveWords = _countGPRegisters + _countFPRegisters * _fpRegisterWords
8888
#elseif arch(s390x)
8989
@usableFromInline
9090
internal let _countGPRegisters = 16
@@ -422,18 +422,19 @@ final internal class _VaListBuilder {
422422
var encoded = arg._cVarArgEncoding
423423

424424
#if arch(x86_64)
425-
if arg is _CVarArgPassedAsDouble
426-
&& sseRegistersUsed < _countSSERegisters {
425+
let isDouble = arg is _CVarArgPassedAsDouble
426+
427+
if isDouble && fpRegistersUsed < _countFPRegisters {
427428
var startIndex = _countGPRegisters
428-
+ (sseRegistersUsed * _sseRegisterWords)
429+
+ (fpRegistersUsed * _fpRegisterWords)
429430
for w in encoded {
430431
storage[startIndex] = w
431432
startIndex += 1
432433
}
433-
sseRegistersUsed += 1
434+
fpRegistersUsed += 1
434435
}
435436
else if encoded.count == 1
436-
&& !(arg is _CVarArgPassedAsDouble)
437+
&& !isDouble
437438
&& gpRegistersUsed < _countGPRegisters {
438439
storage[gpRegistersUsed] = encoded[0]
439440
gpRegistersUsed += 1
@@ -471,7 +472,7 @@ final internal class _VaListBuilder {
471472
@usableFromInline // FIXME(sil-serialize-all)
472473
internal var gpRegistersUsed = 0
473474
@usableFromInline // FIXME(sil-serialize-all)
474-
internal var sseRegistersUsed = 0
475+
internal var fpRegistersUsed = 0
475476

476477
@usableFromInline // FIXME(sil-serialize-all)
477478
final // Property must be final since it is used by Builtin.addressof.

test/api-digester/Inputs/stdlib-stable-abi.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -242736,8 +242736,8 @@
242736242736
},
242737242737
{
242738242738
"kind": "Var",
242739-
"name": "_countSSERegisters",
242740-
"printedName": "_countSSERegisters",
242739+
"name": "_countFPRegisters",
242740+
"printedName": "_countFPRegisters",
242741242741
"children": [
242742242742
{
242743242743
"kind": "TypeNominal",
@@ -242758,13 +242758,13 @@
242758242758
}
242759242759
],
242760242760
"declKind": "Accessor",
242761-
"usr": "s:s18_countSSERegistersSivg",
242761+
"usr": "s:s17_countFPRegistersSivg",
242762242762
"moduleName": "Swift",
242763242763
"implicit": true
242764242764
}
242765242765
],
242766242766
"declKind": "Var",
242767-
"usr": "s:s18_countSSERegistersSivp",
242767+
"usr": "s:s17_countFPRegistersSivp",
242768242768
"moduleName": "Swift",
242769242769
"declAttributes": [
242770242770
"HasInitialValue",
@@ -242775,8 +242775,8 @@
242775242775
},
242776242776
{
242777242777
"kind": "Var",
242778-
"name": "_sseRegisterWords",
242779-
"printedName": "_sseRegisterWords",
242778+
"name": "_fpRegisterWords",
242779+
"printedName": "_fpRegisterWords",
242780242780
"children": [
242781242781
{
242782242782
"kind": "TypeNominal",
@@ -242797,13 +242797,13 @@
242797242797
}
242798242798
],
242799242799
"declKind": "Accessor",
242800-
"usr": "s:s17_sseRegisterWordsSivg",
242800+
"usr": "s:s16_fpRegisterWordsSivg",
242801242801
"moduleName": "Swift",
242802242802
"implicit": true
242803242803
}
242804242804
],
242805242805
"declKind": "Var",
242806-
"usr": "s:s17_sseRegisterWordsSivp",
242806+
"usr": "s:s16_fpRegisterWordsSivp",
242807242807
"moduleName": "Swift",
242808242808
"declAttributes": [
242809242809
"HasInitialValue",
@@ -243403,8 +243403,8 @@
243403243403
},
243404243404
{
243405243405
"kind": "Var",
243406-
"name": "sseRegistersUsed",
243407-
"printedName": "sseRegistersUsed",
243406+
"name": "fpRegistersUsed",
243407+
"printedName": "fpRegistersUsed",
243408243408
"children": [
243409243409
{
243410243410
"kind": "TypeNominal",
@@ -243425,7 +243425,7 @@
243425243425
}
243426243426
],
243427243427
"declKind": "Accessor",
243428-
"usr": "s:s14_VaListBuilderC16sseRegistersUsedSivg",
243428+
"usr": "s:s14_VaListBuilderC16fpRegistersUsedSivg",
243429243429
"moduleName": "Swift",
243430243430
"implicit": true,
243431243431
"declAttributes": [
@@ -243435,7 +243435,7 @@
243435243435
}
243436243436
],
243437243437
"declKind": "Var",
243438-
"usr": "s:s14_VaListBuilderC16sseRegistersUsedSivp",
243438+
"usr": "s:s14_VaListBuilderC15fpRegistersUsedSivp",
243439243439
"moduleName": "Swift",
243440243440
"declAttributes": [
243441243441
"Final",
@@ -244116,4 +244116,4 @@
244116244116
"isInternal": true
244117244117
}
244118244118
]
244119-
}
244119+
}

0 commit comments

Comments
 (0)