summaryrefslogtreecommitdiff
path: root/deps/v8/src/s390/assembler-s390.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/s390/assembler-s390.h')
-rw-r--r--deps/v8/src/s390/assembler-s390.h48
1 files changed, 28 insertions, 20 deletions
diff --git a/deps/v8/src/s390/assembler-s390.h b/deps/v8/src/s390/assembler-s390.h
index 0b9fa38539..ffe0ac4621 100644
--- a/deps/v8/src/s390/assembler-s390.h
+++ b/deps/v8/src/s390/assembler-s390.h
@@ -90,6 +90,9 @@ namespace internal {
V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \
V(d8) V(d9) V(d10) V(d11) V(d12) V(d13) V(d14) V(d15)
+#define FLOAT_REGISTERS DOUBLE_REGISTERS
+#define SIMD128_REGISTERS DOUBLE_REGISTERS
+
#define ALLOCATABLE_DOUBLE_REGISTERS(V) \
V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \
V(d8) V(d9) V(d10) V(d11) V(d12) V(d15) V(d0)
@@ -143,8 +146,6 @@ struct Register {
return r;
}
- const char* ToString();
- bool IsAllocatable() const;
bool is_valid() const { return 0 <= reg_code && reg_code < kNumRegisters; }
bool is(Register reg) const { return reg_code == reg.reg_code; }
int code() const {
@@ -185,6 +186,8 @@ const Register kLithiumScratch = r1; // lithium scratch.
const Register kRootRegister = r10; // Roots array pointer.
const Register cp = r13; // JavaScript context pointer.
+static const bool kSimpleFPAliasing = true;
+
// Double word FP register.
struct DoubleRegister {
enum Code {
@@ -198,8 +201,6 @@ struct DoubleRegister {
static const int kNumRegisters = Code::kAfterLast;
static const int kMaxNumRegisters = kNumRegisters;
- const char* ToString();
- bool IsAllocatable() const;
bool is_valid() const { return 0 <= reg_code && reg_code < kNumRegisters; }
bool is(DoubleRegister reg) const { return reg_code == reg.reg_code; }
@@ -221,7 +222,10 @@ struct DoubleRegister {
int reg_code;
};
-typedef DoubleRegister DoubleRegister;
+typedef DoubleRegister FloatRegister;
+
+// TODO(john.yan) Define SIMD registers.
+typedef DoubleRegister Simd128Register;
#define DECLARE_REGISTER(R) \
const DoubleRegister R = {DoubleRegister::kCode_##R};
@@ -265,9 +269,6 @@ const CRegister cr5 = {5};
const CRegister cr6 = {6};
const CRegister cr7 = {7};
-// TODO(john.yan) Define SIMD registers.
-typedef DoubleRegister Simd128Register;
-
// -----------------------------------------------------------------------------
// Machine instruction Operands
@@ -546,7 +547,6 @@ class Assembler : public AssemblerBase {
// Helper for unconditional branch to Label with update to save register
void b(Register r, Label* l) {
- positions_recorder()->WriteRecordedPositions();
int32_t halfwords = branch_offset(l) / 2;
brasl(r, Operand(halfwords));
}
@@ -607,7 +607,7 @@ class Assembler : public AssemblerBase {
void breakpoint(bool do_print) {
if (do_print) {
- printf("DebugBreak is inserted to %p\n", pc_);
+ PrintF("DebugBreak is inserted to %p\n", static_cast<void*>(pc_));
}
#if V8_HOST_ARCH_64_BIT
int64_t value = reinterpret_cast<uint64_t>(&v8::base::OS::DebugBreak);
@@ -765,7 +765,6 @@ class Assembler : public AssemblerBase {
RRE_FORM(cdr);
RXE_FORM(cdb);
RXE_FORM(ceb);
- RRE_FORM(cefbr);
RXE_FORM(ddb);
RRE_FORM(ddbr);
SS1_FORM(ed);
@@ -779,6 +778,7 @@ class Assembler : public AssemblerBase {
RI1_FORM(iihh);
RI1_FORM(iihl);
RIL1_FORM(iilf);
+ RIL1_FORM(lgfi);
RI1_FORM(iilh);
RI1_FORM(iill);
RRE_FORM(lcgr);
@@ -791,7 +791,10 @@ class Assembler : public AssemblerBase {
RR_FORM(lnr);
RSY1_FORM(loc);
RXY_FORM(lrv);
+ RRE_FORM(lrvr);
+ RRE_FORM(lrvgr);
RXY_FORM(lrvh);
+ RXY_FORM(lrvg);
RXE_FORM(mdb);
RRE_FORM(mdbr);
SS4_FORM(mvck);
@@ -817,6 +820,8 @@ class Assembler : public AssemblerBase {
RX_FORM(ste);
RXY_FORM(stey);
RXY_FORM(strv);
+ RXY_FORM(strvh);
+ RXY_FORM(strvg);
RI1_FORM(tmll);
SS1_FORM(tr);
S_FORM(ts);
@@ -871,6 +876,12 @@ class Assembler : public AssemblerBase {
void lmy(Register r1, Register r2, const MemOperand& src);
void lmg(Register r1, Register r2, const MemOperand& src);
+ // Load On Condition Instructions
+ void locr(Condition m3, Register r1, Register r2);
+ void locgr(Condition m3, Register r1, Register r2);
+ void loc(Condition m3, Register r1, const MemOperand& src);
+ void locg(Condition m3, Register r1, const MemOperand& src);
+
// Store Instructions
void st(Register r, const MemOperand& src);
void stc(Register r, const MemOperand& src);
@@ -1044,6 +1055,7 @@ class Assembler : public AssemblerBase {
// 32-bit Multiply Instructions
void m(Register r1, const MemOperand& opnd);
+ void mfy(Register r1, const MemOperand& opnd);
void mr_z(Register r1, Register r2);
void ml(Register r1, const MemOperand& opnd);
void mlr(Register r1, Register r2);
@@ -1144,7 +1156,7 @@ class Assembler : public AssemblerBase {
void cegbr(DoubleRegister fltReg, Register fixReg);
void cdgbr(DoubleRegister fltReg, Register fixReg);
void cfebr(Condition m3, Register fixReg, DoubleRegister fltReg);
- void cefbr(DoubleRegister fltReg, Register fixReg);
+ void cefbr(Condition m3, DoubleRegister fltReg, Register fixReg);
// Floating Point Compare Instructions
void cebr(DoubleRegister r1, DoubleRegister r2);
@@ -1171,6 +1183,7 @@ class Assembler : public AssemblerBase {
void sqdb(DoubleRegister r1, const MemOperand& opnd);
void sqdbr(DoubleRegister r1, DoubleRegister r2);
void lcdbr(DoubleRegister r1, DoubleRegister r2);
+ void lcebr(DoubleRegister r1, DoubleRegister r2);
void ldeb(DoubleRegister r1, const MemOperand& opnd);
enum FIDBRA_MASK3 {
@@ -1241,7 +1254,7 @@ class Assembler : public AssemblerBase {
// Record a deoptimization reason that can be used by a log or cpu profiler.
// Use --trace-deopt to enable.
- void RecordDeoptReason(const int reason, int raw_position);
+ void RecordDeoptReason(DeoptimizeReason reason, int raw_position, int id);
// Writes a single byte or word of data in the code stream. Used
// for inline tables, e.g., jump-tables.
@@ -1250,10 +1263,6 @@ class Assembler : public AssemblerBase {
void dq(uint64_t data);
void dp(uintptr_t data);
- AssemblerPositionsRecorder* positions_recorder() {
- return &positions_recorder_;
- }
-
void PatchConstantPoolAccessInstruction(int pc_offset, int offset,
ConstantPoolEntry::Access access,
ConstantPoolEntry::Type type) {
@@ -1416,6 +1425,8 @@ class Assembler : public AssemblerBase {
inline void rxy_form(Opcode op, Register r1, Register x2, Register b2,
Disp d2);
+ inline void rxy_form(Opcode op, Register r1, Condition m3, Register b2,
+ Disp d2);
inline void rxy_form(Opcode op, DoubleRegister r1, Register x2, Register b2,
Disp d2);
@@ -1449,9 +1460,6 @@ class Assembler : public AssemblerBase {
friend class CodePatcher;
List<Handle<Code> > code_targets_;
-
- AssemblerPositionsRecorder positions_recorder_;
- friend class AssemblerPositionsRecorder;
friend class EnsureSpace;
};