[vm, ffi] Add Windows ARM64 to FFI unit tests.

This accepts the current results, including known bugs in handling of variadic arguments. Fixes are in a follow-up CL.

TEST=ci
Change-Id: I6a0bd11aeb1fe0a6980dd6ff974dc5a4b207fb97
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/329824
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
Ryan Macnak
2023-10-11 18:41:57 +00:00
committed by Commit Queue
parent 209483da72
commit 985c292cff
28 changed files with 279 additions and 0 deletions
+1
View File
@@ -400,6 +400,7 @@ class FfiTestSuite extends TestSuite {
"arm64_ios",
"arm64_linux",
"arm64_macos",
"arm64_win",
"arm_android",
"arm_ios",
"arm_linux",
+8
View File
@@ -137,6 +137,13 @@ build_run_ffi_unit_tests("run_ffi_unit_tests_arm64_linux") {
]
}
build_run_ffi_unit_tests("run_ffi_unit_tests_arm64_win") {
extra_configs = [
":define_target_arch_arm64",
":define_target_os_windows",
]
}
build_run_ffi_unit_tests("run_ffi_unit_tests_ia32_android") {
extra_configs = [
":define_target_arch_ia32",
@@ -214,6 +221,7 @@ group("run_ffi_unit_tests") {
":run_ffi_unit_tests_arm64_ios", # No other test coverage.
":run_ffi_unit_tests_arm64_linux",
":run_ffi_unit_tests_arm64_macos",
":run_ffi_unit_tests_arm64_win",
":run_ffi_unit_tests_arm_android", # SoftFP
":run_ffi_unit_tests_arm_ios", # No other test coverage.
":run_ffi_unit_tests_arm_linux", # HardFP
@@ -0,0 +1,22 @@
v0 double
v1 double
v2 double
v3 double
v4 double
v5 double
v6 double
v7 double
S+0 double
S+8 double
S+16 double
S+24 double
S+32 double
S+40 double
S+48 double
S+56 double
S+64 double
S+72 double
S+80 double
S+88 double
=>
v0 double
@@ -0,0 +1,22 @@
v0 float
v1 float
v2 float
v3 float
v4 float
v5 float
v6 float
v7 float
S+0 float
S+8 float
S+16 float
S+24 float
S+32 float
S+40 float
S+48 float
S+56 float
S+64 float
S+72 float
S+80 float
S+88 float
=>
v0 float
@@ -0,0 +1,12 @@
r0 int8
r1 int8
r2 int8
r3 int8
r4 int8
r5 int8
r6 int8
r7 int8
S+0 int8
S+8 int8
=>
r0 int8
@@ -0,0 +1,22 @@
r0 int64
v0 float
r1 int64
v1 double
r2 int64
v2 float
r3 int64
v3 double
r4 int64
v4 float
r5 int64
v5 double
r6 int64
v6 float
r7 int64
v7 double
S+0 int64
S+8 float
S+16 int64
S+24 double
=>
v0 double
@@ -0,0 +1,3 @@
=>
M(r0 int64) Struct(size: 8)
@@ -0,0 +1,5 @@
r0 int32
r1 int64
r2 int64
=>
r0 int32
@@ -0,0 +1,9 @@
r0 int64
v0 double
r1 int32
v1 double
r2 int32
r3 int64
r4 int64
=>
r0 void
@@ -0,0 +1,4 @@
P(r0 int64) Struct(size: 128)
r1 int32
=>
P(r8 int64) Struct(size: 128)
@@ -0,0 +1,8 @@
M(v0 float, v1 float, v2 float) Struct(size: 12)
M(v3 float, v4 float, v5 float) Struct(size: 12)
S+0 Struct(size: 12)
S+16 Struct(size: 12)
S+32 Struct(size: 12)
S+48 Struct(size: 12)
=>
r0 int64
@@ -0,0 +1,15 @@
M(v0 float, v1 float, v2 float, v3 float) Struct(size: 16)
v4 float
S+0 Struct(size: 16)
S+16 Struct(size: 16)
S+32 Struct(size: 16)
S+48 Struct(size: 16)
S+64 Struct(size: 16)
S+80 Struct(size: 16)
S+96 Struct(size: 16)
S+112 Struct(size: 16)
S+128 float
r0 int8
S+136 Struct(size: 16)
=>
M(v0 float, v1 float, v2 float, v3 float) Struct(size: 16)
@@ -0,0 +1,12 @@
M(r0 int64) Struct(size: 3)
M(r1 int64) Struct(size: 3)
M(r2 int64) Struct(size: 3)
M(r3 int64) Struct(size: 3)
M(r4 int64) Struct(size: 3)
M(r5 int64) Struct(size: 3)
M(r6 int64) Struct(size: 3)
M(r7 int64) Struct(size: 3)
M(S+0 int64) Struct(size: 3)
M(S+8 int64) Struct(size: 3)
=>
M(r0 int64) Struct(size: 3)
@@ -0,0 +1,12 @@
M(r0 int64) Struct(size: 8)
M(r1 int64) Struct(size: 8)
M(r2 int64) Struct(size: 8)
M(r3 int64) Struct(size: 8)
M(r4 int64) Struct(size: 8)
M(r5 int64) Struct(size: 8)
M(r6 int64) Struct(size: 8)
M(r7 int64) Struct(size: 8)
S+0 Struct(size: 8)
S+8 Struct(size: 8)
=>
M(r0 int64) Struct(size: 8)
@@ -0,0 +1,3 @@
M(r0 int64) Struct(size: 8)
=>
M(r0 int64) Struct(size: 8)
@@ -0,0 +1,15 @@
M(r0 int64, r1 int64) Struct(size: 9)
M(r2 int64, r3 int64) Struct(size: 9)
M(r4 int64, r5 int64) Struct(size: 9)
M(r6 int64, r7 int64) Struct(size: 9)
S+0 Struct(size: 9)
S+16 Struct(size: 9)
S+32 Struct(size: 9)
S+48 Struct(size: 9)
S+64 Struct(size: 9)
S+80 Struct(size: 9)
v0 double
S+96 int32
S+104 int32
=>
v0 double
@@ -0,0 +1,17 @@
Struct(size: 88, field alignment: 8, stack alignment: 8, members: {
0: int8,
2: int16,
4: int32,
8: int64,
16: uint8,
18: uint16,
20: uint32,
24: uint64,
32: int64,
40: double,
48: float,
56: int64,
64: int64,
72: int64,
80: int8
})
@@ -0,0 +1,3 @@
Struct(size: 16, field alignment: 4, stack alignment: 8, members: {
0: Array(element type: Struct(size: 8, field alignment: 4, stack alignment: 8, members: {0: Array(element type: float, length: 2)}), length: 2)
})
@@ -0,0 +1,6 @@
Struct(size: 16, field alignment: 4, stack alignment: 8, members: {
0: float,
4: float,
8: float,
12: float
})
@@ -0,0 +1,3 @@
Struct(size: 8, field alignment: 1, stack alignment: 8, members: {
0: Array(element type: int8, length: 8)
})
@@ -0,0 +1,12 @@
Struct(size: 10, field alignment: 1, stack alignment: 8, members: {
0: int8,
1: int8,
2: int8,
3: int8,
4: int8,
5: int8,
6: int8,
7: int8,
8: int8,
9: int8
})
@@ -0,0 +1,13 @@
M(v0 float, v1 float, v2 float, v3 float) Union(size: 16)
M(v4 float, v5 float, v6 float, v7 float) Union(size: 16)
S+0 Union(size: 16)
S+16 Union(size: 16)
S+32 Union(size: 16)
S+48 Union(size: 16)
S+64 Union(size: 16)
S+80 Union(size: 16)
S+96 Union(size: 16)
r0 int8
S+112 Union(size: 16)
=>
M(v0 float, v1 float, v2 float, v3 float) Union(size: 16)
@@ -0,0 +1,12 @@
M(r0 int64) Union(size: 5)
M(r1 int64) Union(size: 5)
M(r2 int64) Union(size: 5)
M(r3 int64) Union(size: 5)
M(r4 int64) Union(size: 5)
M(r5 int64) Union(size: 5)
M(r6 int64) Union(size: 5)
M(r7 int64) Union(size: 5)
M(S+0 int64) Union(size: 5)
M(S+8 int64) Union(size: 5)
=>
M(r0 int64) Union(size: 5)
@@ -0,0 +1,7 @@
v0 double
v1 double
v2 double
v3 double
v4 double
=>
v0 double
@@ -0,0 +1,7 @@
r0 int64
r1 int64
r2 int64
r3 int64
r4 int64
=>
r0 int64
@@ -0,0 +1,6 @@
v0 double
v1 double
M(v2 double, v3 double, v4 double, v5 double) Struct(size: 32)
v6 double
=>
v0 double
@@ -0,0 +1,15 @@
v0 double
v1 double
v2 double
v3 double
v4 double
v5 double
v6 double
v7 double
S+0 float
S+8 Struct(size: 12)
r0 int64
r1 int32
S+24 Struct(size: 12)
=>
v0 double
@@ -0,0 +1,5 @@
v0 double
P(r0 int64) Struct(size: 20)
v1 double
=>
v0 double