Index: src/arm/constants-arm.h |
diff --git a/src/arm/constants-arm.h b/src/arm/constants-arm.h |
index 2bade20fedf5979475bc7d36ea1ba8f7a10c8095..0c2ffdf4b97042e3efaa2d39de9be7a4046ae6c3 100644 |
--- a/src/arm/constants-arm.h |
+++ b/src/arm/constants-arm.h |
@@ -374,10 +374,10 @@ const int32_t kDefaultStopCode = -1; |
// Type of VFP register. Determines register encoding. |
enum VFPRegPrecision { |
kSinglePrecision = 0, |
- kDoublePrecision = 1 |
+ kDoublePrecision = 1, |
+ kSimd128Precision = 2 |
}; |
- |
// VFP FPSCR constants. |
enum VFPConversionMode { |
kFPSCRRounding = 0, |
@@ -674,8 +674,15 @@ class Instruction { |
inline int VFPGlueRegValue(VFPRegPrecision pre, int four_bit, int one_bit) { |
if (pre == kSinglePrecision) { |
return (Bits(four_bit + 3, four_bit) << 1) | Bit(one_bit); |
+ } else { |
+ int reg_num = (Bit(one_bit) << 4) | Bits(four_bit + 3, four_bit); |
+ if (pre == kDoublePrecision) { |
+ return reg_num; |
+ } |
+ DCHECK_EQ(kSimd128Precision, pre); |
+ DCHECK_EQ(reg_num & 1, 0); |
+ return reg_num / 2; |
} |
- return (Bit(one_bit) << 4) | Bits(four_bit + 3, four_bit); |
} |
// We need to prevent the creation of instances of class Instruction. |