| Index: src/mips/constants-mips.cc
|
| diff --git a/src/mips/constants-mips.cc b/src/mips/constants-mips.cc
|
| index 49502bdec71484ae3149c0df36d3274818b7285c..16e49c9c8281b665b988543fcb6674c51c0d15d1 100644
|
| --- a/src/mips/constants-mips.cc
|
| +++ b/src/mips/constants-mips.cc
|
| @@ -31,10 +31,8 @@
|
|
|
| #include "constants-mips.h"
|
|
|
| -namespace assembler {
|
| -namespace mips {
|
| -
|
| -namespace v8i = v8::internal;
|
| +namespace v8 {
|
| +namespace internal {
|
|
|
|
|
| // -----------------------------------------------------------------------------
|
| @@ -102,20 +100,20 @@ int Registers::Number(const char* name) {
|
| }
|
|
|
|
|
| -const char* FPURegister::names_[kNumFPURegister] = {
|
| +const char* FPURegisters::names_[kNumFPURegisters] = {
|
| "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "f11",
|
| "f12", "f13", "f14", "f15", "f16", "f17", "f18", "f19", "f20", "f21",
|
| "f22", "f23", "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"
|
| };
|
|
|
| // List of alias names which can be used when referring to MIPS registers.
|
| -const FPURegister::RegisterAlias FPURegister::aliases_[] = {
|
| +const FPURegisters::RegisterAlias FPURegisters::aliases_[] = {
|
| {kInvalidRegister, NULL}
|
| };
|
|
|
| -const char* FPURegister::Name(int creg) {
|
| +const char* FPURegisters::Name(int creg) {
|
| const char* result;
|
| - if ((0 <= creg) && (creg < kNumFPURegister)) {
|
| + if ((0 <= creg) && (creg < kNumFPURegisters)) {
|
| result = names_[creg];
|
| } else {
|
| result = "nocreg";
|
| @@ -124,9 +122,9 @@ const char* FPURegister::Name(int creg) {
|
| }
|
|
|
|
|
| -int FPURegister::Number(const char* name) {
|
| +int FPURegisters::Number(const char* name) {
|
| // Look through the canonical names.
|
| - for (int i = 0; i < kNumSimuRegisters; i++) {
|
| + for (int i = 0; i < kNumFPURegisters; i++) {
|
| if (strcmp(names_[i], name) == 0) {
|
| return i;
|
| }
|
| @@ -149,8 +147,8 @@ int FPURegister::Number(const char* name) {
|
| // -----------------------------------------------------------------------------
|
| // Instruction
|
|
|
| -bool Instruction::IsForbiddenInBranchDelay() {
|
| - int op = OpcodeFieldRaw();
|
| +bool Instruction::IsForbiddenInBranchDelay() const {
|
| + const int op = OpcodeFieldRaw();
|
| switch (op) {
|
| case J:
|
| case JAL:
|
| @@ -189,13 +187,18 @@ bool Instruction::IsForbiddenInBranchDelay() {
|
| }
|
|
|
|
|
| -bool Instruction::IsLinkingInstruction() {
|
| - int op = OpcodeFieldRaw();
|
| +bool Instruction::IsLinkingInstruction() const {
|
| + const int op = OpcodeFieldRaw();
|
| switch (op) {
|
| case JAL:
|
| - case BGEZAL:
|
| - case BLTZAL:
|
| - return true;
|
| + case REGIMM:
|
| + switch (RtFieldRaw()) {
|
| + case BGEZAL:
|
| + case BLTZAL:
|
| + return true;
|
| + default:
|
| + return false;
|
| + };
|
| case SPECIAL:
|
| switch (FunctionFieldRaw()) {
|
| case JALR:
|
| @@ -209,7 +212,7 @@ bool Instruction::IsLinkingInstruction() {
|
| }
|
|
|
|
|
| -bool Instruction::IsTrap() {
|
| +bool Instruction::IsTrap() const {
|
| if (OpcodeFieldRaw() != SPECIAL) {
|
| return false;
|
| } else {
|
| @@ -264,6 +267,9 @@ Instruction::Type Instruction::InstructionType() const {
|
| case TLTU:
|
| case TEQ:
|
| case TNE:
|
| + case MOVZ:
|
| + case MOVN:
|
| + case MOVCI:
|
| return kRegisterType;
|
| default:
|
| UNREACHABLE();
|
| @@ -272,13 +278,23 @@ Instruction::Type Instruction::InstructionType() const {
|
| case SPECIAL2:
|
| switch (FunctionFieldRaw()) {
|
| case MUL:
|
| + case CLZ:
|
| return kRegisterType;
|
| default:
|
| UNREACHABLE();
|
| };
|
| break;
|
| - case COP1: // Coprocessor instructions
|
| + case SPECIAL3:
|
| switch (FunctionFieldRaw()) {
|
| + case INS:
|
| + case EXT:
|
| + return kRegisterType;
|
| + default:
|
| + UNREACHABLE();
|
| + };
|
| + break;
|
| + case COP1: // Coprocessor instructions
|
| + switch (RsFieldRawNoAssert()) {
|
| case BC1: // branch on coprocessor condition
|
| return kImmediateType;
|
| default:
|
| @@ -304,10 +320,17 @@ Instruction::Type Instruction::InstructionType() const {
|
| case BLEZL:
|
| case BGTZL:
|
| case LB:
|
| + case LH:
|
| + case LWL:
|
| case LW:
|
| case LBU:
|
| + case LHU:
|
| + case LWR:
|
| case SB:
|
| + case SH:
|
| + case SWL:
|
| case SW:
|
| + case SWR:
|
| case LWC1:
|
| case LDC1:
|
| case SWC1:
|
| @@ -323,6 +346,7 @@ Instruction::Type Instruction::InstructionType() const {
|
| return kUnsupported;
|
| }
|
|
|
| -} } // namespace assembler::mips
|
| +
|
| +} } // namespace v8::internal
|
|
|
| #endif // V8_TARGET_ARCH_MIPS
|
|
|