Skip to content

Commit e82fedc

Browse files
mkustermanncommit-bot@chromium.org
authored andcommitted
[vm] Remove deprecated (and untested) ARMv5 support from the VM
Since we have no CQ/CI test coverage of ARMv5 and none of our customers uses it, a breaking change request was made (see issue further down). The breaking change has been approved and a corresponding email has been sent out: https://groups.google.com/a/dartlang.org/forum/?nomobile=true#!topic/announce/vRQja7di3FQ This CL removes any armv5 related code from our codebase. Closes #36666 Change-Id: I9abf32f1980ca19a9cf882b43c9966b2127f89e3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122540 Reviewed-by: Ryan Macnak <rmacnak@google.com> Commit-Queue: Martin Kustermann <kustermann@google.com>
1 parent 5fd6c8a commit e82fedc

File tree

32 files changed

+110
-253
lines changed

32 files changed

+110
-253
lines changed

pkg/dev_compiler/tool/ddc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ then
3030
DIRS=$( ls "$OUT_DIR" )
3131
# list of possible configurations in decreasing desirability
3232
CONFIGS=("ReleaseX64" "ReleaseIA32" "DebugX64" "DebugIA32"
33-
"ReleaseARM" "ReleaseARM64" "ReleaseARMV5TE"
34-
"DebugARM" "DebugARM64" "DebugARMV5TE")
33+
"ReleaseARM" "ReleaseARM64" "DebugARM" "DebugARM64")
3534
DART_CONFIGURATION="None"
3635
for CONFIG in ${CONFIGS[*]}
3736
do

pkg/pkg.status

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ analyzer/test/src/task/strong/front_end_inference_test: Slow
210210

211211
# Timeout. These tests do not run efficiently on our simulator or low-end
212212
# devices.
213-
[ $runtime == vm && ($arch == armv5te || $arch == armv6 || $arch == simarm || $arch == simarm64 || $arch == simarmv5te || $arch == simarmv6 || $arch == simdbc64) ]
213+
[ $runtime == vm && ($arch == armv6 || $arch == simarm || $arch == simarm64 || $arch == simarmv6 || $arch == simdbc64) ]
214214
*: Skip
215215

216216
[ $arch != x64 || $compiler != none || $mode != release || $runtime != vm ]

pkg/smith/lib/configuration.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -553,11 +553,9 @@ class Architecture extends NamedEnum {
553553
static const arm = Architecture._('arm');
554554
static const arm_x64 = Architecture._('arm_x64');
555555
static const armv6 = Architecture._('armv6');
556-
static const armv5te = Architecture._('armv5te');
557556
static const arm64 = Architecture._('arm64');
558557
static const simarm = Architecture._('simarm');
559558
static const simarmv6 = Architecture._('simarmv6');
560-
static const simarmv5te = Architecture._('simarmv5te');
561559
static const simarm64 = Architecture._('simarm64');
562560
static const simdbc = Architecture._('simdbc');
563561
static const simdbc64 = Architecture._('simdbc64');
@@ -569,12 +567,10 @@ class Architecture extends NamedEnum {
569567
x64,
570568
arm,
571569
armv6,
572-
armv5te,
573570
arm_x64,
574571
arm64,
575572
simarm,
576573
simarmv6,
577-
simarmv5te,
578574
simarm64,
579575
simdbc,
580576
simdbc64

pkg/status_file/test/data/vm.status

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ cc/Read: Fail # TODO(zra): Investigate, ../../dart/runtime/bin/file_test.cc: 34
5151
# On the simluator stack traces produced by the Profiler do not match
5252
# up with the real Dart stack trace and hence we don't get correct
5353
# symbol names.
54-
[ $arch == simarm || $arch == simarmv6 || $arch == simarmv5te || $arch == simarm64 || $arch == simdbc || $arch == simdbc64 ]
54+
[ $arch == simarm || $arch == simarmv6 || $arch == simarm64 || $arch == simdbc || $arch == simdbc64 ]
5555
cc/Service_Profile: Skip
5656
cc/Profiler_AllocationSampleTest: Skip
5757
cc/Profiler_ArrayAllocation: Skip

pkg/test_runner/lib/src/options.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ none: No runtime, compile only.''',
141141
Allowed values are:
142142
all
143143
ia32, x64
144-
arm, armv6, armv5te, arm64,
145-
simarm, simarmv6, simarmv5te, simarm64,
144+
arm, armv6, arm64,
145+
simarm, simarmv6, simarm64,
146146
simdbc, simdbc64, arm_x64''',
147147
abbr: 'a',
148148
values: ['all']..addAll(Architecture.names),

pkg/test_runner/lib/src/runtime_configuration.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,6 @@ class DartVmRuntimeConfiguration extends RuntimeConfiguration {
233233
case Architecture.arm64:
234234
case Architecture.simarmv6:
235235
case Architecture.armv6:
236-
case Architecture.simarmv5te:
237-
case Architecture.armv5te:
238236
case Architecture.simarm64:
239237
case Architecture.simdbc:
240238
case Architecture.simdbc64:

runtime/BUILD.gn

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,6 @@ config("dart_arch_config") {
100100
} else if (dart_target_arch == "armv6") {
101101
defines += [ "TARGET_ARCH_ARM" ]
102102
defines += [ "TARGET_ARCH_ARM_6" ]
103-
} else if (dart_target_arch == "armv5te") {
104-
defines += [ "TARGET_ARCH_ARM" ]
105-
defines += [ "TARGET_ARCH_ARM_5TE" ]
106103
} else if (dart_target_arch == "arm64") {
107104
defines += [ "TARGET_ARCH_ARM64" ]
108105
} else if (dart_target_arch == "x64") {

runtime/platform/globals.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -419,12 +419,6 @@ typedef simd128_value_t fpu_register_t;
419419
#define DUAL_MAPPING_SUPPORTED 1
420420
#endif
421421

422-
// Disable background threads by default on armv5te. The relevant
423-
// implementations are uniprocessors.
424-
#if !defined(TARGET_ARCH_ARM_5TE)
425-
#define ARCH_IS_MULTI_CORE 1
426-
#endif
427-
428422
// Short form printf format specifiers
429423
#define Pd PRIdPTR
430424
#define Pu PRIuPTR

runtime/tests/vm/vm.status

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ cc/GenKernelKernelReadAllBytecode: SkipByDesign # No interpreter support.
192192
# On the simluator stack traces produced by the Profiler do not match
193193
# up with the real Dart stack trace and hence we don't get correct
194194
# symbol names.
195-
[ $arch == simarm || $arch == simarm64 || $arch == simarmv5te || $arch == simarmv6 || $arch == simdbc || $arch == simdbc64 ]
195+
[ $arch == simarm || $arch == simarm64 || $arch == simarmv6 || $arch == simdbc || $arch == simdbc64 ]
196196
cc/LargeMap: SkipByDesign
197197
cc/Profiler_AllocationSampleTest: SkipByDesign
198198
cc/Profiler_ArrayAllocation: SkipByDesign

runtime/vm/compiler/assembler/assembler_arm.cc

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -418,15 +418,8 @@ void Assembler::umaal(Register rd_lo,
418418
ASSERT(rd_hi != IP);
419419
ASSERT(rn != IP);
420420
ASSERT(rm != IP);
421-
if (TargetCPUFeatures::arm_version() != ARMv5TE) {
422-
// Assembler registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs.
423-
EmitMulOp(AL, B22, rd_lo, rd_hi, rn, rm);
424-
} else {
425-
mov(IP, Operand(0));
426-
umlal(rd_lo, IP, rn, rm);
427-
adds(rd_lo, rd_lo, Operand(rd_hi));
428-
adc(rd_hi, IP, Operand(0));
429-
}
421+
// Assembler registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs.
422+
EmitMulOp(AL, B22, rd_lo, rd_hi, rn, rm);
430423
}
431424

432425
void Assembler::EmitDivOp(Condition cond,
@@ -493,12 +486,7 @@ void Assembler::ldrd(Register rd,
493486
Condition cond) {
494487
ASSERT((rd % 2) == 0);
495488
ASSERT(rd2 == rd + 1);
496-
if (TargetCPUFeatures::arm_version() == ARMv5TE) {
497-
ldr(rd, Address(rn, offset), cond);
498-
ldr(rd2, Address(rn, offset + target::kWordSize), cond);
499-
} else {
500-
EmitMemOpAddressMode3(cond, B7 | B6 | B4, rd, Address(rn, offset));
501-
}
489+
EmitMemOpAddressMode3(cond, B7 | B6 | B4, rd, Address(rn, offset));
502490
}
503491

504492
void Assembler::strd(Register rd,
@@ -508,12 +496,7 @@ void Assembler::strd(Register rd,
508496
Condition cond) {
509497
ASSERT((rd % 2) == 0);
510498
ASSERT(rd2 == rd + 1);
511-
if (TargetCPUFeatures::arm_version() == ARMv5TE) {
512-
str(rd, Address(rn, offset), cond);
513-
str(rd2, Address(rn, offset + target::kWordSize), cond);
514-
} else {
515-
EmitMemOpAddressMode3(cond, B7 | B6 | B5 | B4, rd, Address(rn, offset));
516-
}
499+
EmitMemOpAddressMode3(cond, B7 | B6 | B5 | B4, rd, Address(rn, offset));
517500
}
518501

519502
void Assembler::ldm(BlockAddressMode am,
@@ -533,7 +516,6 @@ void Assembler::stm(BlockAddressMode am,
533516
}
534517

535518
void Assembler::ldrex(Register rt, Register rn, Condition cond) {
536-
ASSERT(TargetCPUFeatures::arm_version() != ARMv5TE);
537519
ASSERT(rn != kNoRegister);
538520
ASSERT(rt != kNoRegister);
539521
ASSERT(cond != kNoCondition);
@@ -545,7 +527,6 @@ void Assembler::ldrex(Register rt, Register rn, Condition cond) {
545527
}
546528

547529
void Assembler::strex(Register rd, Register rt, Register rn, Condition cond) {
548-
ASSERT(TargetCPUFeatures::arm_version() != ARMv5TE);
549530
ASSERT(rn != kNoRegister);
550531
ASSERT(rd != kNoRegister);
551532
ASSERT(rt != kNoRegister);
@@ -562,7 +543,7 @@ void Assembler::EnterSafepoint(Register addr, Register state) {
562543
// We generate the same number of instructions whether or not the slow-path is
563544
// forced. This simplifies GenerateJitCallbackTrampolines.
564545
Label slow_path, done, retry;
565-
if (FLAG_use_slow_path || TargetCPUFeatures::arm_version() == ARMv5TE) {
546+
if (FLAG_use_slow_path) {
566547
b(&slow_path);
567548
}
568549

@@ -578,7 +559,7 @@ void Assembler::EnterSafepoint(Register addr, Register state) {
578559
cmp(TMP, Operand(0)); // 0 means strex was successful.
579560
b(&done, EQ);
580561

581-
if (!FLAG_use_slow_path && TargetCPUFeatures::arm_version() != ARMv5TE) {
562+
if (!FLAG_use_slow_path) {
582563
b(&retry);
583564
}
584565

@@ -614,7 +595,7 @@ void Assembler::ExitSafepoint(Register addr, Register state) {
614595
// We generate the same number of instructions whether or not the slow-path is
615596
// forced, for consistency with EnterSafepoint.
616597
Label slow_path, done, retry;
617-
if (FLAG_use_slow_path || TargetCPUFeatures::arm_version() == ARMv5TE) {
598+
if (FLAG_use_slow_path) {
618599
b(&slow_path);
619600
}
620601

@@ -630,7 +611,7 @@ void Assembler::ExitSafepoint(Register addr, Register state) {
630611
cmp(TMP, Operand(0)); // 0 means strex was successful.
631612
b(&done, EQ);
632613

633-
if (!FLAG_use_slow_path && TargetCPUFeatures::arm_version() != ARMv5TE) {
614+
if (!FLAG_use_slow_path) {
634615
b(&retry);
635616
}
636617

@@ -673,7 +654,6 @@ void Assembler::TransitionNativeToGenerated(Register addr,
673654
}
674655

675656
void Assembler::clrex() {
676-
ASSERT(TargetCPUFeatures::arm_version() != ARMv5TE);
677657
int32_t encoding = (kSpecialCondition << kConditionShift) | B26 | B24 | B22 |
678658
B21 | B20 | (0xff << 12) | B4 | 0xf;
679659
Emit(encoding);
@@ -894,13 +874,13 @@ void Assembler::EmitMultiVDMemOp(Condition cond,
894874
ASSERT(cond != kNoCondition);
895875
ASSERT(start != kNoDRegister);
896876
ASSERT(static_cast<int32_t>(start) + count <= kNumberOfDRegisters);
897-
const int armv5te = TargetCPUFeatures::arm_version() == ARMv5TE ? 1 : 0;
877+
const int notArmv5te = 0;
898878

899879
int32_t encoding =
900880
(static_cast<int32_t>(cond) << kConditionShift) | B27 | B26 | B11 | B9 |
901881
B8 | am | (load ? L : 0) | ArmEncode::Rn(base) |
902882
((static_cast<int32_t>(start) & 0x10) ? D : 0) |
903-
((static_cast<int32_t>(start) & 0xf) << 12) | (count << 1) | armv5te;
883+
((static_cast<int32_t>(start) & 0xf) << 12) | (count << 1) | notArmv5te;
904884
Emit(encoding);
905885
}
906886

@@ -2075,7 +2055,7 @@ class PatchFarBranch : public AssemblerFixup {
20752055

20762056
void Process(const MemoryRegion& region, intptr_t position) {
20772057
const ARMVersion version = TargetCPUFeatures::arm_version();
2078-
if ((version == ARMv5TE) || (version == ARMv6)) {
2058+
if (version == ARMv6) {
20792059
ProcessARMv6(region, position);
20802060
} else {
20812061
ASSERT(version == ARMv7);
@@ -2329,7 +2309,7 @@ void Assembler::BindARMv7(Label* label) {
23292309

23302310
void Assembler::Bind(Label* label) {
23312311
const ARMVersion version = TargetCPUFeatures::arm_version();
2332-
if ((version == ARMv5TE) || (version == ARMv6)) {
2312+
if (version == ARMv6) {
23332313
BindARMv6(label);
23342314
} else {
23352315
ASSERT(version == ARMv7);
@@ -2788,7 +2768,7 @@ void Assembler::LoadPatchableImmediate(Register rd,
27882768
int32_t value,
27892769
Condition cond) {
27902770
const ARMVersion version = TargetCPUFeatures::arm_version();
2791-
if ((version == ARMv5TE) || (version == ARMv6)) {
2771+
if (version == ARMv6) {
27922772
// This sequence is patched in a few places, and should remain fixed.
27932773
const uint32_t byte0 = (value & 0x000000ff);
27942774
const uint32_t byte1 = (value & 0x0000ff00) >> 8;
@@ -2811,7 +2791,7 @@ void Assembler::LoadDecodableImmediate(Register rd,
28112791
int32_t value,
28122792
Condition cond) {
28132793
const ARMVersion version = TargetCPUFeatures::arm_version();
2814-
if ((version == ARMv5TE) || (version == ARMv6)) {
2794+
if (version == ARMv6) {
28152795
if (constant_pool_allowed()) {
28162796
const int32_t offset =
28172797
target::ObjectPool::element_offset(FindImmediate(value));

0 commit comments

Comments
 (0)