| Index: src/arm/assembler-arm.cc
|
| diff --git a/src/arm/assembler-arm.cc b/src/arm/assembler-arm.cc
|
| index b35273d0863ef76e3c8f1746ef9c12420af2c531..ee02027610dc76fe216a1f64c4d2623570da1720 100644
|
| --- a/src/arm/assembler-arm.cc
|
| +++ b/src/arm/assembler-arm.cc
|
| @@ -207,10 +207,6 @@ void CpuFeatures::ProbeImpl(bool cross_compile) {
|
| // For the simulator build, use whatever the flags specify.
|
| supported_ |= command_line;
|
|
|
| - if (FLAG_enable_movw_movt && ((supported_ & kArmv7) == kArmv7)) {
|
| - supported_ |= 1u << MOVW_MOVT_IMMEDIATE_LOADS;
|
| - }
|
| -
|
| #else // __arm__
|
| // Probe for additional features at runtime.
|
| base::CPU cpu;
|
| @@ -237,12 +233,6 @@ void CpuFeatures::ProbeImpl(bool cross_compile) {
|
|
|
| // Additional tuning options.
|
|
|
| - // Prefer to use movw/movt for QUALCOMM ARMv7 cores.
|
| - if (FLAG_enable_movw_movt && ((supported_ & kArmv7) == kArmv7) &&
|
| - (cpu.implementer() == base::CPU::QUALCOMM)) {
|
| - supported_ |= 1u << MOVW_MOVT_IMMEDIATE_LOADS;
|
| - }
|
| -
|
| // ARM Cortex-A9 and Cortex-A5 have 32 byte cachelines.
|
| if (cpu.implementer() == base::CPU::ARM &&
|
| (cpu.part() == base::CPU::ARM_CORTEX_A5 ||
|
| @@ -253,7 +243,6 @@ void CpuFeatures::ProbeImpl(bool cross_compile) {
|
|
|
| DCHECK_IMPLIES(IsSupported(ARMv7_SUDIV), IsSupported(ARMv7));
|
| DCHECK_IMPLIES(IsSupported(ARMv8), IsSupported(ARMv7_SUDIV));
|
| - DCHECK_IMPLIES(IsSupported(MOVW_MOVT_IMMEDIATE_LOADS), IsSupported(ARMv7));
|
| }
|
|
|
|
|
| @@ -312,13 +301,10 @@ void CpuFeatures::PrintTarget() {
|
|
|
|
|
| void CpuFeatures::PrintFeatures() {
|
| - printf(
|
| - "ARMv8=%d ARMv7=%d VFPv3=%d VFP32DREGS=%d NEON=%d SUDIV=%d "
|
| - "MOVW_MOVT_IMMEDIATE_LOADS=%d",
|
| - CpuFeatures::IsSupported(ARMv8), CpuFeatures::IsSupported(ARMv7),
|
| - CpuFeatures::IsSupported(VFPv3), CpuFeatures::IsSupported(VFP32DREGS),
|
| - CpuFeatures::IsSupported(NEON), CpuFeatures::IsSupported(SUDIV),
|
| - CpuFeatures::IsSupported(MOVW_MOVT_IMMEDIATE_LOADS));
|
| + printf("ARMv8=%d ARMv7=%d VFPv3=%d VFP32DREGS=%d NEON=%d SUDIV=%d",
|
| + CpuFeatures::IsSupported(ARMv8), CpuFeatures::IsSupported(ARMv7),
|
| + CpuFeatures::IsSupported(VFPv3), CpuFeatures::IsSupported(VFP32DREGS),
|
| + CpuFeatures::IsSupported(NEON), CpuFeatures::IsSupported(SUDIV));
|
| #ifdef __arm__
|
| bool eabi_hardfloat = base::OS::ArmUsingHardFloat();
|
| #elif USE_EABI_HARDFLOAT
|
| @@ -1200,13 +1186,10 @@ bool Operand::must_output_reloc_info(const Assembler* assembler) const {
|
|
|
| static bool use_mov_immediate_load(const Operand& x,
|
| const Assembler* assembler) {
|
| - if (FLAG_enable_embedded_constant_pool && assembler != NULL &&
|
| + DCHECK(assembler != nullptr);
|
| + if (FLAG_enable_embedded_constant_pool &&
|
| !assembler->is_constant_pool_available()) {
|
| return true;
|
| - } else if (CpuFeatures::IsSupported(MOVW_MOVT_IMMEDIATE_LOADS) &&
|
| - (assembler == NULL || !assembler->predictable_code_size())) {
|
| - // Prefer movw / movt to constant pool if it is more efficient on the CPU.
|
| - return true;
|
| } else if (x.must_output_reloc_info(assembler)) {
|
| // Prefer constant pool if data is likely to be patched.
|
| return false;
|
| @@ -1219,6 +1202,7 @@ static bool use_mov_immediate_load(const Operand& x,
|
|
|
| int Operand::instructions_required(const Assembler* assembler,
|
| Instr instr) const {
|
| + DCHECK(assembler != nullptr);
|
| if (rm_.is_valid()) return 1;
|
| uint32_t dummy1, dummy2;
|
| if (must_output_reloc_info(assembler) ||
|
| @@ -1230,8 +1214,7 @@ int Operand::instructions_required(const Assembler* assembler,
|
| if (use_mov_immediate_load(*this, assembler)) {
|
| // A movw / movt or mov / orr immediate load.
|
| instructions = CpuFeatures::IsSupported(ARMv7) ? 2 : 4;
|
| - } else if (assembler != NULL &&
|
| - assembler->ConstantPoolAccessIsInOverflow()) {
|
| + } else if (assembler->ConstantPoolAccessIsInOverflow()) {
|
| // An overflowed constant pool load.
|
| instructions = CpuFeatures::IsSupported(ARMv7) ? 3 : 5;
|
| } else {
|
|
|