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 907d8679f8615b1f0fc4fbc67ca0a6d62722b5b3..1fceeb5d52ea9ff7bb1d212c2097bcf781f93d14 100644 |
--- a/src/compiler/arm/instruction-selector-arm.cc |
+++ b/src/compiler/arm/instruction-selector-arm.cc |
@@ -726,6 +726,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(); } |
@@ -1611,6 +1617,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 | |