// Copyright 2015 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#if V8_TARGET_ARCH_S390

#include "src/s390/constants-s390.h"

namespace v8 {
namespace internal {

Instruction::OpcodeFormatType Instruction::OpcodeFormatTable[] = {
    // Based on Figure B-3 in z/Architecture Principles of
    // Operation.
    TWO_BYTE_OPCODE,           // 0x00
    TWO_BYTE_OPCODE,           // 0x01
    TWO_BYTE_DISJOINT_OPCODE,  // 0x02
    TWO_BYTE_DISJOINT_OPCODE,  // 0x03
    ONE_BYTE_OPCODE,           // 0x04
    ONE_BYTE_OPCODE,           // 0x05
    ONE_BYTE_OPCODE,           // 0x06
    ONE_BYTE_OPCODE,           // 0x07
    ONE_BYTE_OPCODE,           // 0x08
    ONE_BYTE_OPCODE,           // 0x09
    ONE_BYTE_OPCODE,           // 0x0A
    ONE_BYTE_OPCODE,           // 0x0B
    ONE_BYTE_OPCODE,           // 0x0C
    ONE_BYTE_OPCODE,           // 0x0D
    ONE_BYTE_OPCODE,           // 0x0E
    ONE_BYTE_OPCODE,           // 0x0F
    ONE_BYTE_OPCODE,           // 0x10
    ONE_BYTE_OPCODE,           // 0x11
    ONE_BYTE_OPCODE,           // 0x12
    ONE_BYTE_OPCODE,           // 0x13
    ONE_BYTE_OPCODE,           // 0x14
    ONE_BYTE_OPCODE,           // 0x15
    ONE_BYTE_OPCODE,           // 0x16
    ONE_BYTE_OPCODE,           // 0x17
    ONE_BYTE_OPCODE,           // 0x18
    ONE_BYTE_OPCODE,           // 0x19
    ONE_BYTE_OPCODE,           // 0x1A
    ONE_BYTE_OPCODE,           // 0x1B
    ONE_BYTE_OPCODE,           // 0x1C
    ONE_BYTE_OPCODE,           // 0x1D
    ONE_BYTE_OPCODE,           // 0x1E
    ONE_BYTE_OPCODE,           // 0x1F
    ONE_BYTE_OPCODE,           // 0x20
    ONE_BYTE_OPCODE,           // 0x21
    ONE_BYTE_OPCODE,           // 0x22
    ONE_BYTE_OPCODE,           // 0x23
    ONE_BYTE_OPCODE,           // 0x24
    ONE_BYTE_OPCODE,           // 0x25
    ONE_BYTE_OPCODE,           // 0x26
    ONE_BYTE_OPCODE,           // 0x27
    ONE_BYTE_OPCODE,           // 0x28
    ONE_BYTE_OPCODE,           // 0x29
    ONE_BYTE_OPCODE,           // 0x2A
    ONE_BYTE_OPCODE,           // 0x2B
    ONE_BYTE_OPCODE,           // 0x2C
    ONE_BYTE_OPCODE,           // 0x2D
    ONE_BYTE_OPCODE,           // 0x2E
    ONE_BYTE_OPCODE,           // 0x2F
    ONE_BYTE_OPCODE,           // 0x30
    ONE_BYTE_OPCODE,           // 0x31
    ONE_BYTE_OPCODE,           // 0x32
    ONE_BYTE_OPCODE,           // 0x33
    ONE_BYTE_OPCODE,           // 0x34
    ONE_BYTE_OPCODE,           // 0x35
    ONE_BYTE_OPCODE,           // 0x36
    ONE_BYTE_OPCODE,           // 0x37
    ONE_BYTE_OPCODE,           // 0x38
    ONE_BYTE_OPCODE,           // 0x39
    ONE_BYTE_OPCODE,           // 0x3A
    ONE_BYTE_OPCODE,           // 0x3B
    ONE_BYTE_OPCODE,           // 0x3C
    ONE_BYTE_OPCODE,           // 0x3D
    ONE_BYTE_OPCODE,           // 0x3E
    ONE_BYTE_OPCODE,           // 0x3F
    ONE_BYTE_OPCODE,           // 0x40
    ONE_BYTE_OPCODE,           // 0x41
    ONE_BYTE_OPCODE,           // 0x42
    ONE_BYTE_OPCODE,           // 0x43
    ONE_BYTE_OPCODE,           // 0x44
    ONE_BYTE_OPCODE,           // 0x45
    ONE_BYTE_OPCODE,           // 0x46
    ONE_BYTE_OPCODE,           // 0x47
    ONE_BYTE_OPCODE,           // 0x48
    ONE_BYTE_OPCODE,           // 0x49
    ONE_BYTE_OPCODE,           // 0x4A
    ONE_BYTE_OPCODE,           // 0x4B
    ONE_BYTE_OPCODE,           // 0x4C
    ONE_BYTE_OPCODE,           // 0x4D
    ONE_BYTE_OPCODE,           // 0x4E
    ONE_BYTE_OPCODE,           // 0x4F
    ONE_BYTE_OPCODE,           // 0x50
    ONE_BYTE_OPCODE,           // 0x51
    ONE_BYTE_OPCODE,           // 0x52
    ONE_BYTE_OPCODE,           // 0x53
    ONE_BYTE_OPCODE,           // 0x54
    ONE_BYTE_OPCODE,           // 0x55
    ONE_BYTE_OPCODE,           // 0x56
    ONE_BYTE_OPCODE,           // 0x57
    ONE_BYTE_OPCODE,           // 0x58
    ONE_BYTE_OPCODE,           // 0x59
    ONE_BYTE_OPCODE,           // 0x5A
    ONE_BYTE_OPCODE,           // 0x5B
    ONE_BYTE_OPCODE,           // 0x5C
    ONE_BYTE_OPCODE,           // 0x5D
    ONE_BYTE_OPCODE,           // 0x5E
    ONE_BYTE_OPCODE,           // 0x5F
    ONE_BYTE_OPCODE,           // 0x60
    ONE_BYTE_OPCODE,           // 0x61
    ONE_BYTE_OPCODE,           // 0x62
    ONE_BYTE_OPCODE,           // 0x63
    ONE_BYTE_OPCODE,           // 0x64
    ONE_BYTE_OPCODE,           // 0x65
    ONE_BYTE_OPCODE,           // 0x66
    ONE_BYTE_OPCODE,           // 0x67
    ONE_BYTE_OPCODE,           // 0x68
    ONE_BYTE_OPCODE,           // 0x69
    ONE_BYTE_OPCODE,           // 0x6A
    ONE_BYTE_OPCODE,           // 0x6B
    ONE_BYTE_OPCODE,           // 0x6C
    ONE_BYTE_OPCODE,           // 0x6D
    ONE_BYTE_OPCODE,           // 0x6E
    ONE_BYTE_OPCODE,           // 0x6F
    ONE_BYTE_OPCODE,           // 0x70
    ONE_BYTE_OPCODE,           // 0x71
    ONE_BYTE_OPCODE,           // 0x72
    ONE_BYTE_OPCODE,           // 0x73
    ONE_BYTE_OPCODE,           // 0x74
    ONE_BYTE_OPCODE,           // 0x75
    ONE_BYTE_OPCODE,           // 0x76
    ONE_BYTE_OPCODE,           // 0x77
    ONE_BYTE_OPCODE,           // 0x78
    ONE_BYTE_OPCODE,           // 0x79
    ONE_BYTE_OPCODE,           // 0x7A
    ONE_BYTE_OPCODE,           // 0x7B
    ONE_BYTE_OPCODE,           // 0x7C
    ONE_BYTE_OPCODE,           // 0x7D
    ONE_BYTE_OPCODE,           // 0x7E
    ONE_BYTE_OPCODE,           // 0x7F
    ONE_BYTE_OPCODE,           // 0x80
    ONE_BYTE_OPCODE,           // 0x81
    ONE_BYTE_OPCODE,           // 0x82
    ONE_BYTE_OPCODE,           // 0x83
    ONE_BYTE_OPCODE,           // 0x84
    ONE_BYTE_OPCODE,           // 0x85
    ONE_BYTE_OPCODE,           // 0x86
    ONE_BYTE_OPCODE,           // 0x87
    ONE_BYTE_OPCODE,           // 0x88
    ONE_BYTE_OPCODE,           // 0x89
    ONE_BYTE_OPCODE,           // 0x8A
    ONE_BYTE_OPCODE,           // 0x8B
    ONE_BYTE_OPCODE,           // 0x8C
    ONE_BYTE_OPCODE,           // 0x8D
    ONE_BYTE_OPCODE,           // 0x8E
    ONE_BYTE_OPCODE,           // 0x8F
    ONE_BYTE_OPCODE,           // 0x90
    ONE_BYTE_OPCODE,           // 0x91
    ONE_BYTE_OPCODE,           // 0x92
    ONE_BYTE_OPCODE,           // 0x93
    ONE_BYTE_OPCODE,           // 0x94
    ONE_BYTE_OPCODE,           // 0x95
    ONE_BYTE_OPCODE,           // 0x96
    ONE_BYTE_OPCODE,           // 0x97
    ONE_BYTE_OPCODE,           // 0x98
    ONE_BYTE_OPCODE,           // 0x99
    ONE_BYTE_OPCODE,           // 0x9A
    ONE_BYTE_OPCODE,           // 0x9B
    TWO_BYTE_DISJOINT_OPCODE,  // 0x9C
    TWO_BYTE_DISJOINT_OPCODE,  // 0x9D
    TWO_BYTE_DISJOINT_OPCODE,  // 0x9E
    TWO_BYTE_DISJOINT_OPCODE,  // 0x9F
    TWO_BYTE_DISJOINT_OPCODE,  // 0xA0
    TWO_BYTE_DISJOINT_OPCODE,  // 0xA1
    TWO_BYTE_DISJOINT_OPCODE,  // 0xA2
    TWO_BYTE_DISJOINT_OPCODE,  // 0xA3
    TWO_BYTE_DISJOINT_OPCODE,  // 0xA4
    THREE_NIBBLE_OPCODE,       // 0xA5
    TWO_BYTE_DISJOINT_OPCODE,  // 0xA6
    THREE_NIBBLE_OPCODE,       // 0xA7
    ONE_BYTE_OPCODE,           // 0xA8
    ONE_BYTE_OPCODE,           // 0xA9
    ONE_BYTE_OPCODE,           // 0xAA
    ONE_BYTE_OPCODE,           // 0xAB
    ONE_BYTE_OPCODE,           // 0xAC
    ONE_BYTE_OPCODE,           // 0xAD
    ONE_BYTE_OPCODE,           // 0xAE
    ONE_BYTE_OPCODE,           // 0xAF
    ONE_BYTE_OPCODE,           // 0xB0
    ONE_BYTE_OPCODE,           // 0xB1
    TWO_BYTE_OPCODE,           // 0xB2
    TWO_BYTE_OPCODE,           // 0xB3
    TWO_BYTE_DISJOINT_OPCODE,  // 0xB4
    TWO_BYTE_DISJOINT_OPCODE,  // 0xB5
    TWO_BYTE_DISJOINT_OPCODE,  // 0xB6
    TWO_BYTE_DISJOINT_OPCODE,  // 0xB7
    TWO_BYTE_DISJOINT_OPCODE,  // 0xB8
    TWO_BYTE_OPCODE,           // 0xB9
    ONE_BYTE_OPCODE,           // 0xBA
    ONE_BYTE_OPCODE,           // 0xBB
    ONE_BYTE_OPCODE,           // 0xBC
    ONE_BYTE_OPCODE,           // 0xBD
    ONE_BYTE_OPCODE,           // 0xBE
    ONE_BYTE_OPCODE,           // 0xBF
    THREE_NIBBLE_OPCODE,       // 0xC0
    THREE_NIBBLE_OPCODE,       // 0xC1
    THREE_NIBBLE_OPCODE,       // 0xC2
    THREE_NIBBLE_OPCODE,       // 0xC3
    THREE_NIBBLE_OPCODE,       // 0xC4
    THREE_NIBBLE_OPCODE,       // 0xC5
    THREE_NIBBLE_OPCODE,       // 0xC6
    ONE_BYTE_OPCODE,           // 0xC7
    THREE_NIBBLE_OPCODE,       // 0xC8
    THREE_NIBBLE_OPCODE,       // 0xC9
    THREE_NIBBLE_OPCODE,       // 0xCA
    THREE_NIBBLE_OPCODE,       // 0xCB
    THREE_NIBBLE_OPCODE,       // 0xCC
    TWO_BYTE_DISJOINT_OPCODE,  // 0xCD
    TWO_BYTE_DISJOINT_OPCODE,  // 0xCE
    TWO_BYTE_DISJOINT_OPCODE,  // 0xCF
    ONE_BYTE_OPCODE,           // 0xD0
    ONE_BYTE_OPCODE,           // 0xD1
    ONE_BYTE_OPCODE,           // 0xD2
    ONE_BYTE_OPCODE,           // 0xD3
    ONE_BYTE_OPCODE,           // 0xD4
    ONE_BYTE_OPCODE,           // 0xD5
    ONE_BYTE_OPCODE,           // 0xD6
    ONE_BYTE_OPCODE,           // 0xD7
    ONE_BYTE_OPCODE,           // 0xD8
    ONE_BYTE_OPCODE,           // 0xD9
    ONE_BYTE_OPCODE,           // 0xDA
    ONE_BYTE_OPCODE,           // 0xDB
    ONE_BYTE_OPCODE,           // 0xDC
    ONE_BYTE_OPCODE,           // 0xDD
    ONE_BYTE_OPCODE,           // 0xDE
    ONE_BYTE_OPCODE,           // 0xDF
    ONE_BYTE_OPCODE,           // 0xE0
    ONE_BYTE_OPCODE,           // 0xE1
    ONE_BYTE_OPCODE,           // 0xE2
    TWO_BYTE_DISJOINT_OPCODE,  // 0xE3
    TWO_BYTE_DISJOINT_OPCODE,  // 0xE4
    TWO_BYTE_OPCODE,           // 0xE5
    TWO_BYTE_DISJOINT_OPCODE,  // 0xE6
    TWO_BYTE_DISJOINT_OPCODE,  // 0xE7
    ONE_BYTE_OPCODE,           // 0xE8
    ONE_BYTE_OPCODE,           // 0xE9
    ONE_BYTE_OPCODE,           // 0xEA
    TWO_BYTE_DISJOINT_OPCODE,  // 0xEB
    TWO_BYTE_DISJOINT_OPCODE,  // 0xEC
    TWO_BYTE_DISJOINT_OPCODE,  // 0xED
    ONE_BYTE_OPCODE,           // 0xEE
    ONE_BYTE_OPCODE,           // 0xEF
    ONE_BYTE_OPCODE,           // 0xF0
    ONE_BYTE_OPCODE,           // 0xF1
    ONE_BYTE_OPCODE,           // 0xF2
    ONE_BYTE_OPCODE,           // 0xF3
    ONE_BYTE_OPCODE,           // 0xF4
    ONE_BYTE_OPCODE,           // 0xF5
    ONE_BYTE_OPCODE,           // 0xF6
    ONE_BYTE_OPCODE,           // 0xF7
    ONE_BYTE_OPCODE,           // 0xF8
    ONE_BYTE_OPCODE,           // 0xF9
    ONE_BYTE_OPCODE,           // 0xFA
    ONE_BYTE_OPCODE,           // 0xFB
    ONE_BYTE_OPCODE,           // 0xFC
    ONE_BYTE_OPCODE,           // 0xFD
    TWO_BYTE_DISJOINT_OPCODE,  // 0xFE
    TWO_BYTE_DISJOINT_OPCODE,  // 0xFF
};

// These register names are defined in a way to match the native disassembler
// formatting. See for example the command "objdump -d <binary file>".
const char* Registers::names_[kNumRegisters] = {
    "r0", "r1", "r2",  "r3", "r4", "r5",  "r6",  "r7",
    "r8", "r9", "r10", "fp", "ip", "r13", "r14", "sp"};

const char* DoubleRegisters::names_[kNumDoubleRegisters] = {
    "f0", "f1", "f2",  "f3",  "f4",  "f5",  "f6",  "f7",
    "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15"};

int DoubleRegisters::Number(const char* name) {
  for (int i = 0; i < kNumDoubleRegisters; i++) {
    if (strcmp(names_[i], name) == 0) {
      return i;
    }
  }

  // No register with the requested name found.
  return kNoRegister;
}

int Registers::Number(const char* name) {
  // Look through the canonical names.
  for (int i = 0; i < kNumRegisters; i++) {
    if (strcmp(names_[i], name) == 0) {
      return i;
    }
  }

  // No register with the requested name found.
  return kNoRegister;
}

}  // namespace internal
}  // namespace v8

#endif  // V8_TARGET_ARCH_S390
