Commit 50d53886 authored by Ng Zhi An's avatar Ng Zhi An Committed by Commit Bot

[arm] Remove static Bit helpers on Instr

These are almost unused, except for 1 case of Bit, which is probably
incorrect. These static helpers can cause subtle error, e.g.
instr->Bit(1, 3) does not get you bits 1 to 3, but rather calls the
static method Bit(Instr, int).

An example of this bug was fixed in https://crrev.com/c/2157799.

Change-Id: I98c4464c4315af48b9d36472ffd6f16aa74aa18b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2158824Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#67315}
parent 06559f42
...@@ -459,23 +459,6 @@ class Instruction { ...@@ -459,23 +459,6 @@ class Instruction {
return InstructionBits() & (((2 << (hi - lo)) - 1) << lo); return InstructionBits() & (((2 << (hi - lo)) - 1) << lo);
} }
// Static support.
// Extract a single bit from the instruction bits and return it as bit 0 in
// the result.
static inline int Bit(Instr instr, int nr) { return (instr >> nr) & 1; }
// Extract a bit field <hi:lo> from the instruction bits and return it in the
// least-significant bits of the result.
static inline int Bits(Instr instr, int hi, int lo) {
return (instr >> lo) & ((2 << (hi - lo)) - 1);
}
// Read a bit field <hi:lo>, leaving its position unchanged in the result.
static inline int BitField(Instr instr, int hi, int lo) {
return instr & (((2 << (hi - lo)) - 1) << lo);
}
// Accessors for the different named fields used in the ARM encoding. // Accessors for the different named fields used in the ARM encoding.
// The naming of these accessor corresponds to figure A3-1. // The naming of these accessor corresponds to figure A3-1.
// //
......
...@@ -4589,7 +4589,7 @@ void Simulator::DecodeSpecialCondition(Instruction* instr) { ...@@ -4589,7 +4589,7 @@ void Simulator::DecodeSpecialCondition(Instruction* instr) {
case 0: { case 0: {
// vmov.i32 Qd, #<imm> // vmov.i32 Qd, #<imm>
int vd = instr->VFPDRegValue(kSimd128Precision); int vd = instr->VFPDRegValue(kSimd128Precision);
uint64_t imm = instr->Bit(24, 24) << 7; // i uint64_t imm = instr->Bit(24) << 7; // i
imm |= instr->Bits(18, 16) << 4; // imm3 imm |= instr->Bits(18, 16) << 4; // imm3
imm |= instr->Bits(3, 0); // imm4 imm |= instr->Bits(3, 0); // imm4
imm |= imm << 32; imm |= imm << 32;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment