| Index: runtime/vm/constants_arm64.h
|
| diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
|
| index c2d6981af695e4e39a37bf9b2c30ddd84bd66405..542fd521f84ef780f9ccfd05a36e561b30d353d2 100644
|
| --- a/runtime/vm/constants_arm64.h
|
| +++ b/runtime/vm/constants_arm64.h
|
| @@ -10,16 +10,16 @@
|
| namespace dart {
|
|
|
| enum Register {
|
| - R0 = 0,
|
| - R1 = 1,
|
| - R2 = 2,
|
| - R3 = 3,
|
| - R4 = 4,
|
| - R5 = 5,
|
| - R6 = 6,
|
| - R7 = 7,
|
| - R8 = 8,
|
| - R9 = 9,
|
| + R0 = 0,
|
| + R1 = 1,
|
| + R2 = 2,
|
| + R3 = 3,
|
| + R4 = 4,
|
| + R5 = 5,
|
| + R6 = 6,
|
| + R7 = 7,
|
| + R8 = 8,
|
| + R9 = 9,
|
| R10 = 10,
|
| R11 = 11,
|
| R12 = 12,
|
| @@ -60,16 +60,16 @@ enum Register {
|
|
|
|
|
| enum VRegister {
|
| - V0 = 0,
|
| - V1 = 1,
|
| - V2 = 2,
|
| - V3 = 3,
|
| - V4 = 4,
|
| - V5 = 5,
|
| - V6 = 6,
|
| - V7 = 7,
|
| - V8 = 8,
|
| - V9 = 9,
|
| + V0 = 0,
|
| + V1 = 1,
|
| + V2 = 2,
|
| + V3 = 3,
|
| + V4 = 4,
|
| + V5 = 5,
|
| + V6 = 6,
|
| + V7 = 7,
|
| + V8 = 8,
|
| + V9 = 9,
|
| V10 = 10,
|
| V11 = 11,
|
| V12 = 12,
|
| @@ -109,14 +109,14 @@ const FpuRegister kNoFpuRegister = kNoVRegister;
|
| const Register TMP = R16; // Used as scratch register by assembler.
|
| const Register TMP2 = R17;
|
| const Register CTX = R28; // Location of current context at method entry.
|
| -const Register PP = R27; // Caches object pool pointer in generated code.
|
| +const Register PP = R27; // Caches object pool pointer in generated code.
|
| const Register CODE_REG = R24;
|
| -const Register FPREG = FP; // Frame pointer register.
|
| -const Register SPREG = R15; // Stack pointer register.
|
| -const Register LRREG = LR; // Link register.
|
| -const Register ICREG = R5; // IC data register.
|
| +const Register FPREG = FP; // Frame pointer register.
|
| +const Register SPREG = R15; // Stack pointer register.
|
| +const Register LRREG = LR; // Link register.
|
| +const Register ICREG = R5; // IC data register.
|
| const Register ARGS_DESC_REG = R4; // Arguments descriptor register.
|
| -const Register THR = R26; // Caches current thread in generated code.
|
| +const Register THR = R26; // Caches current thread in generated code.
|
| const Register CALLEE_SAVED_TEMP = R19;
|
| const Register CALLEE_SAVED_TEMP2 = R20;
|
|
|
| @@ -140,13 +140,12 @@ const RegList kAllCpuRegistersList = 0xFFFF;
|
|
|
|
|
| // C++ ABI call registers.
|
| -const RegList kAbiArgumentCpuRegs =
|
| - (1 << R0) | (1 << R1) | (1 << R2) | (1 << R3) |
|
| - (1 << R4) | (1 << R5) | (1 << R6) | (1 << R7);
|
| +const RegList kAbiArgumentCpuRegs = (1 << R0) | (1 << R1) | (1 << R2) |
|
| + (1 << R3) | (1 << R4) | (1 << R5) |
|
| + (1 << R6) | (1 << R7);
|
| const RegList kAbiPreservedCpuRegs =
|
| - (1 << R19) | (1 << R20) | (1 << R21) | (1 << R22) |
|
| - (1 << R23) | (1 << R24) | (1 << R25) | (1 << R26) |
|
| - (1 << R27) | (1 << R28);
|
| + (1 << R19) | (1 << R20) | (1 << R21) | (1 << R22) | (1 << R23) |
|
| + (1 << R24) | (1 << R25) | (1 << R26) | (1 << R27) | (1 << R28);
|
| const Register kAbiFirstPreservedCpuReg = R19;
|
| const Register kAbiLastPreservedCpuReg = R28;
|
| const int kAbiPreservedCpuRegCount = 10;
|
| @@ -156,16 +155,10 @@ const int kAbiPreservedFpuRegCount = 8;
|
|
|
| const intptr_t kReservedCpuRegisters =
|
| (1 << SPREG) | // Dart SP
|
| - (1 << FPREG) |
|
| - (1 << TMP) |
|
| - (1 << TMP2) |
|
| - (1 << PP) |
|
| - (1 << THR) |
|
| - (1 << LR) |
|
| - (1 << R31) | // C++ SP
|
| - (1 << CTX) |
|
| - (1 << R18); // iOS platform register.
|
| - // TODO(rmacnak): Only reserve on Mac & iOS.
|
| + (1 << FPREG) | (1 << TMP) | (1 << TMP2) | (1 << PP) | (1 << THR) |
|
| + (1 << LR) | (1 << R31) | // C++ SP
|
| + (1 << CTX) | (1 << R18); // iOS platform register.
|
| + // TODO(rmacnak): Only reserve on Mac & iOS.
|
| // CPU registers available to Dart allocator.
|
| const RegList kDartAvailableCpuRegs =
|
| kAllCpuRegistersList & ~kReservedCpuRegisters;
|
| @@ -184,16 +177,16 @@ static inline Register ConcreteRegister(Register r) {
|
| // Values for the condition field as defined in section A3.2.
|
| enum Condition {
|
| kNoCondition = -1,
|
| - EQ = 0, // equal
|
| - NE = 1, // not equal
|
| - CS = 2, // carry set/unsigned higher or same
|
| - CC = 3, // carry clear/unsigned lower
|
| - MI = 4, // minus/negative
|
| - PL = 5, // plus/positive or zero
|
| - VS = 6, // overflow
|
| - VC = 7, // no overflow
|
| - HI = 8, // unsigned higher
|
| - LS = 9, // unsigned lower or same
|
| + EQ = 0, // equal
|
| + NE = 1, // not equal
|
| + CS = 2, // carry set/unsigned higher or same
|
| + CC = 3, // carry clear/unsigned lower
|
| + MI = 4, // minus/negative
|
| + PL = 5, // plus/positive or zero
|
| + VS = 6, // overflow
|
| + VC = 7, // no overflow
|
| + HI = 8, // unsigned higher
|
| + LS = 9, // unsigned lower or same
|
| GE = 10, // signed greater than or equal
|
| LT = 11, // signed less than
|
| GT = 12, // signed greater than
|
| @@ -209,14 +202,38 @@ static inline Condition InvertCondition(Condition c) {
|
| }
|
|
|
| enum Bits {
|
| - B0 = (1 << 0), B1 = (1 << 1), B2 = (1 << 2), B3 = (1 << 3),
|
| - B4 = (1 << 4), B5 = (1 << 5), B6 = (1 << 6), B7 = (1 << 7),
|
| - B8 = (1 << 8), B9 = (1 << 9), B10 = (1 << 10), B11 = (1 << 11),
|
| - B12 = (1 << 12), B13 = (1 << 13), B14 = (1 << 14), B15 = (1 << 15),
|
| - B16 = (1 << 16), B17 = (1 << 17), B18 = (1 << 18), B19 = (1 << 19),
|
| - B20 = (1 << 20), B21 = (1 << 21), B22 = (1 << 22), B23 = (1 << 23),
|
| - B24 = (1 << 24), B25 = (1 << 25), B26 = (1 << 26), B27 = (1 << 27),
|
| - B28 = (1 << 28), B29 = (1 << 29), B30 = (1 << 30), B31 = (1 << 31),
|
| + B0 = (1 << 0),
|
| + B1 = (1 << 1),
|
| + B2 = (1 << 2),
|
| + B3 = (1 << 3),
|
| + B4 = (1 << 4),
|
| + B5 = (1 << 5),
|
| + B6 = (1 << 6),
|
| + B7 = (1 << 7),
|
| + B8 = (1 << 8),
|
| + B9 = (1 << 9),
|
| + B10 = (1 << 10),
|
| + B11 = (1 << 11),
|
| + B12 = (1 << 12),
|
| + B13 = (1 << 13),
|
| + B14 = (1 << 14),
|
| + B15 = (1 << 15),
|
| + B16 = (1 << 16),
|
| + B17 = (1 << 17),
|
| + B18 = (1 << 18),
|
| + B19 = (1 << 19),
|
| + B20 = (1 << 20),
|
| + B21 = (1 << 21),
|
| + B22 = (1 << 22),
|
| + B23 = (1 << 23),
|
| + B24 = (1 << 24),
|
| + B25 = (1 << 25),
|
| + B26 = (1 << 26),
|
| + B27 = (1 << 27),
|
| + B28 = (1 << 28),
|
| + B29 = (1 << 29),
|
| + B30 = (1 << 30),
|
| + B31 = (1 << 31),
|
| };
|
|
|
| enum OperandSize {
|
| @@ -331,8 +348,11 @@ enum SystemOp {
|
| SystemMask = 0xffc00000,
|
| SystemFixed = CompareBranchFixed | B31 | B30 | B24,
|
| HINT = SystemFixed | B17 | B16 | B13 | B4 | B3 | B2 | B1 | B0,
|
| - CLREX = SystemFixed | B17 | B16 | B13 | B12 | B11 | B10 | B9 | B8 |
|
| - B6 | B4 | B3 | B2 | B1 | B0,
|
| + CLREX = SystemFixed | B17 | B16 | B13 | B12 | B11 | B10 | B9 | B8 | B6 | B4 |
|
| + B3 |
|
| + B2 |
|
| + B1 |
|
| + B0,
|
| };
|
|
|
| // C3.2.5
|
| @@ -554,8 +574,8 @@ enum SIMDTwoRegOp {
|
| VABSD = SIMDTwoRegFixed | B30 | B23 | B22 | B15 | B14 | B13 | B12,
|
| VNEGD = SIMDTwoRegFixed | B30 | B29 | B23 | B22 | B15 | B14 | B13 | B12,
|
| VSQRTS = SIMDTwoRegFixed | B30 | B29 | B23 | B16 | B15 | B14 | B13 | B12,
|
| - VSQRTD = SIMDTwoRegFixed | B30 | B29 | B23 | B22
|
| - | B16 | B15 | B14 | B13 | B12,
|
| + VSQRTD =
|
| + SIMDTwoRegFixed | B30 | B29 | B23 | B22 | B16 | B15 | B14 | B13 | B12,
|
| VRECPES = SIMDTwoRegFixed | B30 | B23 | B16 | B15 | B14 | B12,
|
| VRSQRTES = SIMDTwoRegFixed | B30 | B29 | B23 | B16 | B15 | B14 | B12,
|
| };
|
| @@ -605,48 +625,48 @@ enum FPIntCvtOp {
|
| FMOVRD = FPIntCvtFixed | B22 | B18 | B17,
|
| FMOVDR = FPIntCvtFixed | B22 | B18 | B17 | B16,
|
| FCVTZDS = FPIntCvtFixed | B22 | B20 | B19,
|
| - SCVTFD = FPIntCvtFixed | B22 | B17,
|
| + SCVTFD = FPIntCvtFixed | B22 | B17,
|
| };
|
|
|
|
|
| #define APPLY_OP_LIST(_V) \
|
| -_V(DPImmediate) \
|
| -_V(CompareBranch) \
|
| -_V(LoadStore) \
|
| -_V(DPRegister) \
|
| -_V(DPSimd1) \
|
| -_V(DPSimd2) \
|
| -_V(FP) \
|
| -_V(CompareAndBranch) \
|
| -_V(ConditionalBranch) \
|
| -_V(ExceptionGen) \
|
| -_V(System) \
|
| -_V(TestAndBranch) \
|
| -_V(UnconditionalBranch) \
|
| -_V(UnconditionalBranchReg) \
|
| -_V(LoadStoreReg) \
|
| -_V(LoadStoreRegPair) \
|
| -_V(LoadRegLiteral) \
|
| -_V(LoadStoreExclusive) \
|
| -_V(AddSubImm) \
|
| -_V(LogicalImm) \
|
| -_V(MoveWide) \
|
| -_V(PCRel) \
|
| -_V(AddSubShiftExt) \
|
| -_V(AddSubWithCarry) \
|
| -_V(ConditionalSelect) \
|
| -_V(MiscDP1Source) \
|
| -_V(MiscDP2Source) \
|
| -_V(MiscDP3Source) \
|
| -_V(LogicalShift) \
|
| -_V(SIMDCopy) \
|
| -_V(SIMDThreeSame) \
|
| -_V(SIMDTwoReg) \
|
| -_V(FPCompare) \
|
| -_V(FPOneSource) \
|
| -_V(FPTwoSource) \
|
| -_V(FPImm) \
|
| -_V(FPIntCvt) \
|
| + _V(DPImmediate) \
|
| + _V(CompareBranch) \
|
| + _V(LoadStore) \
|
| + _V(DPRegister) \
|
| + _V(DPSimd1) \
|
| + _V(DPSimd2) \
|
| + _V(FP) \
|
| + _V(CompareAndBranch) \
|
| + _V(ConditionalBranch) \
|
| + _V(ExceptionGen) \
|
| + _V(System) \
|
| + _V(TestAndBranch) \
|
| + _V(UnconditionalBranch) \
|
| + _V(UnconditionalBranchReg) \
|
| + _V(LoadStoreReg) \
|
| + _V(LoadStoreRegPair) \
|
| + _V(LoadRegLiteral) \
|
| + _V(LoadStoreExclusive) \
|
| + _V(AddSubImm) \
|
| + _V(LogicalImm) \
|
| + _V(MoveWide) \
|
| + _V(PCRel) \
|
| + _V(AddSubShiftExt) \
|
| + _V(AddSubWithCarry) \
|
| + _V(ConditionalSelect) \
|
| + _V(MiscDP1Source) \
|
| + _V(MiscDP2Source) \
|
| + _V(MiscDP3Source) \
|
| + _V(LogicalShift) \
|
| + _V(SIMDCopy) \
|
| + _V(SIMDThreeSame) \
|
| + _V(SIMDTwoReg) \
|
| + _V(FPCompare) \
|
| + _V(FPOneSource) \
|
| + _V(FPTwoSource) \
|
| + _V(FPImm) \
|
| + _V(FPIntCvt)
|
|
|
|
|
| enum Shift {
|
| @@ -785,16 +805,18 @@ enum InstructionFields {
|
|
|
|
|
| // Helper functions for decoding logical immediates.
|
| -static inline uint64_t RotateRight(
|
| - uint64_t value, uint8_t rotate, uint8_t width) {
|
| +static inline uint64_t RotateRight(uint64_t value,
|
| + uint8_t rotate,
|
| + uint8_t width) {
|
| ASSERT(width <= 64);
|
| rotate &= 63;
|
| return ((value & ((1UL << rotate) - 1UL)) << (width - rotate)) |
|
| (value >> rotate);
|
| }
|
|
|
| -static inline uint64_t RepeatBitsAcrossReg(
|
| - uint8_t reg_size, uint64_t value, uint8_t width) {
|
| +static inline uint64_t RepeatBitsAcrossReg(uint8_t reg_size,
|
| + uint64_t value,
|
| + uint8_t width) {
|
| ASSERT((width == 2) || (width == 4) || (width == 8) || (width == 16) ||
|
| (width == 32));
|
| ASSERT((reg_size == kWRegSizeInBits) || (reg_size == kXRegSizeInBits));
|
| @@ -818,17 +840,13 @@ static inline uint64_t RepeatBitsAcrossReg(
|
| //
|
| class Instr {
|
| public:
|
| - enum {
|
| - kInstrSize = 4,
|
| - kInstrSizeLog2 = 2,
|
| - kPCReadOffset = 8
|
| - };
|
| + enum { kInstrSize = 4, kInstrSizeLog2 = 2, kPCReadOffset = 8 };
|
|
|
| static const int32_t kNopInstruction = HINT; // hint #0 === nop.
|
|
|
| // Reserved brk and hlt instruction codes.
|
| - static const int32_t kBreakPointCode = 0xdeb0; // For breakpoint.
|
| - static const int32_t kStopMessageCode = 0xdeb1; // For Stop(message).
|
| + static const int32_t kBreakPointCode = 0xdeb0; // For breakpoint.
|
| + static const int32_t kStopMessageCode = 0xdeb1; // For Stop(message).
|
| static const int32_t kSimulatorBreakCode = 0xdeb2; // For breakpoint in sim.
|
| static const int32_t kSimulatorRedirectCode = 0xca11; // For redirection.
|
|
|
| @@ -847,9 +865,7 @@ class Instr {
|
| HLT | (kSimulatorRedirectCode << kImm16Shift);
|
|
|
| // Read one particular bit out of the instruction bits.
|
| - inline int Bit(int nr) const {
|
| - return (InstructionBits() >> nr) & 1;
|
| - }
|
| + inline int Bit(int nr) const { return (InstructionBits() >> nr) & 1; }
|
|
|
| // Read a bit field out of the instruction bits.
|
| inline int Bits(int shift, int count) const {
|
| @@ -866,23 +882,22 @@ class Instr {
|
| *reinterpret_cast<int32_t*>(this) = value;
|
| }
|
|
|
| - inline void SetMoveWideBits(
|
| - MoveWideOp op, Register rd, uint16_t imm, int hw, OperandSize sz) {
|
| + inline void SetMoveWideBits(MoveWideOp op,
|
| + Register rd,
|
| + uint16_t imm,
|
| + int hw,
|
| + OperandSize sz) {
|
| ASSERT((hw >= 0) && (hw <= 3));
|
| ASSERT((sz == kDoubleWord) || (sz == kWord));
|
| const int32_t size = (sz == kDoubleWord) ? B31 : 0;
|
| - SetInstructionBits(
|
| - op | size |
|
| - (static_cast<int32_t>(rd) << kRdShift) |
|
| - (static_cast<int32_t>(hw) << kHWShift) |
|
| - (static_cast<int32_t>(imm) << kImm16Shift));
|
| + SetInstructionBits(op | size | (static_cast<int32_t>(rd) << kRdShift) |
|
| + (static_cast<int32_t>(hw) << kHWShift) |
|
| + (static_cast<int32_t>(imm) << kImm16Shift));
|
| }
|
|
|
| - inline void SetUnconditionalBranchRegBits(
|
| - UnconditionalBranchRegOp op, Register rn) {
|
| - SetInstructionBits(
|
| - op |
|
| - (static_cast<int32_t>(rn) << kRnShift));
|
| + inline void SetUnconditionalBranchRegBits(UnconditionalBranchRegOp op,
|
| + Register rn) {
|
| + SetInstructionBits(op | (static_cast<int32_t>(rn) << kRnShift));
|
| }
|
|
|
| inline void SetImm12Bits(int32_t orig, int32_t imm12) {
|
| @@ -894,29 +909,40 @@ class Instr {
|
| inline int SField() const { return Bit(kSShift); }
|
| inline int SFField() const { return Bit(kSFShift); }
|
| inline int SzField() const { return Bits(kSzShift, kSzBits); }
|
| - inline Register RdField() const { return static_cast<Register>(
|
| - Bits(kRdShift, kRdBits)); }
|
| - inline Register RnField() const { return static_cast<Register>(
|
| - Bits(kRnShift, kRnBits)); }
|
| - inline Register RaField() const { return static_cast<Register>(
|
| - Bits(kRaShift, kRaBits)); }
|
| - inline Register RmField() const { return static_cast<Register>(
|
| - Bits(kRmShift, kRmBits)); }
|
| - inline Register RtField() const { return static_cast<Register>(
|
| - Bits(kRtShift, kRtBits)); }
|
| - inline Register Rt2Field() const { return static_cast<Register>(
|
| - Bits(kRt2Shift, kRt2Bits)); }
|
| - inline Register RsField() const { return static_cast<Register>(
|
| - Bits(kRsShift, kRsBits)); }
|
| -
|
| - inline VRegister VdField() const { return static_cast<VRegister>(
|
| - Bits(kVdShift, kVdBits)); }
|
| - inline VRegister VnField() const { return static_cast<VRegister>(
|
| - Bits(kVnShift, kVnBits)); }
|
| - inline VRegister VmField() const { return static_cast<VRegister>(
|
| - Bits(kVmShift, kVmBits)); }
|
| - inline VRegister VtField() const { return static_cast<VRegister>(
|
| - Bits(kVtShift, kVtBits)); }
|
| + inline Register RdField() const {
|
| + return static_cast<Register>(Bits(kRdShift, kRdBits));
|
| + }
|
| + inline Register RnField() const {
|
| + return static_cast<Register>(Bits(kRnShift, kRnBits));
|
| + }
|
| + inline Register RaField() const {
|
| + return static_cast<Register>(Bits(kRaShift, kRaBits));
|
| + }
|
| + inline Register RmField() const {
|
| + return static_cast<Register>(Bits(kRmShift, kRmBits));
|
| + }
|
| + inline Register RtField() const {
|
| + return static_cast<Register>(Bits(kRtShift, kRtBits));
|
| + }
|
| + inline Register Rt2Field() const {
|
| + return static_cast<Register>(Bits(kRt2Shift, kRt2Bits));
|
| + }
|
| + inline Register RsField() const {
|
| + return static_cast<Register>(Bits(kRsShift, kRsBits));
|
| + }
|
| +
|
| + inline VRegister VdField() const {
|
| + return static_cast<VRegister>(Bits(kVdShift, kVdBits));
|
| + }
|
| + inline VRegister VnField() const {
|
| + return static_cast<VRegister>(Bits(kVnShift, kVnBits));
|
| + }
|
| + inline VRegister VmField() const {
|
| + return static_cast<VRegister>(Bits(kVmShift, kVmBits));
|
| + }
|
| + inline VRegister VtField() const {
|
| + return static_cast<VRegister>(Bits(kVtShift, kVtBits));
|
| + }
|
|
|
| // Immediates
|
| inline int Imm3Field() const { return Bits(kImm3Shift, kImm3Bits); }
|
| @@ -924,16 +950,19 @@ class Instr {
|
| inline int Imm7Field() const { return Bits(kImm7Shift, kImm7Bits); }
|
| // Sign-extended Imm7Field()
|
| inline int64_t SImm7Field() const {
|
| - return (static_cast<int32_t>(Imm7Field()) << 25) >> 25; }
|
| + return (static_cast<int32_t>(Imm7Field()) << 25) >> 25;
|
| + }
|
| inline int Imm8Field() const { return Bits(kImm8Shift, kImm8Bits); }
|
| inline int Imm9Field() const { return Bits(kImm9Shift, kImm9Bits); }
|
| // Sign-extended Imm9Field()
|
| inline int64_t SImm9Field() const {
|
| - return (static_cast<int32_t>(Imm9Field()) << 23) >> 23; }
|
| + return (static_cast<int32_t>(Imm9Field()) << 23) >> 23;
|
| + }
|
|
|
| inline int Imm12Field() const { return Bits(kImm12Shift, kImm12Bits); }
|
| inline int Imm12ShiftField() const {
|
| - return Bits(kImm12ShiftShift, kImm12ShiftBits); }
|
| + return Bits(kImm12ShiftShift, kImm12ShiftBits);
|
| + }
|
|
|
| inline int Imm16Field() const { return Bits(kImm16Shift, kImm16Bits); }
|
| inline int HWField() const { return Bits(kHWShift, kHWBits); }
|
| @@ -943,13 +972,16 @@ class Instr {
|
|
|
| inline int Imm14Field() const { return Bits(kImm14Shift, kImm14Bits); }
|
| inline int64_t SImm14Field() const {
|
| - return (static_cast<int32_t>(Imm14Field()) << 18) >> 18; }
|
| + return (static_cast<int32_t>(Imm14Field()) << 18) >> 18;
|
| + }
|
| inline int Imm19Field() const { return Bits(kImm19Shift, kImm19Bits); }
|
| inline int64_t SImm19Field() const {
|
| - return (static_cast<int32_t>(Imm19Field()) << 13) >> 13; }
|
| + return (static_cast<int32_t>(Imm19Field()) << 13) >> 13;
|
| + }
|
| inline int Imm26Field() const { return Bits(kImm26Shift, kImm26Bits); }
|
| inline int64_t SImm26Field() const {
|
| - return (static_cast<int32_t>(Imm26Field()) << 6) >> 6; }
|
| + return (static_cast<int32_t>(Imm26Field()) << 6) >> 6;
|
| + }
|
|
|
| inline Condition ConditionField() const {
|
| return static_cast<Condition>(Bits(kCondShift, kCondBits));
|
| @@ -966,18 +998,21 @@ class Instr {
|
| return !IsLogicalShiftOp() && (Bit(kAddShiftExtendShift) == 1);
|
| }
|
| inline Shift ShiftTypeField() const {
|
| - return static_cast<Shift>(Bits(kShiftTypeShift, kShiftTypeBits)); }
|
| + return static_cast<Shift>(Bits(kShiftTypeShift, kShiftTypeBits));
|
| + }
|
| inline Extend ExtendTypeField() const {
|
| - return static_cast<Extend>(Bits(kExtendTypeShift, kExtendTypeBits)); }
|
| + return static_cast<Extend>(Bits(kExtendTypeShift, kExtendTypeBits));
|
| + }
|
| inline int ShiftAmountField() const { return Imm6Field(); }
|
| inline int ExtShiftAmountField() const { return Imm3Field(); }
|
|
|
| - // Instruction identification.
|
| - #define IS_OP(op) \
|
| - inline bool Is##op##Op() const { \
|
| - return ((InstructionBits() & op##Mask) == (op##Fixed & op##Mask)); }
|
| +// Instruction identification.
|
| +#define IS_OP(op) \
|
| + inline bool Is##op##Op() const { \
|
| + return ((InstructionBits() & op##Mask) == (op##Fixed & op##Mask)); \
|
| + }
|
| APPLY_OP_LIST(IS_OP)
|
| - #undef IS_OP
|
| +#undef IS_OP
|
|
|
| inline bool HasS() const { return (SField() == 1); }
|
|
|
| @@ -1016,8 +1051,7 @@ class Instr {
|
| // Add/sub (immediate).
|
| // Add/sub (extended).
|
| // Otherwise, r31 is ZR.
|
| - if (IsLoadStoreOp() ||
|
| - IsAddSubImmOp() ||
|
| + if (IsLoadStoreOp() || IsAddSubImmOp() ||
|
| (IsAddSubShiftExtOp() && IsExtend())) {
|
| return R31IsSP;
|
| }
|
| @@ -1028,8 +1062,7 @@ class Instr {
|
| // indicate a failure case. Specifically, where the constraints on imm_s are
|
| // not met.
|
| uint64_t ImmLogical() {
|
| - const uint8_t reg_size =
|
| - SFField() == 1 ? kXRegSizeInBits : kWRegSizeInBits;
|
| + const uint8_t reg_size = SFField() == 1 ? kXRegSizeInBits : kWRegSizeInBits;
|
| const int64_t n = NField();
|
| const int64_t imm_s = ImmSField();
|
| const int64_t imm_r = ImmRField();
|
| @@ -1067,9 +1100,8 @@ class Instr {
|
| return 0;
|
| }
|
| uint64_t bits = (1UL << ((imm_s & mask) + 1)) - 1;
|
| - return RepeatBitsAcrossReg(reg_size,
|
| - RotateRight(bits, imm_r & mask, width),
|
| - width);
|
| + return RepeatBitsAcrossReg(
|
| + reg_size, RotateRight(bits, imm_r & mask, width), width);
|
| }
|
| }
|
| }
|
| @@ -1078,16 +1110,11 @@ class Instr {
|
| }
|
|
|
| static int64_t VFPExpandImm(uint8_t imm8) {
|
| - const int64_t sign =
|
| - static_cast<int64_t>((imm8 & 0x80) >> 7) << 63;
|
| - const int64_t hi_exp =
|
| - static_cast<int64_t>(!((imm8 & 0x40) >> 6)) << 62;
|
| - const int64_t mid_exp =
|
| - (((imm8 & 0x40) >> 6) == 0) ? 0 : (0xffLL << 54);
|
| - const int64_t low_exp =
|
| - static_cast<int64_t>((imm8 & 0x30) >> 4) << 52;
|
| - const int64_t frac =
|
| - static_cast<int64_t>(imm8 & 0x0f) << 48;
|
| + const int64_t sign = static_cast<int64_t>((imm8 & 0x80) >> 7) << 63;
|
| + const int64_t hi_exp = static_cast<int64_t>(!((imm8 & 0x40) >> 6)) << 62;
|
| + const int64_t mid_exp = (((imm8 & 0x40) >> 6) == 0) ? 0 : (0xffLL << 54);
|
| + const int64_t low_exp = static_cast<int64_t>((imm8 & 0x30) >> 4) << 52;
|
| + const int64_t frac = static_cast<int64_t>(imm8 & 0x0f) << 48;
|
| return sign | hi_exp | mid_exp | low_exp | frac;
|
| }
|
|
|
|
|