Index: src/compiler/arm/instruction-selector-arm.cc |
diff --git a/src/compiler/arm/instruction-selector-arm.cc b/src/compiler/arm/instruction-selector-arm.cc |
index 0002064eb41e5c35884cb96620b916da80ce595a..499d095fa833f35433151d1ae7257ace9f4dbb04 100644 |
--- a/src/compiler/arm/instruction-selector-arm.cc |
+++ b/src/compiler/arm/instruction-selector-arm.cc |
@@ -760,6 +760,12 @@ void InstructionSelector::VisitWord32Clz(Node* node) { |
void InstructionSelector::VisitWord32Ctz(Node* node) { UNREACHABLE(); } |
+void InstructionSelector::VisitWord32ReverseBits(Node* node) { |
+ DCHECK(IsSupported(ARMv7)); |
+ VisitRR(this, kArmRbit, node); |
+} |
+ |
+ |
void InstructionSelector::VisitWord32Popcnt(Node* node) { UNREACHABLE(); } |
@@ -1645,6 +1651,9 @@ InstructionSelector::SupportedMachineOperatorFlags() { |
MachineOperatorBuilder::Flags flags = |
MachineOperatorBuilder::kInt32DivIsSafe | |
MachineOperatorBuilder::kUint32DivIsSafe; |
+ if (CpuFeatures::IsSupported(ARMv7)) { |
+ flags |= MachineOperatorBuilder::kWord32ReverseBits; |
+ } |
if (CpuFeatures::IsSupported(ARMv8)) { |
flags |= MachineOperatorBuilder::kFloat32RoundDown | |
MachineOperatorBuilder::kFloat64RoundDown | |