Index: src/compiler/arm64/instruction-selector-arm64.cc |
diff --git a/src/compiler/arm64/instruction-selector-arm64.cc b/src/compiler/arm64/instruction-selector-arm64.cc |
index 9e2e18e1111ffecfe1699f86e7bcfe1143e88ffd..2a7b9299c22dd63a009aff89eeef70d0c8442a1b 100644 |
--- a/src/compiler/arm64/instruction-selector-arm64.cc |
+++ b/src/compiler/arm64/instruction-selector-arm64.cc |
@@ -957,19 +957,17 @@ |
// Any shift value can match; int64 shifts use `value % 64`. |
uint32_t lsb = static_cast<uint32_t>(mleft.right().Value() & 0x3f); |
- if (lsb != 0) { |
- // Ubfx cannot extract bits past the register size, however since |
- // shifting the original value would have introduced some zeros we can |
- // still use ubfx with a smaller mask and the remaining bits will be |
- // zeros. |
- if (lsb + mask_width > 64) mask_width = 64 - lsb; |
- |
- Emit(kArm64Ubfx, g.DefineAsRegister(node), |
- g.UseRegister(mleft.left().node()), |
- g.UseImmediateOrTemp(mleft.right().node(), lsb), |
- g.TempImmediate(static_cast<int32_t>(mask_width))); |
- return; |
- } |
+ // Ubfx cannot extract bits past the register size, however since |
+ // shifting the original value would have introduced some zeros we can |
+ // still use ubfx with a smaller mask and the remaining bits will be |
+ // zeros. |
+ if (lsb + mask_width > 64) mask_width = 64 - lsb; |
+ |
+ Emit(kArm64Ubfx, g.DefineAsRegister(node), |
+ g.UseRegister(mleft.left().node()), |
+ g.UseImmediateOrTemp(mleft.right().node(), lsb), |
+ g.TempImmediate(static_cast<int32_t>(mask_width))); |
+ return; |
} |
// Other cases fall through to the normal And operation. |
} |