Skip to content

Commit 0739da8

Browse files
committed
Fix test/IRGen/abi_v7k.swift
rdar://73897921
1 parent f176ea9 commit 0739da8

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

test/IRGen/abi_v7k.swift

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ func addStack(d0: Double, d1: Double, d2: Double, d3: Double, d4: Double,
5151
// CHECK: fadd float
5252
// V7K-LABEL: _$s8test_v7k9addStack
5353
// V7K: sub sp, #80
54-
// V7K: vldr s15, [sp, #88]
55-
// V7K: vadd.f32 s0, s14, s15
54+
// V7K: vldr s0, [sp, #88]
55+
// V7K: vadd.f32 s0, s14, s0
5656
// a is assigned to s14, b is via stack, c is via stack since it can't be back-filled to s15
5757
func addStack2(d0: Double, d1: Double, d2: Double, d3: Double, d4: Double,
5858
d5: Double, d6: Double, a: Float, b: Double, c: Float) -> Float {
@@ -81,8 +81,11 @@ func testSingle(x: SingleCase) -> Int32{
8181
// CHECK-LABEL: define hidden swiftcc double @"$s8test_v7k0A4Data{{.*}}"(i32 %0, double %1)
8282
// CHECK: ret double
8383
// V7K-LABEL: _$s8test_v7k0A4Data
84-
// V7K: vstr d0
85-
// V7K: vmov.f64 d0
84+
// V7K: vstr d0, [sp, #16]
85+
// V7K: vldr d16, [sp, #16]
86+
// V7K: vstr d16, [sp, #8]
87+
// V7K: vldr d0, [sp, #8]
88+
// V7K: bx lr
8689
enum DataCase { case Y(Int, Double) }
8790
func testData(x: DataCase) -> Double {
8891
switch x {
@@ -116,7 +119,7 @@ func testClike2(x: CLike2) -> Int {
116119
// CHECK: ret i32 [[ID]]
117120
// V7K-LABEL: _$s8test_v7k0A6Clike8
118121
// V7K: sxtb r0, r1
119-
// V7K: cmp r0, #0
122+
// V7K: cbnz r0
120123
// V7K: movs r0, #1
121124
// V7K: mvn r0, #0
122125
enum CLike8 {
@@ -153,7 +156,7 @@ func testClike8(t: Int, x: CLike8) -> Int {
153156
// CHECK: phi double [ 0.000000e+00, {{.*}} ]
154157
// V7K-LABEL: _$s8test_v7k0A7SingleP
155158
// V7K: tst.w r2, #1
156-
// V7K: vmov.f64 d0
159+
// V7K: vldr d0, [{{.*}}]
157160
enum SinglePayload {
158161
case Paragraph
159162
case Char(Double)
@@ -180,9 +183,15 @@ func testSingleP(x: SinglePayload) -> Double {
180183
// CHECK: phi double [ 0.000000e+00, {{.*}} ]
181184
// CHECK: ret double
182185
// V7K-LABEL: _$s8test_v7k0A6MultiP
183-
// V7K: vldr d16, [sp{{.*}}]
184-
// V7K: vmov.f64 d0, d16
185-
// V7K: bx lr
186+
// V7K: ldr r0, [sp, #24]
187+
// V7K: ldr r1, [sp, #28]
188+
// V7K: vmov d16, r0, r1
189+
// V7K: vstr d16, [sp, #8]
190+
// V7K: vldr d16, [sp, #8]
191+
// V7K: vstr d16, [sp]
192+
// V7K: vldr d0, [sp]
193+
// V7K: add sp, #{{[0-9]+}}
194+
// V7K: bx lr
186195
// Backend will assign r0, r1 and r2 for input parameters and d0 for return values.
187196
class Bignum {}
188197
enum MultiPayload {
@@ -210,11 +219,9 @@ func testMultiP(x: MultiPayload) -> Double {
210219
// CHECK: ret float
211220
// V7K-LABEL: _$s8test_v7k0A3Opt
212221
// V7K: tst.w r1, #1
213-
// V7K: str r0, [sp, [[SLOT:#[0-9]+]]
214-
// V7K: ldr r0, [sp, [[SLOT]]
215222
// V7K: vmov s0, r0
216-
// V7K: vstr s0, [sp, [[SLOT2:#[0-9]+]]
217-
// V7K: vldr s0, [sp, [[SLOT2]]
223+
// V7K: vstr s0, [sp, [[SLOT:#[0-9]+]]
224+
// V7K: vldr s0, [sp, [[SLOT]]
218225
// V7K: pop {{{.*}}, pc}
219226
func testOpt(x: Float?) -> Float {
220227
return x!
@@ -273,12 +280,9 @@ struct MyRect4 {
273280
// V7K-LABEL: _$s8test_v7k0A4Ret2
274281
// double in d0, i32 in r0, return in d0,...,d3
275282
// V7K: vmov [[ID:s[0-9]+]], r0
276-
// V7K: vcvt.f64.s32 [[ID2:d[0-9]+]], [[ID]]
277-
// V7K: vstr d0, [sp, #8]
278-
// V7K: vmov.f64 d0, [[ID2]]
283+
// V7K: vcvt.f64.s32 d0, [[ID]]
279284
// V7K: bl
280-
// V7K: vldr [[ID3:d[0-9]+]], [sp, #8]
281-
// V7K: vmov.f64 d2, [[ID3]]
285+
// V7K: vldr d2, [sp, #8]
282286
func testRet2(w : Double, i : Int) -> MyRect {
283287
var r = MyRect(x : Double(i), y : 2.0, w : 3.0, h : 4.0)
284288
r.w = w
@@ -292,16 +296,16 @@ func testRet3() -> MyRect2 {
292296
}
293297

294298
// Returning tuple?: (Int x 6)?
295-
// CHECK-LABEL: define hidden swiftcc void @"$s8test_v7k7minMax2{{.*}}"({{%TSi.*}} noalias nocapture sret %0, i32 %1, i32 %2)
299+
// CHECK-LABEL: define hidden swiftcc void @"$s8test_v7k7minMax2{{.*}}"({{%TSi.*}} noalias nocapture sret({{.*}}) %0, i32 %1, i32 %2)
296300
// V7K-LABEL: _$s8test_v7k7minMax2
297301
// We will indirectly return an optional with the address in r0, input parameters will be in r1 and r2
298-
// V7K: cmp r1, r2
299302
// V7K: str r0, [sp, [[IDX:#[0-9]+]]]
303+
// V7K: cmp r1, r2
300304
// V7K: ldr [[R0_RELOAD:r[0-9]+]], [sp, [[IDX]]]
301-
// V7K: str.w {{.*}}, [{{.*}}[[R0_RELOAD]]]
305+
// V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]]]
302306
// V7K: str.w {{.*}}, [{{.*}}[[R0_RELOAD]], #4]
303307
// V7K: str.w {{.*}}, [{{.*}}[[R0_RELOAD]], #8]
304-
// V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]], #12]
308+
// V7K: str.w {{.*}}, [{{.*}}[[R0_RELOAD]], #12]
305309
// V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]], #16]
306310
// V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]], #20]
307311
// V7K: and {{.*}}, {{.*}}, #1
@@ -320,7 +324,7 @@ func minMax2(x : Int, y : Int) -> (min: Int, max: Int, min2: Int, max2: Int, min
320324
}
321325

322326
// Returning struct?: {Int x 6}?
323-
// CHECK-LABEL: define hidden swiftcc void @"$s8test_v7k7minMax3{{.*}}"({{%T.*}} noalias nocapture sret %0, i32 %1, i32 %2)
327+
// CHECK-LABEL: define hidden swiftcc void @"$s8test_v7k7minMax3{{.*}}"({{%T.*}} noalias nocapture sret({{.*}}) %0, i32 %1, i32 %2)
324328
// V7K-LABEL: _$s8test_v7k7minMax3
325329
struct Ret {
326330
var min:Int

0 commit comments

Comments
 (0)