Skip to content

Commit db35230

Browse files
sjindel-googlecommit-bot@chromium.org
authored andcommitted
[vm] Test AOT on Android with the 64->32 bit cross-compiler.
We introduce a new architecture ARM_X64, which is the same as ARM except that the host-targeting-host binaries are compiled for X64 instead of X86. Issue #38709 Change-Id: I00a2b1cc71948adec9f66c7b2ee61e9e5ac53d2a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120121 Commit-Queue: Samir Jindel <[email protected]> Reviewed-by: Martin Kustermann <[email protected]>
1 parent 785ae93 commit db35230

File tree

9 files changed

+26
-13
lines changed

9 files changed

+26
-13
lines changed

pkg/smith/lib/configuration.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,7 @@ class Architecture extends NamedEnum {
551551
static const ia32 = Architecture._('ia32');
552552
static const x64 = Architecture._('x64');
553553
static const arm = Architecture._('arm');
554+
static const arm_x64 = Architecture._('arm_x64');
554555
static const armv6 = Architecture._('armv6');
555556
static const armv5te = Architecture._('armv5te');
556557
static const arm64 = Architecture._('arm64');
@@ -569,6 +570,7 @@ class Architecture extends NamedEnum {
569570
arm,
570571
armv6,
571572
armv5te,
573+
arm_x64,
572574
arm64,
573575
simarm,
574576
simarmv6,

pkg/test_runner/lib/src/compiler_configuration.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,8 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration
588588

589589
bool get _isSimArm => _configuration.architecture == Architecture.simarm;
590590

591+
bool get _isArmX64 => _configuration.architecture == Architecture.arm_x64;
592+
591593
bool get _isArm64 => _configuration.architecture == Architecture.arm64;
592594

593595
bool get _isX64 => _configuration.architecture == Architecture.x64;
@@ -674,7 +676,7 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration
674676
if (_isAndroid) {
675677
if (_isArm || _isIA32) {
676678
exec = "$buildDir/clang_x86/gen_snapshot";
677-
} else if (_isArm64 || _isX64) {
679+
} else if (_isArm64 || _isX64 || _isArmX64) {
678680
exec = "$buildDir/clang_x64/gen_snapshot";
679681
} else {
680682
// Guaranteed by package:test_runner/src/configuration.dart's
@@ -710,7 +712,7 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration
710712
}
711713

712714
static const String ndkPath = "third_party/android_tools/ndk";
713-
String get abiTriple => _isArm
715+
String get abiTriple => _isArm || _isArmX64
714716
? "arm-linux-androideabi"
715717
: _isArm64 ? "aarch64-linux-android" : null;
716718
String get host =>

pkg/test_runner/lib/src/configuration.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,9 +408,10 @@ class TestConfiguration {
408408
!(architecture == Architecture.ia32 ||
409409
architecture == Architecture.x64 ||
410410
architecture == Architecture.arm ||
411+
architecture == Architecture.arm_x64 ||
411412
architecture == Architecture.arm64)) {
412413
print("Warning: Android only supports the following "
413-
"architectures: ia32/x64/arm/arm64.");
414+
"architectures: ia32/x64/arm/arm64/arm_x64.");
414415
isValid = false;
415416
}
416417

pkg/test_runner/lib/src/feature.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/// A capability that a Dart implementation may or may not provide that a test
66
/// may require.
77
///
8-
/// Each [TestConfiguration] specifies the set of features it supports. A test
8+
/// Each `TestConfiguration` specifies the set of features it supports. A test
99
/// can have a "// Requirements" comment indicating the names of features it
1010
/// requires. If a test requires a feature not supported by the current
1111
/// configution, the test runner automatically skips it.

pkg/test_runner/lib/src/options.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ all
144144
ia32, x64
145145
arm, armv6, armv5te, arm64,
146146
simarm, simarmv6, simarmv5te, simarm64,
147-
simdbc, simdbc64''',
147+
simdbc, simdbc64, arm_x64''',
148148
abbr: 'a',
149149
values: ['all']..addAll(Architecture.names),
150150
defaultsTo: Architecture.x64.name,

pkg/test_runner/lib/src/runtime_configuration.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ class DartVmRuntimeConfiguration extends RuntimeConfiguration {
229229
switch (arch) {
230230
case Architecture.simarm:
231231
case Architecture.arm:
232+
case Architecture.arm_x64:
232233
case Architecture.arm64:
233234
case Architecture.simarmv6:
234235
case Architecture.armv6:

tools/bots/test_matrix.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@
167167
"out/DebugSIMARM_X64/",
168168
"out/DebugSIMDBC64/",
169169
"out/DebugAndroidARM/",
170+
"out/DebugAndroidARM_X64/",
170171
"out/DebugAndroidARM64/",
171172
"out/ReleaseIA32/",
172173
"out/ReleaseX64/",
@@ -175,6 +176,7 @@
175176
"out/ReleaseSIMARM_X64/",
176177
"out/ReleaseSIMDBC64/",
177178
"out/ReleaseAndroidARM/",
179+
"out/ReleaseAndroidARM_X64/",
178180
"out/ReleaseAndroidARM64/",
179181
"out/ReleaseXARM64/",
180182
"out/ProductIA32/",
@@ -339,7 +341,7 @@
339341
"minified": true,
340342
"use-sdk": true
341343
}},
342-
"dartkp-android-(debug|product|release)-(arm|arm64)": {
344+
"dartkp-android-(debug|product|release)-(arm|arm64|arm_x64)": {
343345
"options": {
344346
"use-elf": true
345347
}},
@@ -600,6 +602,7 @@
600602
{
601603
"builders": [
602604
"vm-kernel-precomp-android-release-arm",
605+
"vm-kernel-precomp-android-release-arm_x64",
603606
"vm-kernel-precomp-android-release-arm64"
604607
],
605608
"meta": {

tools/build.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
SCRIPT_DIR = os.path.dirname(sys.argv[0])
1818
DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..'))
1919
AVAILABLE_ARCHS = [
20-
'ia32', 'x64', 'simarm', 'arm', 'simarmv6', 'armv6', 'simarmv5te',
20+
'ia32', 'x64', 'simarm', 'arm', 'arm_x64', 'simarmv6', 'armv6', 'simarmv5te',
2121
'armv5te', 'simarm64', 'arm64', 'simdbc', 'simdbc64', 'armsimdbc',
2222
'armsimdbc64', 'simarm_x64'
2323
]
@@ -117,7 +117,7 @@ def ProcessOptions(options, args):
117117
% (os_name, HOST_OS))
118118
return False
119119
if not arch in [
120-
'ia32', 'x64', 'arm', 'armv6', 'armv5te', 'arm64', 'simdbc',
120+
'ia32', 'x64', 'arm', 'arm_x64', 'armv6', 'armv5te', 'arm64', 'simdbc',
121121
'simdbc64'
122122
]:
123123
print(

tools/gn.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ def HostCpuForArch(arch):
8989
'simarmv5te', 'simdbc', 'armsimdbc', 'simarm_x64'
9090
]:
9191
return 'x86'
92-
if arch in ['x64', 'arm64', 'simarm64', 'simdbc64', 'armsimdbc64']:
92+
if arch in [
93+
'x64', 'arm64', 'simarm64', 'simdbc64', 'armsimdbc64', 'arm_x64'
94+
]:
9395
return 'x64'
9496

9597

@@ -103,6 +105,8 @@ def TargetCpuForArch(arch, target_os):
103105
return 'arm' if target_os == 'android' else 'x86'
104106
if arch in ['simdbc64']:
105107
return 'arm64' if target_os == 'android' else 'x64'
108+
if arch == 'arm_x64':
109+
return 'arm'
106110
if arch == 'armsimdbc':
107111
return 'arm'
108112
if arch == 'armsimdbc64':
@@ -116,7 +120,7 @@ def DartTargetCpuForArch(arch):
116120
return 'ia32'
117121
if arch in ['x64']:
118122
return 'x64'
119-
if arch in ['arm', 'simarm', 'simarm_x64']:
123+
if arch in ['arm', 'simarm', 'simarm_x64', 'arm_x64']:
120124
return 'arm'
121125
if arch in ['armv6', 'simarmv6']:
122126
return 'armv6'
@@ -313,7 +317,7 @@ def ProcessOptions(args):
313317
return False
314318
for arch in args.arch:
315319
archs = [
316-
'ia32', 'x64', 'simarm', 'arm', 'simarmv6', 'armv6', 'simarmv5te',
320+
'ia32', 'x64', 'simarm', 'arm', 'arm_x64', 'simarmv6', 'armv6', 'simarmv5te',
317321
'armv5te', 'simarm64', 'arm64', 'simdbc', 'simdbc64', 'armsimdbc',
318322
'armsimdbc64', 'simarm_x64'
319323
]
@@ -334,7 +338,7 @@ def ProcessOptions(args):
334338
% (os_name, HOST_OS))
335339
return False
336340
if not arch in [
337-
'ia32', 'x64', 'arm', 'armv6', 'armv5te', 'arm64', 'simdbc',
341+
'ia32', 'x64', 'arm', 'arm_x64', 'armv6', 'armv5te', 'arm64', 'simdbc',
338342
'simdbc64'
339343
]:
340344
print(
@@ -373,7 +377,7 @@ def parse_args(args):
373377
'-a',
374378
type=str,
375379
help='Target architectures (comma-separated).',
376-
metavar='[all,ia32,x64,simarm,arm,simarmv6,armv6,simarmv5te,armv5te,'
380+
metavar='[all,ia32,x64,simarm,arm,arm_x64,simarmv6,armv6,simarmv5te,armv5te,'
377381
'simarm64,arm64,simdbc,armsimdbc,simarm_x64]',
378382
default='x64')
379383
common_group.add_argument(

0 commit comments

Comments
 (0)